From f7dd6c04223ea30a535e7f340d620435102aad8b Mon Sep 17 00:00:00 2001
From: zhouxiantao <1026371446@qq.com>
Date: Thu, 19 Sep 2024 17:32:43 +0800
Subject: [PATCH] 纠纷态势分析

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java |  136 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 136 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 1feada6..e26abb9 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
@@ -28,6 +28,7 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Page;
@@ -891,4 +892,139 @@
         }
         return new PageImpl<CasePageDTO>(content, page, total);
     }
+
+    public CaseStatisticsBaseDTO statistics(Map<String, Object> terms){
+        //基础数据统计
+        CaseStatisticsBaseDTO caseStatisticsBaseDTO = mapper.statisticsBase(terms);
+        Integer baseTotalNum = dellNull(caseStatisticsBaseDTO.getResolveNum()) + dellNull(caseStatisticsBaseDTO.getUnResolveNum())+ dellNull(caseStatisticsBaseDTO.getResolveingNum());
+        caseStatisticsBaseDTO.setResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getResolveNum()*100, baseTotalNum,1));
+        caseStatisticsBaseDTO.setUnResolveRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsBaseDTO.getUnResolveNum()*100, baseTotalNum,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));
+        //区域数据统计
+        terms.put("isArea","1");
+        List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS = mapper.statisticsArea(terms);
+        if(ObjectUtils.isEmpty(caseStatisticsAreaDTOS)){
+            caseStatisticsAreaDTOS = new ArrayList<>();
+        }
+        CaseStatisticsAreaDTO allArea = new CaseStatisticsAreaDTO();
+        allArea.setAreaName("本级");
+        allArea.setAreaCode("1");
+        for (CaseStatisticsAreaDTO caseStatisticsAreaDTO : caseStatisticsAreaDTOS) {
+            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()));
+        }
+        caseStatisticsAreaDTOS.add(allArea);
+        if(ObjectUtils.isNotEmpty(caseStatisticsAreaDTOS)){
+            sortArea(caseStatisticsAreaDTOS);
+        }
+        caseStatisticsBaseDTO.setAreaList(caseStatisticsAreaDTOS);
+        terms.remove("isArea");
+        //纠纷类型统计
+        List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsType(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 > 5){
+                otherCaseNum = otherCaseNum + dellNull(caseStatisticsTypeDTO.getCaseNum());
+            }else{
+                typeList.add(caseStatisticsTypeDTO);
+            }
+            i++;
+        }
+        for (CaseStatisticsTypeDTO caseStatisticsTypeDTO : typeList) {
+            caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum()*100, typeTotalNum,1));
+        }
+        CaseStatisticsTypeDTO caseStatisticsTypeDTO = new CaseStatisticsTypeDTO();
+        caseStatisticsTypeDTO.setCaseTypeName("其他");
+        caseStatisticsTypeDTO.setCaseNum(otherCaseNum);
+        caseStatisticsTypeDTO.setCaseRate(BigDecimalUtil.integerDivideDelZero(caseStatisticsTypeDTO.getCaseNum()*100, typeTotalNum,1));
+        typeList.add(caseStatisticsTypeDTO);
+        caseStatisticsBaseDTO.setTypeList(typeList);
+        //事项来源
+        terms.put("canal",CaseBaseConstsEnum.CASE_CANAL_1.getIndex());
+        CaseStatisticsSourceDTO oneSource = mapper.statisticsSource(terms);
+        oneSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_1.getDes());
+        terms.put("canal",CaseBaseConstsEnum.CASE_CANAL_2.getIndex());
+        CaseStatisticsSourceDTO twoSource = mapper.statisticsSource(terms);
+        twoSource.setCanalName(CaseBaseConstsEnum.CASE_CANAL_2.getDes());
+
+        Integer sourceTotalNum = dellNull(oneSource.getCaseNum()) + dellNull(oneSource.getCaseNum());
+        oneSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(oneSource.getCaseNum()*100, sourceTotalNum,1));
+        oneSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(oneSource.getResolveNum()*100, oneSource.getCaseNum(),1));
+        twoSource.setCaseRate(BigDecimalUtil.integerDivideDelZero(twoSource.getCaseNum()*100, sourceTotalNum,1));
+        twoSource.setResolveRate(BigDecimalUtil.integerDivideDelZero(twoSource.getResolveNum()*100, twoSource.getCaseNum(),1));
+
+        CaseStatisticsSourceDTO threeSource = new CaseStatisticsSourceDTO();
+        threeSource.setCanalName("自行排查");
+        threeSource.setResolveRate("0");
+        threeSource.setCaseRate("0");
+        CaseStatisticsSourceDTO fourSource = new CaseStatisticsSourceDTO();
+        fourSource.setCanalName("协同推送");
+        fourSource.setResolveRate("0");
+        fourSource.setCaseRate("0");
+        caseStatisticsBaseDTO.setOneSource(oneSource);
+        caseStatisticsBaseDTO.setTwoSource(twoSource);
+        caseStatisticsBaseDTO.setThreeSource(threeSource);
+        caseStatisticsBaseDTO.setFourSource(fourSource);
+
+        //案件集合
+        Sort sort = Sort.by(Sort.Direction.DESC, "a.create_time");
+        PageRequest pageRequest = PageRequest.of(0, 5, sort);
+        Page<CasePageDTO> casePageDTOS = pageQueryAll(pageRequest, terms);
+        if(ObjectUtils.isNotEmpty(casePageDTOS.getContent())){
+            caseStatisticsBaseDTO.setCaseList(casePageDTOS.getContent());
+        }else{
+            caseStatisticsBaseDTO.setCaseList(new ArrayList<>());
+        }
+        return caseStatisticsBaseDTO;
+    }
+
+    public List<CaseStatisticsTypeDTO> sortType(List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS){
+        caseStatisticsTypeDTOS.sort((o1, o2)->{
+            Integer totalScore1 = o1.getCaseNum();
+            Integer totalScore2 = o2.getCaseNum();
+            if(totalScore1 < totalScore2) {
+                return 1;
+            }else if (totalScore1.equals(totalScore2)){
+                return 0;
+            }else{
+                return -1;
+            }
+        });
+        return caseStatisticsTypeDTOS;
+    }
+
+    public List<CaseStatisticsAreaDTO> sortArea(List<CaseStatisticsAreaDTO> caseStatisticsAreaDTOS){
+        caseStatisticsAreaDTOS.sort((o1, o2)->{
+            Integer totalScore1 = Integer.valueOf(o1.getAreaCode());
+            Integer totalScore2 = Integer.valueOf(o2.getAreaCode());
+            if(totalScore1 > totalScore2) {
+                return 1;
+            }else if (totalScore1.equals(totalScore2)){
+                return 0;
+            }else{
+                return -1;
+            }
+        });
+        return caseStatisticsAreaDTOS;
+    }
+
+    public Integer dellNull(Integer number){
+        if(ObjectUtils.isEmpty(number)){
+            return 0;
+        }
+        return number;
+    }
 }

--
Gitblit v1.8.0