| | |
| | | caseInfo.setCaseNo(utilsClient.createCaseNo(ctUnitDTO.getArea())); |
| | | caseInfo.setVisitWay(CaseBaseConstsEnum.getVisitWayByCanal(caseInfo.getCanal()).getIndex()); |
| | | caseInfo.setVisitWayName(CaseBaseConstsEnum.getVisitWayByCanal(caseInfo.getCanal()).getDes()); |
| | | if (caseInfo.getCanal().equals(CaseBaseConstsEnum.CASE_CANAL_3.getIndex())) { |
| | | caseInfo.setCanalSecond(CaseBaseConstsEnum.CASE_CANAL_SECOND_8.getIndex()); |
| | | caseInfo.setCanalSecondName(CaseBaseConstsEnum.CASE_CANAL_SECOND_8.getDes()); |
| | | } |
| | | //默认小程序可见 |
| | | if (ObjectUtils.isNotEmpty(caseInfo.getCanal())) { |
| | | if (CaseBaseConstsEnum.CASE_CANAL_1.getIndex().equals(caseInfo.getCanal())) { |
| | |
| | | } |
| | | if (ObjectUtils.isNotEmpty(content)) { |
| | | for (CasePageDTO casePageDTO : content) { |
| | | if (CaseBaseConstsEnum.CASE_CANAL_4.getIndex().equals(casePageDTO.getCanal())) { |
| | | if (StringUtils.isNotEmpty(casePageDTO.getCanalSecondName())) { |
| | | casePageDTO.setCanalName(casePageDTO.getCanalName() + "-" + casePageDTO.getCanalSecondName()); |
| | | } |
| | | StringBuffer sb = new StringBuffer(); |
| | |
| | | return new PageImpl<CasePageDTO>(content, page, total); |
| | | } |
| | | |
| | | /** |
| | | * 统计调解过程 |
| | | * 计算案件的调解过程相关统计数据,包括不予受理率、化解中率、化解成功率、化解不成功率等 |
| | | * |
| | | * @param terms 统计条件 |
| | | * @return 包含调解过程统计数据的DTO对象 |
| | | */ |
| | | public CaseStatisticsBaseDTO statisticsProcess(Map<String, Object> terms) { |
| | | CaseStatisticsBaseDTO caseStatisticsBaseDTO = mapper.statisticsBaseProcess(terms); |
| | | Integer baseTotalNum = dellNull(caseStatisticsBaseDTO.getRejectNum()) + dellNull(caseStatisticsBaseDTO.getProcessNum()) + dellNull(caseStatisticsBaseDTO.getFinishNum()) + dellNull(caseStatisticsBaseDTO.getFailNum()); |
| | | caseStatisticsBaseDTO.setRejectRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getRejectNum() * 100, baseTotalNum, 1)); |
| | | caseStatisticsBaseDTO.setProcessRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getProcessNum() * 100, baseTotalNum, 1)); |
| | | caseStatisticsBaseDTO.setFinishRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getFinishNum() * 100, baseTotalNum, 1)); |
| | | caseStatisticsBaseDTO.setFailRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getFailNum() * 100, baseTotalNum, 1)); |
| | | // 如果 baseTotalNum为0 设置 总数为0 |
| | | caseStatisticsBaseDTO.setTotalNum(baseTotalNum); |
| | | |
| | | 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)); |
| | | |
| | | return caseStatisticsBaseDTO; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 纠纷态势 |
| | |
| | | } |
| | | //基础数据统计 |
| | | 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)); |
| | | // 调用统计调解过程的方法 |
| | | CaseStatisticsBaseDTO caseStatisticsBaseDTO = statisticsProcess(terms); |
| | | //区域数据统计 |
| | | List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS = new ArrayList<>(); |
| | | if (!isLast) { |
| | |
| | | } |
| | | 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)); |
| | |
| | | } 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)); |
| | |
| | | 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"); |
| | | //根据用户筛选区域范围 |
| | |
| | | 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)); |
| | | } |
| | | |
| | | // 重新获取纠纷类型统计(基于完整的选择类型条件) |
| | | List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsTypeFirst(terms); |
| | | |
| | | // 如果基于选择类型的查询结果为空,则使用全量数据进行纠纷类型统计 |
| | | if (ObjectUtils.isEmpty(caseStatisticsTypeDTOS)) { |
| | | // 临时移除所有类型筛选条件,获取全量纠纷类型统计 |
| | | terms.remove("canal"); |
| | | terms.remove("canalSecond"); |
| | | terms.remove("canalList"); |
| | | terms.remove("canalSecondNot"); |
| | | terms.remove("canalSecondAll"); |
| | | 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; |
| | | // } |
| | | |
| | | /** |
| | | * 按系列案编号查询 |
| | |
| | | } else { |
| | | terms.put("queryType", 3); |
| | | } |
| | | log.info("xsd:{}", terms); |
| | | CtUnitDTO ctUnitDTO = mapper.getUnitByGridCode(terms); |
| | | log.info("xsd:ctUnitDTO{}", ctUnitDTO); |
| | | if (ObjectUtils.isNotEmpty(ctUnitDTO)) { |
| | | if (StringUtils.isNotBlank(ctUnitDTO.getCity()) && StringUtils.isNotBlank(ctUnitDTO.getCityName())) { |
| | | registerSaveDTO.setQueCity(ctUnitDTO.getCity()); |
| | |
| | | registerSaveDTO.setQueRoad(ctUnitDTO.getRoad()); |
| | | registerSaveDTO.setQueRoadName(ctUnitDTO.getRoadName()); |
| | | } |
| | | registerSaveDTO.setWantUnitId(ctUnitDTO.getId()); |
| | | registerSaveDTO.setWantUnitName(ctUnitDTO.getUnitName()); |
| | | // registerSaveDTO.setWantUnitId(ctUnitDTO.getId()); |
| | | // registerSaveDTO.setWantUnitName(ctUnitDTO.getUnitName()); |
| | | |
| | | //网格上报的事件时间一般在凌晨,导致北京时间是昨天,所以+8小时还原为北京时间,确保在同一天内 |
| | | Date nowDate1 = DateUtils.getNowDate(); |
| | |
| | | |
| | | // 获取调解案号 |
| | | caseInfo.setCaseNo(utilsClient.createCaseNo(ctUnitDTO.getArea())); |
| | | caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_3.getIndex()); |
| | | caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_3.getDes()); |
| | | caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_4.getIndex()); |
| | | caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_4.getDes()); |
| | | |
| | | caseInfo.setCaseLevel(3); |
| | | //获取一级类型 |
| | | SyCause syCause = sysClient.getParentCaseTypeById(caseInfo.getCaseType()); |
| | | if (ObjectUtils.isNotEmpty(syCause)) { |
| | | caseInfo.setCaseTypeFirst(syCause.getId()); |
| | | caseInfo.setCaseTypeFirstName(syCause.getName()); |
| | | caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_4.getIndex()); |
| | | caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_4.getDes()); |
| | | if (StringUtils.isEmpty(caseInfo.getCanal())) { |
| | | caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_4.getIndex()); |
| | | caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_4.getDes()); |
| | | } |
| | | caseInfo.setCaseLevel(3); |
| | | // //获取一级类型 |
| | | // SyCause syCause = sysClient.getParentCaseTypeById(caseInfo.getCaseType()); |
| | | // if (ObjectUtils.isNotEmpty(syCause)) { |
| | | // caseInfo.setCaseTypeFirst(syCause.getId()); |
| | | // caseInfo.setCaseTypeFirstName(syCause.getName()); |
| | | // } |
| | | //默认小程序可见 |
| | | if (ObjectUtils.isNotEmpty(caseInfo.getCanal())) { |
| | | if (CaseBaseConstsEnum.CASE_CANAL_1.getIndex().equals(caseInfo.getCanal())) { |
| | |
| | | } |
| | | //todo case_title生成、经纬度转换 |
| | | caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1); |
| | | caseInfo.setCreateTime(nowDate); |
| | | if (registerSaveDTO.getCreateTime() != null) { |
| | | caseInfo.setCreateTime(registerSaveDTO.getCreateTime()); |
| | | } else { |
| | | caseInfo.setCreateTime(nowDate); |
| | | } |
| | | |
| | | caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0); |
| | | //默认添加省市 |
| | | caseInfo.setQueProv("19"); |
| | |
| | | if (StringUtils.isNotBlank(registerSaveDTO.getTcqk())) { |
| | | caseInfoUnfold.setTcqk(registerSaveDTO.getTcqk()); |
| | | } |
| | | caseInfoUnfold.setCreateTime(nowDate); |
| | | caseInfoUnfold.setCreateTime(caseInfo.getCreateTime()); |
| | | caseInfoUnfold.setUpdateTime(nowDate); |
| | | caseInfoUnfoldService.save(caseInfoUnfold); |
| | | // 自动调度流程 |