| | |
| | | package com.fzzy.group.manager; |
| | | |
| | | import com.fzzy.common.manager.CommonManager; |
| | | import com.fzzy.igds.constant.Constant; |
| | | import com.fzzy.igds.data.ChartPie; |
| | | import com.fzzy.igds.data.GisData; |
| | | import com.fzzy.igds.domain.Depot; |
| | | import com.fzzy.igds.domain.Dept; |
| | | import com.fzzy.igds.domain.DicArea; |
| | | import com.fzzy.igds.service.CoreDeptService; |
| | | import com.fzzy.igds.service.DepotService; |
| | | import com.fzzy.igds.service.DicAreaService; |
| | | import com.fzzy.igds.constant.FoodVariety; |
| | | import com.fzzy.igds.constant.RespCodeEnum; |
| | | import com.fzzy.igds.data.*; |
| | | import com.fzzy.igds.domain.*; |
| | | import com.fzzy.igds.service.*; |
| | | import com.fzzy.igds.utils.ContextUtil; |
| | | import com.fzzy.igds.utils.DateUtil; |
| | | import com.fzzy.igds.utils.NumberUtil; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.text.DecimalFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @Description |
| | |
| | | public class GroupManager { |
| | | |
| | | @Resource |
| | | private CommonManager commonManager; |
| | | @Resource |
| | | private DicAreaService dicAreaService; |
| | | @Resource |
| | | private CoreDeptService deptService; |
| | | @Resource |
| | | private DepotService depotService; |
| | | @Resource |
| | | private CoreCompanyService coreCompanyService; |
| | | @Resource |
| | | private InoutRecordService inoutRecordService; |
| | | @Resource |
| | | private EventInfoService eventInfoService; |
| | | @Resource |
| | | private SnapRecordService snapRecordService; |
| | | @Resource |
| | | private SecCameraService cameraService; |
| | | @Resource |
| | | private BankService bankService; |
| | | @Resource |
| | | private PledgeContractService pledgeContractService; |
| | | @Resource |
| | | private PledgeContractDepotService pledgeContractDepotService; |
| | | @Resource |
| | | private GatewaySerService gatewaySerService; |
| | | |
| | | /** |
| | | * 获取省及下属市州集合 |
| | |
| | | return list; |
| | | } |
| | | |
| | | |
| | | public List<DicArea> getBankAndChildDept(String areaCode) { |
| | | |
| | | DicArea area = dicAreaService.listDicAreaByCode(areaCode); |
| | | if (null == area) { |
| | | return null; |
| | | } |
| | | List<DicArea> areaChildren = new ArrayList<>(); |
| | | |
| | | List<DicArea> list = new ArrayList<>(); |
| | | if (Constant.AREA_TYPE_1.equals(area.getType())) { |
| | | //查询所有的质押合同 |
| | | List<PledgeContract> pledgeContractList = pledgeContractService.listAll(null); |
| | | //查询所有的库区 |
| | | List<Dept> depotList = deptService.listDept(null, ContextUtil.getCompanyId(), null); |
| | | //查询所有的银行 |
| | | List<Bank> bankList = bankService.listAll(null); |
| | | DicArea defaultBank = new DicArea(); |
| | | defaultBank.setCode("-1"); |
| | | defaultBank.setName("无质押银行"); |
| | | defaultBank.setChildren(new ArrayList<>()); |
| | | |
| | | for (Dept dept : depotList) { |
| | | Boolean isPledge = false; |
| | | for (PledgeContract pledgeContract : pledgeContractList) { |
| | | IgdsBaseParam param = new IgdsBaseParam(); |
| | | param.setParentId(pledgeContract.getId()); |
| | | List<PledgeContractDepot> pledgeContractDepots = pledgeContractDepotService.listAll(param); |
| | | if (null == pledgeContractDepots || pledgeContractDepots.isEmpty()) { |
| | | continue; |
| | | } |
| | | //找到pledgeContractDepots中的deptId集合,并去重 |
| | | List<String> deptIdList = pledgeContractDepots.stream().map(PledgeContractDepot::getPledgeDept).distinct().collect(Collectors.toList()); |
| | | if (deptIdList.contains(dept.getId())) { |
| | | //从list中找到当前质押银行的数据 |
| | | DicArea pledgeBank = null; |
| | | int indexBank = -1; |
| | | for (DicArea item : areaChildren) { |
| | | if (pledgeContract.getPledgeBank().equals(item.getCode())) { |
| | | pledgeBank = item; |
| | | indexBank = areaChildren.indexOf(pledgeBank); |
| | | break; |
| | | } |
| | | } |
| | | if (null == pledgeBank) { |
| | | //未找到质押银行数据则新建 |
| | | pledgeBank = new DicArea(); |
| | | pledgeBank.setCode(pledgeContract.getPledgeBank()); |
| | | pledgeBank.setName("质押银行_" + pledgeContract.getPledgeBank()); |
| | | //从银行数据中找到质押银行的信息 |
| | | for (Bank bank : bankList) { |
| | | if (pledgeContract.getPledgeBank().equals(bank.getId())) { |
| | | pledgeBank.setName(bank.getName()); |
| | | } |
| | | } |
| | | //添加质押银行下的库区数据 |
| | | DicArea deptDic = new DicArea(); |
| | | deptDic.setCode(dept.getId()); |
| | | deptDic.setName(dept.getKqmc()); |
| | | |
| | | List<DicArea> children = pledgeBank.getChildren(); |
| | | if (null == children) { |
| | | pledgeBank.setChildren(new ArrayList<>()); |
| | | } |
| | | pledgeBank.getChildren().add(deptDic); |
| | | //新增质押银行数据到list中 |
| | | areaChildren.add(pledgeBank); |
| | | isPledge = true; |
| | | break; |
| | | } else { |
| | | //添加质押银行下的库区数据 |
| | | DicArea deptDic = new DicArea(); |
| | | deptDic.setCode(dept.getId()); |
| | | deptDic.setName(dept.getKqmc()); |
| | | |
| | | List<DicArea> children = pledgeBank.getChildren(); |
| | | if (null == children) { |
| | | pledgeBank.setChildren(new ArrayList<>()); |
| | | } |
| | | pledgeBank.getChildren().add(deptDic); |
| | | //更新list中的质押银行数据 |
| | | areaChildren.set(indexBank, pledgeBank); |
| | | isPledge = true; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | | if (!isPledge) { |
| | | DicArea deptDic = new DicArea(); |
| | | deptDic.setCode(dept.getId()); |
| | | deptDic.setName(dept.getKqmc()); |
| | | |
| | | List<DicArea> children = defaultBank.getChildren(); |
| | | if (null == children) { |
| | | defaultBank.setChildren(new ArrayList<>()); |
| | | } |
| | | defaultBank.getChildren().add(deptDic); |
| | | } |
| | | } |
| | | List<DicArea> defaultBankChildren = defaultBank.getChildren(); |
| | | if (defaultBankChildren.size() > 0) { |
| | | areaChildren.add(defaultBank); |
| | | } |
| | | area.setChildren(areaChildren); |
| | | } |
| | | list.add(area); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 获取组织下所有库区信息 |
| | | * 获取用户下所有库区信息 |
| | | * |
| | | * @return |
| | | */ |
| | | public List<Dept> getDeptList() { |
| | | return deptService.getDeptByUserType(null); |
| | | } |
| | | |
| | | /** |
| | | * 获取库区封装信息 |
| | | * |
| | | * @param companyId |
| | | * @return |
| | | */ |
| | | public List<Dept> getAllDept(String companyId) { |
| | | return deptService.listDept(null, companyId, null); |
| | | public List<GroupDeptData> getDeptData(String companyId) { |
| | | |
| | | List<GroupDeptData> list = new ArrayList<>(); |
| | | GroupDeptData deptData; |
| | | List<Dept> deptList = deptService.getDeptByUserType(null); |
| | | if (null != deptList && !deptList.isEmpty()) { |
| | | List<Depot> depotList; |
| | | for (Dept dept : deptList) { |
| | | deptData = new GroupDeptData(); |
| | | deptData.setDeptId(dept.getId()); |
| | | deptData.setDeptName(dept.getKqmc()); |
| | | deptData.setCode(dept.getXzqhdm()); |
| | | deptData.setCounty(dept.getXzqhmc()); |
| | | deptData.setJd(dept.getJd()); |
| | | deptData.setWd(dept.getWd()); |
| | | |
| | | //统计仓库数 |
| | | depotList = depotService.getCacheDepotList(dept.getCompanyId(), dept.getId()); |
| | | if (null != depotList && !depotList.isEmpty()) { |
| | | for (Depot depot : depotList) { |
| | | deptData.setDepotNumber(deptData.getDepotNumber() + 1); |
| | | |
| | | if (StringUtils.isNotBlank(depot.getPledgeBank())) { |
| | | deptData.setDepotBankNumber(deptData.getDepotBankNumber() + 1); |
| | | } |
| | | |
| | | if (null == depot.getStorageReal()) { |
| | | depot.setStorageReal(0.0); |
| | | } |
| | | deptData.setStorageNum(deptData.getStorageNum() + depot.getStorageReal() / 1000); |
| | | } |
| | | } |
| | | |
| | | //统计出入库数量 |
| | | InoutParam inoutParam = new InoutParam(); |
| | | inoutParam.setDeptId(dept.getId()); |
| | | inoutParam.setCompanyId(companyId); |
| | | inoutParam.setStart(DateUtil.getCurZero(new Date())); |
| | | inoutParam.setEnd(DateUtil.getNextZero(new Date())); |
| | | List<InoutRecord> inoutRecords = inoutRecordService.listInout(inoutParam); |
| | | if (null != inoutRecords && !inoutRecords.isEmpty()) { |
| | | for (InoutRecord inoutRecord : inoutRecords) { |
| | | if (Constant.TYPE_IN.equals(inoutRecord.getType())) { |
| | | deptData.setInNum(deptData.getInNum() + 1); |
| | | } |
| | | if (Constant.TYPE_OUT.equals(inoutRecord.getType())) { |
| | | deptData.setOutNum(deptData.getOutNum() + 1); |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | list.add(deptData); |
| | | } |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取库区封装信息 |
| | | * |
| | | * @param companyId |
| | | * @return |
| | | */ |
| | | public List<GroupDepotData> getDepotData(String companyId) { |
| | | |
| | | List<GroupDepotData> list = new ArrayList<>(); |
| | | GroupDepotData depotData; |
| | | List<Dept> deptList = deptService.getDeptByUserType(null); |
| | | if (null != deptList && !deptList.isEmpty()) { |
| | | List<Depot> depotList; |
| | | for (Dept dept : deptList) { |
| | | //统计仓库数 |
| | | depotList = depotService.getCacheDepotList(dept.getCompanyId(), dept.getId()); |
| | | if (null != depotList && !depotList.isEmpty()) { |
| | | for (Depot depot : depotList) { |
| | | depotData = new GroupDepotData(); |
| | | depotData.setDeptId(dept.getId()); |
| | | depotData.setDeptName(dept.getKqmc()); |
| | | depotData.setCode(dept.getXzqhdm()); |
| | | depotData.setCounty(dept.getXzqhmc()); |
| | | depotData.setDepotId(depot.getId()); |
| | | depotData.setDepotName(depot.getName()); |
| | | if (null == depot.getStorageReal()) { |
| | | depot.setStorageReal(0.0); |
| | | } |
| | | depotData.setStorageNum(depot.getStorageReal() / 1000); |
| | | list.add(depotData); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 获取库区下监控信息 |
| | | * |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public PageResponse<List<Camera>> cameraList(IgdsBaseParam param) { |
| | | |
| | | if (StringUtils.isBlank(param.getDeptId())) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_2000, null); |
| | | } |
| | | |
| | | if (StringUtils.isBlank(param.getCompanyId())) { |
| | | param.setCompanyId(ContextUtil.getCompanyId()); |
| | | } |
| | | |
| | | List<Camera> listCamera = cameraService.getCameraByDeptId(param.getCompanyId(), param.getDeptId()); |
| | | |
| | | return new PageResponse<>(RespCodeEnum.CODE_0000, listCamera); |
| | | } |
| | | |
| | | /** |
| | | * 大屏首页统计信息:企业数、库区数、仓库数、质押仓数、散粮及成品粮数、分品种库存数 |
| | | * |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public PageResponse<GroupIndexData> getGroupIndexData(IgdsBaseParam param) { |
| | | |
| | | GroupIndexData indexData = new GroupIndexData(); |
| | | |
| | | //企业数 |
| | | Integer companyNum = coreCompanyService.getCompanyNum(param.getCompanyId()); |
| | | indexData.setCompanyNum(companyNum); |
| | | |
| | | //库区数 |
| | | List<Dept> deptList = deptService.getDeptByUserType(null); |
| | | if (null != deptList) { |
| | | indexData.setDeptNum(deptList.size()); |
| | | } |
| | | |
| | | ///仓库数及质押仓库数 |
| | | List<Depot> depotList = depotService.getCacheDepotList(param.getCompanyId()); |
| | | if (null != depotList) { |
| | | Double foodSum = 0.0; |
| | | Double packFoodSum = 0.0; |
| | | indexData.setDepotNum(depotList.size()); |
| | | |
| | | //用于统计分品种库存 |
| | | LinkedHashMap<String, Double> varietyMap = new LinkedHashMap<>(); |
| | | for (Depot depot : depotList) { |
| | | if (StringUtils.isNotBlank(depot.getPledgeBank())) { |
| | | indexData.setDepotBankNum(indexData.getDepotBankNum() + 1); |
| | | } |
| | | if (null == depot.getStorageReal()) { |
| | | depot.setStorageReal(0.0); |
| | | } |
| | | if (StringUtils.isNotBlank(depot.getStoreType()) && "2".equals(depot.getStoreType())) { |
| | | packFoodSum += depot.getStorageReal() / 1000; |
| | | } else { |
| | | foodSum += depot.getStorageReal() / 1000; |
| | | } |
| | | |
| | | if (depot.getStorageReal() > 0) { |
| | | if (StringUtils.isBlank(depot.getFoodVariety())) { |
| | | //设置为其他品类 |
| | | depot.setFoodVariety("9999000"); |
| | | } |
| | | |
| | | varietyMap.putIfAbsent(depot.getFoodVariety(), 0.000); |
| | | varietyMap.put(depot.getFoodVariety(), varietyMap.get(depot.getFoodVariety()) + NumberUtil.keepPrecision(depot.getStorageReal() / 1000, 3)); |
| | | } |
| | | } |
| | | |
| | | for (String mapKey : varietyMap.keySet()) { |
| | | if (varietyMap.get(mapKey) <= 0) { |
| | | continue; |
| | | } |
| | | indexData.getXaxis().add(FoodVariety.getMsg(mapKey)); |
| | | indexData.getSeriesData().add(new DecimalFormat("0.000").format(varietyMap.get(mapKey))); |
| | | } |
| | | indexData.setFoodSum(new DecimalFormat("0.000").format(foodSum)); |
| | | indexData.setPackFoodSum(new DecimalFormat("0.000").format(packFoodSum)); |
| | | } |
| | | |
| | | return new PageResponse<>(RespCodeEnum.CODE_0000, indexData); |
| | | } |
| | | |
| | | /** |
| | | * 大屏首页-库区信息统计 |
| | | * |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public PageResponse<List<GroupDeptData>> indexDeptList(IgdsBaseParam param) { |
| | | |
| | | List<GroupDeptData> list = new ArrayList<>(); |
| | | GroupDeptData deptData; |
| | | List<Dept> deptList = deptService.getDeptByUserType(null); |
| | | if (null != deptList && !deptList.isEmpty()) { |
| | | List<Depot> depotList; |
| | | for (Dept dept : deptList) { |
| | | deptData = new GroupDeptData(); |
| | | deptData.setDeptId(dept.getId()); |
| | | deptData.setDeptName(dept.getKqmc()); |
| | | deptData.setCode(dept.getXzqhdm()); |
| | | deptData.setCounty(dept.getXzqhmc()); |
| | | deptData.setJd(dept.getJd()); |
| | | deptData.setWd(dept.getWd()); |
| | | |
| | | //统计仓库数 |
| | | depotList = depotService.getCacheDepotList(dept.getCompanyId(), dept.getId()); |
| | | if (null != depotList && !depotList.isEmpty()) { |
| | | for (Depot depot : depotList) { |
| | | deptData.setDepotNumber(deptData.getDepotNumber() + 1); |
| | | |
| | | if (StringUtils.isNotBlank(depot.getPledgeBank())) { |
| | | deptData.setDepotBankNumber(deptData.getDepotBankNumber() + 1); |
| | | } |
| | | |
| | | if (null == depot.getStorageReal()) { |
| | | depot.setStorageReal(0.0); |
| | | } |
| | | deptData.setStorageNum(deptData.getStorageNum() + depot.getStorageReal() / 1000); |
| | | } |
| | | } |
| | | |
| | | //统计出入库数量 |
| | | InoutParam inoutParam = new InoutParam(); |
| | | inoutParam.setDeptId(dept.getId()); |
| | | inoutParam.setCompanyId(param.getCompanyId()); |
| | | inoutParam.setStart(DateUtil.getCurZero(new Date())); |
| | | inoutParam.setEnd(DateUtil.getNextZero(new Date())); |
| | | List<InoutRecord> inoutRecords = inoutRecordService.listInout(inoutParam); |
| | | if (null != inoutRecords && !inoutRecords.isEmpty()) { |
| | | for (InoutRecord inoutRecord : inoutRecords) { |
| | | if (Constant.TYPE_IN.equals(inoutRecord.getType())) { |
| | | deptData.setInNum(deptData.getInNum() + 1); |
| | | } |
| | | if (Constant.TYPE_OUT.equals(inoutRecord.getType())) { |
| | | deptData.setOutNum(deptData.getOutNum() + 1); |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | //统计AI事件数量 |
| | | IgdsBaseParam igdsParam = new IgdsBaseParam(); |
| | | igdsParam.setDeptId(dept.getId()); |
| | | igdsParam.setCompanyId(param.getCompanyId()); |
| | | igdsParam.setStart(DateUtil.getNewByDay(new Date(), -6)); |
| | | igdsParam.setEnd(DateUtil.getNextZero(new Date())); |
| | | List<EventInfo> enevtList = eventInfoService.getListByParam(igdsParam); |
| | | List<EventInfo> resultEnevtList = new ArrayList<>(); |
| | | for (EventInfo info : enevtList) { |
| | | //当标签包含 卡车, 或者包含大写的英文字母(代表有车牌)时,添加进result |
| | | if (StringUtils.isNotBlank(info.getTags())) { |
| | | if (info.getTags().contains("卡车") || info.getTags().matches(".*[A-Z].*")) { |
| | | resultEnevtList.add(info); |
| | | } |
| | | } |
| | | } |
| | | if (null != resultEnevtList && !resultEnevtList.isEmpty()) { |
| | | deptData.setWarnNum7(resultEnevtList.size()); |
| | | for (EventInfo eventInfo : resultEnevtList) { |
| | | if (DateFormatUtils.format(new Date(), "yyyyMMdd").equals(DateFormatUtils.format(eventInfo.getTime(), "yyyyMMdd"))) { |
| | | deptData.setDailyTotal(deptData.getDailyTotal() + 1); |
| | | } |
| | | } |
| | | } |
| | | //判断网关是否在线 |
| | | GatewaySer cacheSerByDeptId = gatewaySerService.getCacheSerByDeptId(dept.getId()); |
| | | if (null == cacheSerByDeptId || (null != cacheSerByDeptId && StringUtils.isNotBlank(cacheSerByDeptId.getStatus()) && cacheSerByDeptId.getStatus().equals(Constant.YN_N))) { |
| | | deptData.setDailyTotal(-1); |
| | | } |
| | | list.add(deptData); |
| | | } |
| | | } |
| | | |
| | | return new PageResponse<>(RespCodeEnum.CODE_0000, list); |
| | | } |
| | | |
| | | /** |
| | | * 统计gis数据,只统计登录人下属的数据统计 |
| | | * |
| | | * @return |
| | | */ |
| | | public GisData getGisData() { |
| | | public GroupGisData getGisData() { |
| | | |
| | | GisData gisData = new GisData(); |
| | | GroupGisData groupGisData = new GroupGisData(); |
| | | |
| | | //查询伊犁下属区县 |
| | | //区县 |
| | |
| | | namePieChart.put(dicArea.getCode(), dicArea.getName()); |
| | | } |
| | | } |
| | | List<Dept> deptList = deptService.getDeptData(); |
| | | List<Dept> deptList = deptService.getDeptByUserType(null); |
| | | if (null != deptList && !deptList.isEmpty()) { |
| | | //库区总数 |
| | | gisData.setDeptNum(deptList.size()); |
| | | groupGisData.setDeptNum(deptList.size()); |
| | | for (Dept dept : deptList) { |
| | | if (StringUtils.isBlank(dept.getXzqhdm()) || null == valuePieChart.get(dept.getXzqhdm())) { |
| | | if(null == valuePieChart.get("999999")){ |
| | | if (null == valuePieChart.get("999999")) { |
| | | valuePieChart.put("999999", 0); |
| | | namePieChart.put("999999", "其他区县"); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | if(gisData.getDeptNum() > 0){ |
| | | if (groupGisData.getDeptNum() > 0) { |
| | | for (String mapKey : valuePieChart.keySet()) { |
| | | gisData.getDeptList().add(new ChartPie(valuePieChart.get(mapKey) + "", namePieChart.get(mapKey), new DecimalFormat("0.0").format((double)valuePieChart.get(mapKey) / gisData.getDeptNum() * 100))); |
| | | groupGisData.getDeptList().add(new ChartPie(valuePieChart.get(mapKey) + "", namePieChart.get(mapKey), new DecimalFormat("0.0").format((double) valuePieChart.get(mapKey) / groupGisData.getDeptNum() * 100))); |
| | | } |
| | | } |
| | | |
| | | //统计重量 |
| | | List<Depot> depotLisst = depotService.getData(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null), false); |
| | | if (null != depotLisst && !depotLisst.isEmpty()) { |
| | | for (Depot depot : depotLisst) { |
| | | if(null == depot.getStorageReal()){ |
| | | List<Depot> depotList = depotService.getData(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null), false); |
| | | if (null != depotList && !depotList.isEmpty()) { |
| | | for (Depot depot : depotList) { |
| | | if (null == depot.getStorageReal()) { |
| | | depot.setStorageReal(0.0); |
| | | } |
| | | gisData.setSum(gisData.getSum() + depot.getStorageReal()); |
| | | if(StringUtils.isNotBlank(depot.getPledgeBank())){ |
| | | gisData.setBankSum(gisData.getBankSum() + depot.getStorageReal()); |
| | | }else{ |
| | | gisData.setNormalSum(gisData.getNormalSum() + depot.getStorageReal()); |
| | | groupGisData.setSum(groupGisData.getSum() + depot.getStorageReal()); |
| | | if (StringUtils.isNotBlank(depot.getPledgeBank())) { |
| | | groupGisData.setBankSum(groupGisData.getBankSum() + depot.getStorageReal()); |
| | | } else { |
| | | groupGisData.setNormalSum(groupGisData.getNormalSum() + depot.getStorageReal()); |
| | | } |
| | | } |
| | | } |
| | | if(gisData.getSum() > 0){ |
| | | gisData.setSumPer(new DecimalFormat("0.00").format(gisData.getSum() / gisData.getSum() * 100L)); |
| | | gisData.setBankSumPer(new DecimalFormat("0.00").format(gisData.getBankSum() / gisData.getSum() * 100L)); |
| | | gisData.setNormalSumPer(new DecimalFormat("0.00").format(gisData.getNormalSum() / gisData.getSum() * 100L)); |
| | | if (groupGisData.getSum() > 0) { |
| | | groupGisData.setSumPer(new DecimalFormat("0.00").format(groupGisData.getSum() / groupGisData.getSum() * 100L)); |
| | | groupGisData.setBankSumPer(new DecimalFormat("0.00").format(groupGisData.getBankSum() / groupGisData.getSum() * 100L)); |
| | | groupGisData.setNormalSumPer(new DecimalFormat("0.00").format(groupGisData.getNormalSum() / groupGisData.getSum() * 100L)); |
| | | } |
| | | |
| | | return gisData; |
| | | return groupGisData; |
| | | } |
| | | |
| | | |
| | | public GroupGisData getGisDataByCompanyId() { |
| | | |
| | | GroupGisData groupGisData = new GroupGisData(); |
| | | |
| | | //查询伊犁下属区县 |
| | | //区县 |
| | | List<DicArea> dicAreaList = dicAreaService.listData("654000", null, null); |
| | | |
| | | //统计区县下库区数 |
| | | LinkedHashMap<String, Integer> valuePieChart = new LinkedHashMap<>(); |
| | | LinkedHashMap<String, String> namePieChart = new LinkedHashMap<>(); |
| | | if (null != dicAreaList && !dicAreaList.isEmpty()) { |
| | | for (DicArea dicArea : dicAreaList) { |
| | | valuePieChart.put(dicArea.getCode(), 0); |
| | | namePieChart.put(dicArea.getCode(), dicArea.getName()); |
| | | } |
| | | } |
| | | List<Dept> deptList = deptService.getDeptByUserType(null); |
| | | if (null != deptList && !deptList.isEmpty()) { |
| | | //库区总数 |
| | | groupGisData.setDeptNum(deptList.size()); |
| | | for (Dept dept : deptList) { |
| | | if (StringUtils.isBlank(dept.getXzqhdm()) || null == valuePieChart.get(dept.getXzqhdm())) { |
| | | if (null == valuePieChart.get("999999")) { |
| | | valuePieChart.put("999999", 0); |
| | | namePieChart.put("999999", "其他区县"); |
| | | } |
| | | dept.setXzqhdm("999999"); |
| | | } |
| | | valuePieChart.put(dept.getXzqhdm(), valuePieChart.get(dept.getXzqhdm()) + 1); |
| | | } |
| | | } |
| | | |
| | | if (groupGisData.getDeptNum() > 0) { |
| | | for (String mapKey : valuePieChart.keySet()) { |
| | | groupGisData.getDeptList().add(new ChartPie(valuePieChart.get(mapKey) + "", namePieChart.get(mapKey), new DecimalFormat("0.0").format((double) valuePieChart.get(mapKey) / groupGisData.getDeptNum() * 100))); |
| | | } |
| | | } |
| | | |
| | | //统计重量 |
| | | List<Depot> depotList = depotService.getCacheDepotList(ContextUtil.getCompanyId()); |
| | | if (null != depotList && !depotList.isEmpty()) { |
| | | for (Depot depot : depotList) { |
| | | if (null == depot.getStorageReal()) { |
| | | depot.setStorageReal(0.0); |
| | | } |
| | | groupGisData.setSum(groupGisData.getSum() + depot.getStorageReal()); |
| | | if (StringUtils.isNotBlank(depot.getPledgeBank())) { |
| | | groupGisData.setBankSum(groupGisData.getBankSum() + depot.getStorageReal()); |
| | | } else { |
| | | groupGisData.setNormalSum(groupGisData.getNormalSum() + depot.getStorageReal()); |
| | | } |
| | | } |
| | | } |
| | | if (groupGisData.getSum() > 0) { |
| | | groupGisData.setSumPer(new DecimalFormat("0.00").format(groupGisData.getSum() / groupGisData.getSum() * 100L)); |
| | | groupGisData.setBankSumPer(new DecimalFormat("0.00").format(groupGisData.getBankSum() / groupGisData.getSum() * 100L)); |
| | | groupGisData.setNormalSumPer(new DecimalFormat("0.00").format(groupGisData.getNormalSum() / groupGisData.getSum() * 100L)); |
| | | } |
| | | |
| | | return groupGisData; |
| | | } |
| | | |
| | | /** |
| | | * 大屏首页-抓拍跟踪信息 |
| | | * |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public PageResponse<List<SnapRecord>> indexSnapList(IgdsBaseParam param) { |
| | | |
| | | param.setStart(DateUtil.getNewByDay(new Date(), -10)); |
| | | param.setEnd(new Date()); |
| | | List<SnapRecord> listSnap = snapRecordService.getListByParam(param); |
| | | |
| | | List<SnapRecord> resultListSnap = new ArrayList<>(); |
| | | for (SnapRecord info : listSnap) { |
| | | //当标签包含 卡车, 或者包含大写的英文字母(代表有车牌)时,添加进result |
| | | if (StringUtils.isNotBlank(info.getTags())) { |
| | | if (info.getTags().contains("卡车") || info.getTags().matches(".*[A-Z].*")) { |
| | | resultListSnap.add(info); |
| | | } |
| | | } |
| | | } |
| | | if (null != resultListSnap && !resultListSnap.isEmpty()) { |
| | | //判断文件是否存在 |
| | | for (SnapRecord record : resultListSnap) { |
| | | record.setImgName(commonManager.isImgExit(record.getImgName(), null)); |
| | | } |
| | | } |
| | | |
| | | return new PageResponse<>(RespCodeEnum.CODE_0000, resultListSnap); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 大屏首页-抓拍跟踪信息-展示AI时间图片 |
| | | * 展示图片的业务逻辑:每个库区展示一张,图片为当天十点以后最新的一张 |
| | | * |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public PageResponse<List<EventInfo>> indexEventInfoList(IgdsBaseParam param) { |
| | | // Date start =DateUtils.setHours(DateUtil.getNewByDay(new Date(), -3), 10); |
| | | //param.setStart(start); |
| | | // param.setEnd(DateUtil.getNewByDay(new Date(), -3)); |
| | | Date start =DateUtil.getNewByDay(new Date(), -10); |
| | | param.setStart(start); |
| | | param.setEnd(new Date()); |
| | | |
| | | //获取当日的抓拍信息 |
| | | List<EventInfo> listByParam = eventInfoService.getListByParam(param); |
| | | if (null == listByParam || listByParam.isEmpty()) { |
| | | return new PageResponse<>(RespCodeEnum.CODE_0000, new ArrayList<>()); |
| | | } |
| | | |
| | | //获取所有的库区信息 |
| | | List<Dept> deptList = deptService.getDeptByUserType(null); |
| | | //根据库区从listByParam来获取每一个库区下,最新的一张抓拍图片 |
| | | List<EventInfo> resultList = new ArrayList<>(); |
| | | |
| | | for (Dept dept : deptList) { |
| | | EventInfo latestEvent = null; |
| | | //从listByParam中筛选出与当前id匹配的数据 |
| | | List<EventInfo> collect = listByParam.stream().filter(info -> info.getDeptId().equals(dept.getId())).sorted(Comparator.comparing(EventInfo::getTime).reversed()).collect(Collectors.toList()); |
| | | //每个库区获取最新的3张图片 |
| | | int i = 0; |
| | | for (EventInfo info : collect) { |
| | | if (i > 2) break; |
| | | resultList.add(info); |
| | | i++; |
| | | } |
| | | } |
| | | if (null != resultList && !resultList.isEmpty()) { |
| | | //判断文件是否存在 |
| | | for (EventInfo record : resultList) { |
| | | record.setImgName(commonManager.isImgExit(record.getImgName(), null)); |
| | | } |
| | | } |
| | | |
| | | return new PageResponse<>(RespCodeEnum.CODE_0000, resultList); |
| | | } |
| | | } |