From 7f5c97eb5f34d31f2d73d846ab6fd2d36a9145c5 Mon Sep 17 00:00:00 2001 From: huangh <hshgjzd5@163.com> Date: Mon, 16 Jun 2025 10:03:57 +0800 Subject: [PATCH] feat: 解纷台账添加纠纷过程统计字段 --- dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseInfoMapper.java | 15 +++++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsBaseDTO.java | 24 +++++-- dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml | 23 +++++++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java | 63 +++++++++++++------- 4 files changed, 95 insertions(+), 30 deletions(-) diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseInfoMapper.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseInfoMapper.java index 8d30bc6..8589b5e 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseInfoMapper.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/CaseInfoMapper.java @@ -143,6 +143,21 @@ CaseStatisticsBaseDTO statisticsBase(@Param("terms") Map<String, Object> terms); /** + * 统计分析(基础)新版 + * 这通常用于获取基础的案例统计数据,如总数、化解成功数、化解不成功数、化解中数等 + * 新版统计逻辑: + * - 化解中包括待受理(info_process <= 2) + * - 化解成功(info_process = 3 且 medi_result = '22_00025-1') + * - 化解不成功(info_process = 3 且 medi_result = '22_00025-2') + * - 不予受理(info_process = 4) + * + * @param terms 包含统计条件的键值对,如时间范围、地区等 + * @return 返回一个对象,包含基础的案例统计数据 + */ + CaseStatisticsBaseDTO statisticsBaseProcess(@Param("terms") Map<String, Object> terms); + + + /** * 统计一级分类下的案例类型数据 * 这通常用于获取最顶层的案例类型分布 * diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml index 12315b8..d6d9f03 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml @@ -1106,6 +1106,29 @@ LEFT JOIN dyh_ct_unit c ON b.belong_unit_id = c.id <include refid="where-part-all"/> </select> + + <!-- 统计分析(基础)-统计调解过程 --> + <select id="statisticsBaseProcess" resultType="cn.huge.module.cases.domain.dto.CaseStatisticsBaseDTO"> + SELECT + count(1) as totalNum, + sum(case when b.medi_result = '22_00025-1' and a.info_process = 3 then 1 else 0 end) as resolveNum, + sum(case when a.info_process <![CDATA[ < ]]> 3 then 1 else 0 end) as resolveingNum, + sum(case when b.medi_result = '22_00025-2' and a.info_process = 3 then 1 else 0 end) as unResolveNum, + sum(case when a.case_level = 1 then 1 else 0 end) as oneLevelNum, + sum(case when a.case_level = 2 then 1 else 0 end) as twoLevelNum, + sum(case when a.case_level = 3 then 1 else 0 end) as threeLevelNum, + sum(case when a.info_process = 2 then 1 + when a.info_process = 1 then 1 else 0 end) as processNum, + sum(case when a.info_process = 3 and b.medi_result = '22_00025-1' then 1 else 0 end) as finishNum, + sum(case when a.info_process = 4 then 1 else 0 end) as rejectNum, + sum(case when a.info_process = 3 and b.medi_result = '22_00025-2' then 1 else 0 end) as failNum + FROM + dyh_case_info a + inner JOIN dyh_case_info_unfold b on a.id = b.id + LEFT JOIN dyh_ct_unit c ON b.belong_unit_id = c.id + <include refid="where-part-all"/> + </select> + <!-- 统计分析(类型) --> <select id="statisticsTypeFirst" resultType="cn.huge.module.cases.domain.dto.CaseStatisticsTypeDTO"> SELECT diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsBaseDTO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsBaseDTO.java index 1e0b05b..b560082 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsBaseDTO.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsBaseDTO.java @@ -10,15 +10,23 @@ @Data public class CaseStatisticsBaseDTO { private Integer totalNum=0;//总记录数 - private Integer processNum=0;//办理中数量 - private Integer finishNum=0;//已结案数量 + // private Integer processNum=0;//办理中数量 + // private Integer finishNum=0;//已结案数量 + // private Integer rejectNum=0;//不予受理数量 + // private Integer resolveNum=0;//化解成功数量 + // private String resolveRate;//化解成功率 + // private Integer unResolveNum=0;//化解不成功数量 + // private String unResolveRate;//化解不成功率 + // private Integer resolveingNum=0;//化解中数量 + // private String resolveingRate;//化解中率 private Integer rejectNum=0;//不予受理数量 - private Integer resolveNum=0;//化解成功数量 - private String resolveRate;//化解成功率 - private Integer unResolveNum=0;//化解不成功数量 - private String unResolveRate;//化解不成功率 - private Integer resolveingNum=0;//化解中数量 - private String resolveingRate;//化解中率 + private String rejectRate;//不予受理率 + private Integer processNum=0;//化解中数量 + private String processRate;//化解中率 + private Integer finishNum=0;//化解成功数量 + private String finishRate;//化解成功率 + private Integer failNum=0;//化解不成功数量 + private String failRate;//化解不成功率 private Integer oneLevelNum=0;//1级事件数量 private Integer twoLevelNum=0;//2级事件数量 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 47b46d7..fe1e6ae 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 @@ -1307,6 +1307,31 @@ 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; + } + /** * 纠纷态势 @@ -1391,16 +1416,8 @@ } //基础数据统计 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) { @@ -2199,20 +2216,22 @@ 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.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); -- Gitblit v1.8.0