From c490640493f04e2ed0fc5c4c8fbc92ebdd4d5380 Mon Sep 17 00:00:00 2001 From: xusd <330628789@qq.com> Date: Tue, 24 Jun 2025 21:06:48 +0800 Subject: [PATCH] Merge branch 'gzdyh_prod' --- dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java | 749 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 403 insertions(+), 346 deletions(-) diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java index 109bdd0..aa55dba 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java @@ -16,6 +16,7 @@ import cn.huge.module.cases.domain.po.*; import cn.huge.module.cases.domain.vo.CaseVo; import cn.huge.module.cases.domain.vo.GenerateQrCodeRequestVo; +import cn.huge.module.cases.utils.StatisticsTimeUtils; import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.client.api.impl.SysClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; @@ -310,7 +311,9 @@ generateQrCodeRequestVo.setBusinessSource("02"); generateQrCodeRequestVo.setGenerateUnifiedCode(true); generateQrCodeRequestVo.setInfoSource("03"); - String area = this.formatGridCode(ctUnitDTO.getArea()); + log.info("xsdgridCode:{}",registerSaveDTO.getQueArea()); + String area = this.formatGridCode(registerSaveDTO.getQueArea()); + log.info("xsdgridCode:{}",area); generateQrCodeRequestVo.setGridCode(area); caseInfo.setCaseRef(sysClient.getCaseRefByGenerateQrCode(generateQrCodeRequestVo)); // 获取调解案号 @@ -1422,6 +1425,19 @@ terms.put("areaType", areaType); // 调用统计调解过程的方法 CaseStatisticsBaseDTO caseStatisticsBaseDTO = statisticsProcess(terms); + + //当日新增 + Map<String, Object> toDayTerms = new HashMap<>(); + toDayTerms.putAll(terms); + String toDayStr = DateUtils.DateToString(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD); + toDayTerms.put("createStart", toDayStr + " 00:00:00"); + toDayTerms.put("createEnd", toDayStr + " 23:59:59"); + CaseStatisticsBaseDTO toDayBaseDTO = mapper.statisticsBase(toDayTerms); + caseStatisticsBaseDTO.setToDayTotalNum(toDayBaseDTO.getTotalNum()); + caseStatisticsBaseDTO.setToDayProcessNum(toDayBaseDTO.getProcessNum()); + caseStatisticsBaseDTO.setToDayRejectNum(toDayBaseDTO.getRejectNum()); + caseStatisticsBaseDTO.setToDayFinishNum(toDayBaseDTO.getFinishNum()); + //区域数据统计 List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS = new ArrayList<>(); if (!isLast) { @@ -1488,29 +1504,8 @@ } areaTotal = areaTotal + caseStatisticsAreaDTO.getCaseNum(); - //本及:承办单位是本及和没有承办单位并且没有下级区域编码 -// if(ObjectUtils.isEmpty(caseStatisticsAreaDTO.getAreaCode()) || unitGrades.contains(caseStatisticsAreaDTO.getUnitGrade())){ -// allArea.setCaseNum(dellNull(caseStatisticsAreaDTO.getCaseNum()) + dellNull(allArea.getCaseNum())); -// allArea.setResolveNum(dellNull(caseStatisticsAreaDTO.getResolveNum()) + dellNull(allArea.getResolveNum())); -// allArea.setUnResolveNum(dellNull(caseStatisticsAreaDTO.getUnResolveNum()) + dellNull(allArea.getUnResolveNum())); -// allArea.setResolveingNum(dellNull(caseStatisticsAreaDTO.getResolveingNum()) + dellNull(allArea.getResolveingNum())); -// }else{ -// areaList.add(caseStatisticsAreaDTO); -// areaCodeList.add(caseStatisticsAreaDTO.getAreaCode()); -// } } areaList.add(allArea); -// if ("1".equals(areaType)) { -// Map<String, String> area = getArea(); -// for (String areaName : area.keySet()) { -// if (!areaNames.contains(areaName)) { -// CaseStatisticsAreaDTO areaChild = new CaseStatisticsAreaDTO(); -// areaChild.setAreaCode(area.get(areaName)); -// areaChild.setAreaName(areaName); -// areaList.add(areaChild); -// } -// } -// } List<QueAreaDTO> queArea = listAreaByType(areaCode); log.info("listAreaByType {}", JSON.toJSONString(queArea)); @@ -1549,12 +1544,6 @@ } else { otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); } -// if (i > 5) { -// otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); -// } else { -// typeList.add(caseStatisticsTypeDTO); -// } - } for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) { caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); @@ -1694,6 +1683,164 @@ } }); return caseStatisticsTypeDTOS; + } + + /** + * 工作统计 + */ + public CaseWorkStatisticsBaseDTO workStatistics(Map<String, Object> terms, String userId) throws IOException { + CaseWorkStatisticsBaseDTO caseWorkStatisticsBaseDTO = new CaseWorkStatisticsBaseDTO(); + terms.put("statistics", "1"); + //根据用户筛选区域范围 + CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId); + //目前没有村居数据,所以单位等级是4的也归集到3里面 + if (ctUnitDTO.getUnitGrade().equals(1)) { + terms.put("queCity", ctUnitDTO.getCity()); + } else if (ctUnitDTO.getUnitGrade().equals(2)) { + terms.put("queArea", ctUnitDTO.getArea()); + } else if (ctUnitDTO.getUnitGrade().equals(3)) { + terms.put("queRoad", ctUnitDTO.getRoad()); + } else if (ctUnitDTO.getUnitGrade().equals(4)) { + terms.put("queVillage", ctUnitDTO.getRoad()); + } + terms.put("workUserId", userId); + String areaType = "1"; + if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) { + terms.remove("queArea"); + terms.remove("queCity"); + terms.remove("queRoad"); + areaType = "4"; + } else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) { + terms.remove("queArea"); + terms.remove("queCity"); + areaType = "3"; + } else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) { + terms.remove("queCity"); + areaType = "2"; + } + terms.put("areaType", areaType); + CaseStatisticsBaseDTO caseStatisticsBaseDTO = mapper.statisticsBase(terms); + Integer baseTotalNum = dellNull(caseStatisticsBaseDTO.getResolveNum()) + dellNull(caseStatisticsBaseDTO.getUnResolveNum()) + dellNull(caseStatisticsBaseDTO.getResolveingNum()); + Integer resolveTotalNum = dellNull(caseStatisticsBaseDTO.getResolveNum()) + dellNull(caseStatisticsBaseDTO.getUnResolveNum()); + caseStatisticsBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveNum() * 100, resolveTotalNum, 1)); + caseStatisticsBaseDTO.setUnResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getUnResolveNum() * 100, resolveTotalNum, 1)); + caseStatisticsBaseDTO.setResolveingRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveingNum() * 100, baseTotalNum, 1)); + Integer levelTotalNum = caseStatisticsBaseDTO.getOneLevelNum() + caseStatisticsBaseDTO.getTwoLevelNum() + caseStatisticsBaseDTO.getThreeLevelNum(); + caseStatisticsBaseDTO.setOneLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getOneLevelNum() * 100, levelTotalNum, 1)); + caseStatisticsBaseDTO.setTwoLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getTwoLevelNum() * 100, levelTotalNum, 1)); + caseStatisticsBaseDTO.setThreeLevelRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getThreeLevelNum() * 100, levelTotalNum, 1)); + //当日新增 + Map<String, Object> toDayTerms = new HashMap<>(); + toDayTerms.putAll(terms); + String toDayStr = DateUtils.DateToString(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD); + toDayTerms.put("createStart", toDayStr + " 00:00:00"); + toDayTerms.put("createEnd", toDayStr + " 23:59:59"); + CaseStatisticsBaseDTO toDayBaseDTO = mapper.statisticsBase(toDayTerms); + caseStatisticsBaseDTO.setToDayTotalNum(toDayBaseDTO.getTotalNum()); + caseStatisticsBaseDTO.setToDayProcessNum(toDayBaseDTO.getProcessNum()); + caseStatisticsBaseDTO.setToDayRejectNum(toDayBaseDTO.getRejectNum()); + caseStatisticsBaseDTO.setToDayFinishNum(toDayBaseDTO.getFinishNum()); + BeanUtils.copyProperties(caseStatisticsBaseDTO, caseWorkStatisticsBaseDTO); + + //按时间统计 + Date startDate = null; + Date endDate = null; + if(ObjectUtils.isNotEmpty(terms.get("createStart"))){ + String startTime = terms.get("createStart").toString(); + String endTime = terms.get("createEnd").toString(); + startDate = DateUtils.StringToDate(startTime, "yyyy-MM-dd HH:mm:ss"); + endDate = DateUtils.StringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); + terms.put("selectTimeType","1"); + }else if(ObjectUtils.isNotEmpty(terms.get("closeStart"))){ + String startTime = terms.get("closeStart").toString(); + String endTime = terms.get("closeEnd").toString(); + startDate = DateUtils.StringToDate(startTime, "yyyy-MM-dd HH:mm:ss"); + endDate = DateUtils.StringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); + terms.put("selectTimeType","2"); + } + List<CaseWorkStatisticsTimeDTO> resultTimeDTOs = new ArrayList<>(); + if(ObjectUtils.isNotEmpty(startDate)){ + String spanType = StatisticsTimeUtils.spanTime(startDate, endDate); + terms.put("timeType", spanType); + List<CaseWorkStatisticsTimeDTO> caseWorkStatisticsTimeDTOs = mapper.workStatisticsTime(terms); + resultTimeDTOs = StatisticsTimeUtils.dellStatisticsTime(caseWorkStatisticsTimeDTOs, startDate, endDate, spanType); + } + caseWorkStatisticsBaseDTO.setTimeList(resultTimeDTOs); + + //环比和同比 + if(StatisticsTimeUtils.isStartAndEndOfMonth(startDate, endDate)){ + caseWorkStatisticsBaseDTO.setMomType("1"); + Map<String, Object> momthTerms = new HashMap<>(); + momthTerms.putAll(terms); + momthTerms.put("createStart", StatisticsTimeUtils.getMomStartDate(startDate) + " 00:00:00"); + momthTerms.put("createEnd", StatisticsTimeUtils.getMomEndDate(startDate) + " 23:59:59"); + CaseStatisticsBaseDTO momBaseDTO = mapper.statisticsBase(momthTerms); + caseWorkStatisticsBaseDTO.setMomTotalRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getTotalNum(),momBaseDTO.getTotalNum())); + caseWorkStatisticsBaseDTO.setMomProcessRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getProcessNum(),momBaseDTO.getProcessNum())); + caseWorkStatisticsBaseDTO.setMomRejectRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getRejectNum(),momBaseDTO.getRejectNum())); + caseWorkStatisticsBaseDTO.setMomFinishNumRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getFinishNum(),momBaseDTO.getFinishNum())); + Integer momResolveTotalNum = dellNull(momBaseDTO.getResolveNum()) + dellNull(momBaseDTO.getUnResolveNum()); + momBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(momBaseDTO.getResolveNum() * 100, momResolveTotalNum, 1)); + caseWorkStatisticsBaseDTO.setMomResolveRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getResolveRate(),momBaseDTO.getResolveRate())); + momthTerms.put("createStart", StatisticsTimeUtils.getYoyDate(startDate) + " 00:00:00"); + momthTerms.put("createEnd", StatisticsTimeUtils.getYoyDate(endDate) + " 23:59:59"); + CaseStatisticsBaseDTO yoyBaseDTO = mapper.statisticsBase(momthTerms); + caseWorkStatisticsBaseDTO.setYoyTotalRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getTotalNum(),yoyBaseDTO.getTotalNum())); + caseWorkStatisticsBaseDTO.setYoyProcessRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getProcessNum(),yoyBaseDTO.getProcessNum())); + caseWorkStatisticsBaseDTO.setYoyRejectRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getRejectNum(),yoyBaseDTO.getRejectNum())); + caseWorkStatisticsBaseDTO.setYoyFinishNumRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getFinishNum(),yoyBaseDTO.getFinishNum())); + Integer yoyResolveTotalNum = dellNull(yoyBaseDTO.getResolveNum()) + dellNull(yoyBaseDTO.getUnResolveNum()); + yoyBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(yoyBaseDTO.getResolveNum() * 100, yoyResolveTotalNum, 1)); + caseWorkStatisticsBaseDTO.setYoyResolveRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getResolveRate(),yoyBaseDTO.getResolveRate())); + + }else if(StatisticsTimeUtils.isStartAndEndOfYear(startDate, endDate)){ + caseWorkStatisticsBaseDTO.setMomType("2"); + Map<String, Object> momthTerms = new HashMap<>(); + momthTerms.putAll(terms); + momthTerms.put("createStart", StatisticsTimeUtils.getYoyDate(startDate) + " 00:00:00"); + momthTerms.put("createEnd", StatisticsTimeUtils.getYoyDate(endDate) + " 23:59:59"); + CaseStatisticsBaseDTO yoyBaseDTO = mapper.statisticsBase(momthTerms); + caseWorkStatisticsBaseDTO.setYoyTotalRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getTotalNum(),yoyBaseDTO.getTotalNum())); + caseWorkStatisticsBaseDTO.setYoyProcessRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getProcessNum(),yoyBaseDTO.getProcessNum())); + caseWorkStatisticsBaseDTO.setYoyRejectRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getRejectNum(),yoyBaseDTO.getRejectNum())); + caseWorkStatisticsBaseDTO.setYoyFinishNumRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getFinishNum(),yoyBaseDTO.getFinishNum())); + Integer yoyResolveTotalNum = dellNull(yoyBaseDTO.getResolveNum()) + dellNull(yoyBaseDTO.getUnResolveNum()); + yoyBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(yoyBaseDTO.getResolveNum() * 100, yoyResolveTotalNum, 1)); + caseWorkStatisticsBaseDTO.setYoyResolveRate(StatisticsTimeUtils.calculateMomGrowthRate(caseStatisticsBaseDTO.getResolveRate(),yoyBaseDTO.getResolveRate())); + }else{ + caseWorkStatisticsBaseDTO.setMomType("0"); + } + + //纠纷类型统计 + List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsTypeFirst(terms); + if (ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)) { + sortType(caseStatisticsTypeDTOS); + } + Integer typeTotalNum = 0; + Integer otherCaseNum = 0; + int i = 1; + List<CaseStatisticsTypeDTO> typeList = new ArrayList<>(); + for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) { + typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); + if(i<6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())){ + typeList.add(caseStatisticsTypeDTO); + i++; + }else{ + otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); + } + } + for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) { + caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); + } + if(otherCaseNum > 0){ + CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO(); + caseStatisticsTypeDTO.setCaseTypeName("其他"); + caseStatisticsTypeDTO.setCaseNum(otherCaseNum); + caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); + typeList.add(caseStatisticsTypeDTO); + } + caseWorkStatisticsBaseDTO.setTypeList(typeList); + return caseWorkStatisticsBaseDTO; } public Map<String, String> getArea() { @@ -2124,34 +2271,220 @@ return caseOverviewDetailDTOs; } - public CaseStatisticsBaseDTO ledger(Map<String, Object> terms, String userId) throws IOException { - // 备份原始的类型筛选条件,用于后续恢复 - Map<String, Object> originalTypeTerms = new HashMap<>(); - if (terms.containsKey("canal")) { - originalTypeTerms.put("canal", terms.get("canal")); + public CaseStatisticsBaseDTO ledger(Map<String, Object> terms, String userId,String ledgerType) throws IOException { + terms.put("statistics", "1"); + + CtUnitDTO ctUnitDTO = null; + if (ObjectUtils.isNotEmpty(userId)) { + ctUnitDTO = custClient.getUnitByUserId(userId); } - if (terms.containsKey("canalSecond")) { - originalTypeTerms.put("canalSecond", terms.get("canalSecond")); - } - if (terms.containsKey("canalList")) { - originalTypeTerms.put("canalList", terms.get("canalList")); - } - if (terms.containsKey("canalSecondNot")) { - originalTypeTerms.put("canalSecondNot", terms.get("canalSecondNot")); - } - if (terms.containsKey("canalSecondAll")) { - originalTypeTerms.put("canalSecondAll", terms.get("canalSecondAll")); + String areaCode = null; + //目前没有村居数据,所以单位等级是4的也归集到3里面 + if (ObjectUtils.isNotEmpty(ctUnitDTO)) { + if (ctUnitDTO.getUnitGrade().equals(1)) { + terms.put("queCity", ctUnitDTO.getCity()); + } else if (ctUnitDTO.getUnitGrade().equals(2)) { + terms.put("queArea", ctUnitDTO.getArea()); + } else if (ctUnitDTO.getUnitGrade().equals(3)) { + terms.put("queRoad", ctUnitDTO.getRoad()); + } else if (ctUnitDTO.getUnitGrade().equals(4)) { + terms.put("queVillage", ctUnitDTO.getVillage()); + } } - // 临时移除类型筛选条件,以便 statistics 获取全量数据 - terms.remove("canal"); - terms.remove("canalSecond"); - terms.remove("canalList"); - terms.remove("canalSecondNot"); - terms.remove("canalSecondAll"); + //目前没有村居,所以区和街道进来都是按街道展示 + String areaType = null; + String childAreaType = null; + List<Integer> unitGrades = new ArrayList<>(); + List<Integer> childUnitGrades = new ArrayList<>(); + String childUnitGradeStr = null; + String unitGradeStr = null; + Boolean isLast = false; + if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) { + terms.remove("queArea"); + terms.remove("queCity"); + terms.remove("queRoad"); + areaType = "4"; + childAreaType = "5"; + areaCode = terms.get("queVillage") + ""; + unitGrades.add(4); + childUnitGrades.add(5); + childUnitGradeStr = "5"; + unitGradeStr = "4"; + isLast = true; + } else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) { + terms.remove("queArea"); + terms.remove("queCity"); + areaType = "3"; + childAreaType = "4"; + areaCode = terms.get("queRoad") + ""; + unitGrades.add(3); + childUnitGrades.add(4); + childUnitGradeStr = "4"; + unitGradeStr = "3"; + } else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) { + terms.remove("queCity"); + areaType = "2"; + childAreaType = "3"; + areaCode = terms.get("queArea") + ""; + unitGrades.add(2); + childUnitGrades.add(3); + childUnitGrades.add(4); + childUnitGradeStr = "3,4"; + unitGradeStr = "2"; + } else { + areaType = "1"; + childAreaType = "2"; + unitGrades.add(1); + childUnitGrades.add(2); + childUnitGrades.add(3); + childUnitGrades.add(4); + if (ObjectUtils.isNotEmpty(ctUnitDTO)) { + areaCode = ctUnitDTO.getCity(); + } else { + areaCode = "440100"; + } + childUnitGradeStr = "2,3,4"; + unitGradeStr = "1"; + } + //基础数据统计 + terms.put("areaType", areaType); + // 调用统计调解过程的方法 + CaseStatisticsBaseDTO caseStatisticsBaseDTO = new CaseStatisticsBaseDTO(); + List<String> areaCodeList = new ArrayList<>(); + List<CaseStatisticsAreaDTO> areaList = new ArrayList<>(); + //本系统或者全部的时候才去查询数据 + if(ObjectUtils.isEmpty(ledgerType) || "1".equals(ledgerType)){ + caseStatisticsBaseDTO = statisticsProcess(terms); + + //区域数据统计 + List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS = new ArrayList<>(); + if (!isLast) { + terms.put("areaType", childAreaType); + terms.put("unitGrades", childUnitGrades); + caseStatisticsAreaDTOS = mapper.statisticsArea(terms); + if (ObjectUtils.isEmpty(caseStatisticsAreaDTOS)) { + caseStatisticsAreaDTOS = new ArrayList<>(); + } else { + for (CaseStatisticsAreaDTO caseStatisticsAreaDTO : caseStatisticsAreaDTOS) { + caseStatisticsAreaDTO.setAreaType(childAreaType); + caseStatisticsAreaDTO.setUnitGrades(childUnitGradeStr); + if ("4".equals(childAreaType)) { + caseStatisticsAreaDTO.setQueVillage(caseStatisticsAreaDTO.getAreaCode()); + } else if ("3".equals(childAreaType)) { + caseStatisticsAreaDTO.setQueRoad(caseStatisticsAreaDTO.getAreaCode()); + } else if ("2".equals(childAreaType)) { + caseStatisticsAreaDTO.setQueArea(caseStatisticsAreaDTO.getAreaCode()); + } + } + } + } + + //本级区数据 + terms.put("areaType", areaType); + terms.put("unitGrades", unitGrades); + List<CaseStatisticsAreaDTO> allAreas = mapper.statisticsArea(terms); + CaseStatisticsAreaDTO allArea = new CaseStatisticsAreaDTO(); + if (ObjectUtils.isNotEmpty(allAreas)) { + allArea = allAreas.get(0); + } + terms.remove("unitGrades"); + allArea.setAreaName("本级"); + allArea.setAreaCode("0"); + allArea.setAreaType(areaType); + allArea.setUnitGrades(unitGradeStr); + if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) { + allArea.setQueVillage(terms.get("queVillage") + ""); + } + if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) { + allArea.setQueRoad(terms.get("queRoad") + ""); + } + if (ObjectUtils.isNotEmpty(terms.get("queArea"))) { + allArea.setQueArea(terms.get("queArea") + ""); + } + if (ObjectUtils.isNotEmpty(terms.get("queCity"))) { + allArea.setQueCity(terms.get("queCity") + ""); + } + + List<String> areaNames = new ArrayList<>();//为兼容白云区数据 + Integer areaTotal = allArea.getCaseNum(); + for (CaseStatisticsAreaDTO caseStatisticsAreaDTO : caseStatisticsAreaDTOS) { + areaNames.add(caseStatisticsAreaDTO.getAreaName()); + if (ObjectUtils.isEmpty(caseStatisticsAreaDTO.getAreaCode())) { + allArea.setCaseNum(dellNull(caseStatisticsAreaDTO.getCaseNum()) + dellNull(allArea.getCaseNum())); + allArea.setResolveNum(dellNull(caseStatisticsAreaDTO.getResolveNum()) + dellNull(allArea.getResolveNum())); + allArea.setUnResolveNum(dellNull(caseStatisticsAreaDTO.getUnResolveNum()) + dellNull(allArea.getUnResolveNum())); + allArea.setResolveingNum(dellNull(caseStatisticsAreaDTO.getResolveingNum()) + dellNull(allArea.getResolveingNum())); + allArea.setRejectNum(dellNull(caseStatisticsAreaDTO.getRejectNum()) + dellNull(allArea.getRejectNum())); + } else { + areaList.add(caseStatisticsAreaDTO); + areaCodeList.add(caseStatisticsAreaDTO.getAreaCode()); + } + areaTotal = areaTotal + caseStatisticsAreaDTO.getCaseNum(); + + } + areaList.add(allArea); + + //纠纷类型统计 + List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsTypeFirst(terms); + if (ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)) { + sortType(caseStatisticsTypeDTOS); + } + Integer typeTotalNum = 0; + Integer otherCaseNum = 0; + int i = 1; + List<CaseStatisticsTypeDTO> typeList = new ArrayList<>(); + for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) { + typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); + if (i < 6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())) { + typeList.add(caseStatisticsTypeDTO); + i++; + } else { + otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); + } + } + for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) { + caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); + } + if (otherCaseNum > 0) { + CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO(); + caseStatisticsTypeDTO.setCaseTypeName("其他"); + caseStatisticsTypeDTO.setCaseNum(otherCaseNum); + caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); + typeList.add(caseStatisticsTypeDTO); + caseStatisticsBaseDTO.setTypeList(typeList); + } + } + + List<QueAreaDTO> queArea = listAreaByType(areaCode); + log.info("listAreaByType {}", JSON.toJSONString(queArea)); + for (QueAreaDTO caseAreaDTO : queArea) { + if (!areaCodeList.contains(caseAreaDTO.getAreaCode())) { + CaseStatisticsAreaDTO areaChild = new CaseStatisticsAreaDTO(); + areaChild.setAreaCode(caseAreaDTO.getAreaCode()); + areaChild.setAreaName(caseAreaDTO.getAreaName()); + areaChild.setCaseNum(0); + areaChild.setResolveNum(0); + areaChild.setUnResolveNum(0); + areaChild.setResolveingNum(0); + areaList.add(areaChild); + } + } + + if (ObjectUtils.isNotEmpty(areaList)) { + sortArea(areaList); + } + + caseStatisticsBaseDTO.setAreaList(areaList); + + + return caseStatisticsBaseDTO; + } + + public CaseStatisticsBaseDTO ledgerCount(Map<String, Object> terms, String userId) throws IOException { // 获取全量基础统计数据 - CaseStatisticsBaseDTO statistics = statistics(terms, userId); + CaseStatisticsBaseDTO statistics = new CaseStatisticsBaseDTO(); terms.put("statistics", "1"); //根据用户筛选区域范围 @@ -2188,316 +2521,40 @@ terms.remove("canalSecond"); terms.remove("canal"); terms.put("areaType", areaType); - terms.put("canalList", Arrays.asList("22_00001-1", "22_00001-2", "22_00001-3")); CaseStatisticsBaseDTO caseStatisticsBaseDTO1 = mapper.statisticsBase(terms); statistics.setSysNum(caseStatisticsBaseDTO1.getTotalNum()); - terms.remove("canalList"); - terms.put("canal", "22_00001-4"); - terms.put("canalSecond", "22_00003-3"); - CaseStatisticsBaseDTO caseStatisticsBaseDTO2 = mapper.statisticsBase(terms); - statistics.setOttffNum(caseStatisticsBaseDTO2.getTotalNum()); - terms.put("canalSecond", "22_00003-4"); - CaseStatisticsBaseDTO caseStatisticsBaseDTO3 = mapper.statisticsBase(terms); - statistics.setRmtjNum(caseStatisticsBaseDTO3.getTotalNum()); - terms.put("canalSecond", "22_00003-6"); - CaseStatisticsBaseDTO caseStatisticsBaseDTO4 = mapper.statisticsBase(terms); - statistics.setXfNum(caseStatisticsBaseDTO4.getTotalNum()); - terms.put("canalSecond", "22_00003-5"); - CaseStatisticsBaseDTO caseStatisticsBaseDTO5 = mapper.statisticsBase(terms); - statistics.setLdzcNum(caseStatisticsBaseDTO5.getTotalNum()); - terms.put("canalSecond", "22_00003-1"); - CaseStatisticsBaseDTO caseStatisticsBaseDTO6 = mapper.statisticsBase(terms); - statistics.setFjwjfNum(caseStatisticsBaseDTO6.getTotalNum()); - // 重新计算纠纷类型统计,基于用户选择的类型 - terms.remove("canalSecond"); - terms.remove("canal"); - terms.remove("canalList"); - terms.remove("canalSecondNot"); - terms.remove("canalSecondAll"); - - // 恢复所有原始类型筛选条件进行纠纷类型统计 - for (String key : originalTypeTerms.keySet()) { - terms.put(key, originalTypeTerms.get(key)); - } - - // 调用统计调解过程的方法 - CaseStatisticsBaseDTO processStats = statisticsProcess(terms); - - // 将调解过程统计数据合并到统计结果中 - statistics.setTotalNum(processStats.getTotalNum()); - statistics.setRejectNum(processStats.getRejectNum()); - statistics.setProcessNum(processStats.getProcessNum()); - statistics.setFinishNum(processStats.getFinishNum()); - statistics.setFailNum(processStats.getFailNum()); - statistics.setRejectRate(processStats.getRejectRate()); - statistics.setProcessRate(processStats.getProcessRate()); - statistics.setFinishRate(processStats.getFinishRate()); - statistics.setFailRate(processStats.getFailRate()); - // 重新获取纠纷类型统计(基于完整的选择类型条件) - List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsTypeFirst(terms); - - if (ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)) { - sortType(caseStatisticsTypeDTOS); - } - Integer typeTotalNum = 0; - Integer otherCaseNum = 0; - int i = 1; - List<CaseStatisticsTypeDTO> typeList = new ArrayList<>(); - for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : caseStatisticsTypeDTOS) { - typeTotalNum = typeTotalNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); - if (i < 6 && !"其他".equals(caseStatisticsTypeDTO.getCaseTypeName())) { - typeList.add(caseStatisticsTypeDTO); - i++; - } else { - otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum()); - } - } - for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) { - caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); - } - if (otherCaseNum > 0) { - CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO(); - caseStatisticsTypeDTO.setCaseTypeName("其他"); - caseStatisticsTypeDTO.setCaseNum(otherCaseNum); - caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum() * 100, typeTotalNum, 1)); - typeList.add(caseStatisticsTypeDTO); - } - statistics.setTypeList(typeList); +// terms.remove("canalList"); +// terms.put("canal", "22_00001-4"); +// terms.put("canalSecond", "22_00003-3"); +// CaseStatisticsBaseDTO caseStatisticsBaseDTO2 = mapper.statisticsBase(terms); +// statistics.setOttffNum(caseStatisticsBaseDTO2.getTotalNum()); +// terms.put("canalSecond", "22_00003-4"); +// CaseStatisticsBaseDTO caseStatisticsBaseDTO3 = mapper.statisticsBase(terms); +// statistics.setRmtjNum(caseStatisticsBaseDTO3.getTotalNum()); +// terms.put("canalSecond", "22_00003-6"); +// CaseStatisticsBaseDTO caseStatisticsBaseDTO4 = mapper.statisticsBase(terms); +// statistics.setXfNum(caseStatisticsBaseDTO4.getTotalNum()); +// terms.put("canalSecond", "22_00003-5"); +// CaseStatisticsBaseDTO caseStatisticsBaseDTO5 = mapper.statisticsBase(terms); +// statistics.setLdzcNum(caseStatisticsBaseDTO5.getTotalNum()); +// terms.put("canalSecond", "22_00003-1"); +// CaseStatisticsBaseDTO caseStatisticsBaseDTO6 = mapper.statisticsBase(terms); +// statistics.setTzfjwjfNum(caseStatisticsBaseDTO6.getTotalNum()); // 根据原始类型筛选条件计算总数和比率 // 注意:比率计算应该始终基于所有类型的总数,而不是选择的特定类型数量 - Integer allNum = statistics.getSysNum() + statistics.getOttffNum() + statistics.getRmtjNum() + statistics.getXfNum() + statistics.getLdzcNum() + statistics.getFjwjfNum(); + Integer allNum = statistics.getSysNum() + statistics.getOttffNum() + statistics.getRmtjNum() + statistics.getXfNum() + statistics.getLdzcNum() + statistics.getTzfjwjfNum(); statistics.setSysRate(BigDecimalUtil.integerDivideDelZero(statistics.getSysNum() * 100, allNum, 1)); statistics.setOttffRate(BigDecimalUtil.integerDivideDelZero(statistics.getOttffNum() * 100, allNum, 1)); statistics.setRmtjRate(BigDecimalUtil.integerDivideDelZero(statistics.getRmtjNum() * 100, allNum, 1)); statistics.setXfRate(BigDecimalUtil.integerDivideDelZero(statistics.getXfNum() * 100, allNum, 1)); statistics.setLdzcRate(BigDecimalUtil.integerDivideDelZero(statistics.getLdzcNum() * 100, allNum, 1)); - statistics.setFjwjfRate(BigDecimalUtil.integerDivideDelZero(statistics.getFjwjfNum() * 100, allNum, 1)); + statistics.setTzfjwjfRate(BigDecimalUtil.integerDivideDelZero(statistics.getTzfjwjfNum() * 100, allNum, 1)); statistics.setAllNum(allNum); - - // 重新计算地区统计(areaList),基于用户选择的类型 - // 清除之前的筛选条件 - terms.remove("canal"); - terms.remove("canalSecond"); - terms.remove("canalList"); - terms.remove("canalSecondNot"); - terms.remove("canalSecondAll"); - - // 恢复所有原始类型筛选条件进行地区统计 - for (String key : originalTypeTerms.keySet()) { - terms.put(key, originalTypeTerms.get(key)); - } - - // 从原有逻辑中获取区域相关变量 - String childAreaType = null; - List<Integer> childUnitGrades = new ArrayList<>(); - String childUnitGradeStr = null; - String unitGradeStr = null; - Boolean isLast = false; - List<Integer> unitGrades = new ArrayList<>(); - - if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) { - childAreaType = "5"; - childUnitGrades.add(5); - childUnitGradeStr = "5"; - unitGradeStr = "4"; - unitGrades.add(4); - isLast = true; - } else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) { - childAreaType = "4"; - childUnitGrades.add(4); - childUnitGradeStr = "4"; - unitGradeStr = "3"; - unitGrades.add(3); - } else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) { - childAreaType = "3"; - childUnitGrades.add(3); - childUnitGrades.add(4); - childUnitGradeStr = "3,4"; - unitGradeStr = "2"; - unitGrades.add(2); - } else { - childAreaType = "2"; - childUnitGrades.add(2); - childUnitGrades.add(3); - childUnitGrades.add(4); - childUnitGradeStr = "2,3,4"; - unitGradeStr = "1"; - unitGrades.add(1); - } - - // 重新计算地区统计 - List<CaseStatisticsAreaDTO> areaStatistics = new ArrayList<>(); - if (!isLast) { - terms.put("areaType", childAreaType); - terms.put("unitGrades", childUnitGrades); - areaStatistics = mapper.statisticsArea(terms); - if (ObjectUtils.isEmpty(areaStatistics)) { - areaStatistics = new ArrayList<>(); - } else { - for (CaseStatisticsAreaDTO areaDTO : areaStatistics) { - areaDTO.setAreaType(childAreaType); - areaDTO.setUnitGrades(childUnitGradeStr); - if ("4".equals(childAreaType)) { - areaDTO.setQueVillage(areaDTO.getAreaCode()); - } else if ("3".equals(childAreaType)) { - areaDTO.setQueRoad(areaDTO.getAreaCode()); - } else if ("2".equals(childAreaType)) { - areaDTO.setQueArea(areaDTO.getAreaCode()); - } - } - } - } - - // 本级区数据 - terms.put("areaType", areaType); - terms.put("unitGrades", unitGrades); - List<CaseStatisticsAreaDTO> allAreas = mapper.statisticsArea(terms); - CaseStatisticsAreaDTO allArea = new CaseStatisticsAreaDTO(); - if (ObjectUtils.isNotEmpty(allAreas)) { - allArea = allAreas.get(0); - } - terms.remove("unitGrades"); - allArea.setAreaName("本级"); - allArea.setAreaCode("0"); - allArea.setAreaType(areaType); - allArea.setUnitGrades(unitGradeStr); - if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) { - allArea.setQueVillage(terms.get("queVillage") + ""); - } - if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) { - allArea.setQueRoad(terms.get("queRoad") + ""); - } - if (ObjectUtils.isNotEmpty(terms.get("queArea"))) { - allArea.setQueArea(terms.get("queArea") + ""); - } - if (ObjectUtils.isNotEmpty(terms.get("queCity"))) { - allArea.setQueCity(terms.get("queCity") + ""); - } - - List<String> areaCodeList = new ArrayList<>(); - List<CaseStatisticsAreaDTO> areaList = new ArrayList<>(); - for (CaseStatisticsAreaDTO areaDTO : areaStatistics) { - if (ObjectUtils.isEmpty(areaDTO.getAreaCode())) { - allArea.setCaseNum(dellNull(areaDTO.getCaseNum()) + dellNull(allArea.getCaseNum())); - allArea.setResolveNum(dellNull(areaDTO.getResolveNum()) + dellNull(allArea.getResolveNum())); - allArea.setUnResolveNum(dellNull(areaDTO.getUnResolveNum()) + dellNull(allArea.getUnResolveNum())); - allArea.setResolveingNum(dellNull(areaDTO.getResolveingNum()) + dellNull(allArea.getResolveingNum())); - allArea.setRejectNum(dellNull(areaDTO.getRejectNum()) + dellNull(allArea.getRejectNum())); - } else { - areaList.add(areaDTO); - areaCodeList.add(areaDTO.getAreaCode()); - } - } - areaList.add(allArea); - - // 添加没有数据的区域(数量为0) - String areaCode = null; - if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) { - areaCode = terms.get("queVillage") + ""; - } else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) { - areaCode = terms.get("queRoad") + ""; - } else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) { - areaCode = terms.get("queArea") + ""; - } else { - areaCode = terms.get("queCity") != null ? terms.get("queCity") + "" : "440100"; - } - - List<QueAreaDTO> queArea = listAreaByType(areaCode); - for (QueAreaDTO caseAreaDTO : queArea) { - if (!areaCodeList.contains(caseAreaDTO.getAreaCode())) { - CaseStatisticsAreaDTO areaChild = new CaseStatisticsAreaDTO(); - areaChild.setAreaCode(caseAreaDTO.getAreaCode()); - areaChild.setAreaName(caseAreaDTO.getAreaName()); - areaChild.setCaseNum(0); - areaChild.setResolveNum(0); - areaChild.setUnResolveNum(0); - areaChild.setResolveingNum(0); - areaList.add(areaChild); - } - } - - if (ObjectUtils.isNotEmpty(areaList)) { - sortArea(areaList); - } - - // 更新statistics中的areaList - statistics.setAreaList(areaList); - return statistics; } - - // public CaseStatisticsBaseDTO ledger(Map<String, Object> terms, String userId) throws IOException { - // CaseStatisticsBaseDTO statistics = statistics(terms, userId); - // - // terms.put("statistics", "1"); - // //根据用户筛选区域范围 - // CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId); - // //目前没有村居数据,所以单位等级是4的也归集到3里面 - // String areaType = null; - // terms.remove("unitGrade"); - // terms.remove("canal"); - // if (ctUnitDTO.getUnitGrade().equals(1)) { - // terms.put("queCity", ctUnitDTO.getCity()); - // } else if (ctUnitDTO.getUnitGrade().equals(2)) { - // terms.put("queArea", ctUnitDTO.getArea()); - // } else if (ctUnitDTO.getUnitGrade().equals(3)) { - // terms.put("queRoad", ctUnitDTO.getRoad()); - // } else if (ctUnitDTO.getUnitGrade().equals(4)) { - // terms.put("queVillage", ctUnitDTO.getRoad()); - // } - // if (ObjectUtils.isNotEmpty(terms.get("queVillage"))) { - // terms.remove("queArea"); - // terms.remove("queCity"); - // terms.remove("queRoad"); - // areaType = "4"; - // } else if (ObjectUtils.isNotEmpty(terms.get("queRoad"))) { - // terms.remove("queArea"); - // terms.remove("queCity"); - // areaType = "3"; - // } else if (ObjectUtils.isNotEmpty(terms.get("queArea"))) { - // terms.remove("queCity"); - // areaType = "2"; - // } else { - // areaType = "1"; - // } - // //基础数据统计 - // terms.remove("canalSecond"); - // terms.remove("canal"); - // terms.put("areaType", areaType); - // terms.put("canalList", Arrays.asList("22_00001-1", "22_00001-2", "22_00001-3")); - // CaseStatisticsBaseDTO caseStatisticsBaseDTO1 = mapper.statisticsBase(terms); - // statistics.setSysNum(caseStatisticsBaseDTO1.getTotalNum()); - // terms.remove("canalList"); - // terms.put("canal", "22_00001-4"); - // terms.put("canalSecond", "22_00003-3"); - // CaseStatisticsBaseDTO caseStatisticsBaseDTO2 = mapper.statisticsBase(terms); - // statistics.setOttffNum(caseStatisticsBaseDTO2.getTotalNum()); - // terms.put("canalSecond", "22_00003-4"); - // CaseStatisticsBaseDTO caseStatisticsBaseDTO3 = mapper.statisticsBase(terms); - // statistics.setRmtjNum(caseStatisticsBaseDTO3.getTotalNum()); - // terms.put("canalSecond", "22_00003-6"); - // CaseStatisticsBaseDTO caseStatisticsBaseDTO4 = mapper.statisticsBase(terms); - // statistics.setXfNum(caseStatisticsBaseDTO4.getTotalNum()); - // terms.put("canalSecond", "22_00003-5"); - // CaseStatisticsBaseDTO caseStatisticsBaseDTO5 = mapper.statisticsBase(terms); - // statistics.setLdzcNum(caseStatisticsBaseDTO5.getTotalNum()); - // terms.put("canalSecond", "22_00003-1"); - // CaseStatisticsBaseDTO caseStatisticsBaseDTO6 = mapper.statisticsBase(terms); - // statistics.setFjwjfNum(caseStatisticsBaseDTO6.getTotalNum()); - // - // Integer allNum = statistics.getSysNum() + statistics.getOttffNum() + statistics.getRmtjNum() + statistics.getXfNum() + statistics.getLdzcNum() + statistics.getFjwjfNum(); - // statistics.setSysRate(BigDecimalUtil.integerDivideDelZero(statistics.getSysNum() * 100, allNum, 1)); - // statistics.setOttffRate(BigDecimalUtil.integerDivideDelZero(statistics.getOttffNum() * 100, allNum, 1)); - // statistics.setRmtjRate(BigDecimalUtil.integerDivideDelZero(statistics.getRmtjNum() * 100, allNum, 1)); - // statistics.setXfRate(BigDecimalUtil.integerDivideDelZero(statistics.getXfNum() * 100, allNum, 1)); - // statistics.setLdzcRate(BigDecimalUtil.integerDivideDelZero(statistics.getLdzcNum() * 100, allNum, 1)); - // statistics.setFjwjfRate(BigDecimalUtil.integerDivideDelZero(statistics.getFjwjfNum() * 100, allNum, 1)); - // statistics.setAllNum(allNum); - // return statistics; - // } /** * 按系列案编号查询 -- Gitblit v1.8.0