From 93430938a25ab3d4e218a2198ae1b24a516f6382 Mon Sep 17 00:00:00 2001
From: zhouxiantao <1026371446@qq.com>
Date: Tue, 17 Jun 2025 17:31:15 +0800
Subject: [PATCH] freat:粤政易相关代码

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java |  172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 172 insertions(+), 0 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 fe1e6ae..bd84d87 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;
@@ -1418,6 +1419,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) {
@@ -1692,6 +1706,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() {
         Map<String, String> map = new HashMap<>();
         map.put("越秀区", "2");

--
Gitblit v1.8.0