广州市综治平台后端
huangh
2025-06-16 7f5c97eb5f34d31f2d73d846ab6fd2d36a9145c5
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);
@@ -2526,7 +2545,9 @@
            } 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());
@@ -2540,8 +2561,8 @@
                    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();
@@ -2620,12 +2641,12 @@
                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());
                }
//                //获取一级类型
//                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())) {
@@ -2634,7 +2655,12 @@
                }
                //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");
@@ -2652,7 +2678,7 @@
                if (StringUtils.isNotBlank(registerSaveDTO.getTcqk())) {
                    caseInfoUnfold.setTcqk(registerSaveDTO.getTcqk());
                }
                caseInfoUnfold.setCreateTime(nowDate);
                caseInfoUnfold.setCreateTime(caseInfo.getCreateTime());
                caseInfoUnfold.setUpdateTime(nowDate);
                caseInfoUnfoldService.save(caseInfoUnfold);
                // 自动调度流程