From 01a31c6c5ffe0d430b5c47af431502aa86153f66 Mon Sep 17 00:00:00 2001
From: wangwh <2397901735@qq.com>
Date: Fri, 20 Sep 2024 18:04:12 +0800
Subject: [PATCH] 督办bug修复

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java |  403 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 312 insertions(+), 91 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 427e806..2778806 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
@@ -4,6 +4,7 @@
 import cn.huge.base.common.utils.*;
 import cn.huge.module.cases.domain.dto.*;
 
+import cn.huge.module.cases.domain.json.CaseAreaDTO;
 import cn.huge.module.cases.domain.po.CaseAgent;
 import cn.huge.module.cases.domain.po.CaseInfoUnfold;
 import cn.huge.module.cases.domain.po.CasePerson;
@@ -24,10 +25,12 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.collections.CollectionUtils;
 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;
@@ -35,6 +38,8 @@
 import org.springframework.data.domain.PageRequest;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -92,6 +97,20 @@
         }catch (Exception e){
             log.error("[CaseInfoService.updateCaseInfo]调用失败,异常信息:"+e, e);
             throw new ServiceException("CaseInfoService.updateCaseInfo", e);
+        }
+    }
+
+    /**
+     * 批量更新对象
+     * @param entity 对象
+     * @param caseIdList
+     */
+    public void updateCaseInfoList(CaseInfo entity, List<String> caseIdList){
+        try{
+            mapper.updateCaseInfoList(entity, caseIdList);
+        }catch (Exception e){
+            log.error("[CaseInfoService.updateCaseInfoList]调用失败,异常信息:"+e, e);
+            throw new ServiceException("CaseInfoService.updateCaseInfoList", e);
         }
     }
 
@@ -213,6 +232,11 @@
                 caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
                 caseInfo.setCreateTime(nowDate);
                 caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
+                //默认添加省市
+                caseInfo.setQueProv("19");
+                caseInfo.setQueProvName("广东省");
+                caseInfo.setQueCity("1601");
+                caseInfo.setQueCityName("广州市");
                 // 删除草稿案件
                 if(1 == registerSaveDTO.getIsDraft() ){
                     draftInfoService.removeDraftInfo(registerSaveDTO.getId());
@@ -229,7 +253,7 @@
                 // 判断是否自行受理
                 if(1 == registerSaveDTO.getIsSelfAccept()){
                     // 自行受理流程
-                    caseTaskService.webStartFlowZXSL(caseInfo, loginUser);
+                     return caseTaskService.webStartFlowZXSL(caseInfo, loginUser);
                 }else {
                     // 自动调度流程
                     caseTaskService.webStartFlowLFDJ(caseInfo);
@@ -527,100 +551,108 @@
      * @return String 纠纷编号
      */
     public String caseRegisterWechat(RegisterSaveDTO registerSaveDTO, String userId){
-        try {
-            // 获取当前登录用户
-            PaUserDTO loginUser = custClient.paclientGetUser(userId);
-            if(ObjectUtils.isEmpty(registerSaveDTO.getCustId())){
-                registerSaveDTO.setCustId(loginUser.getCustId());
-            }
+        // 获取当前登录用户
+        PaUserDTO loginUser = custClient.paclientGetUser(userId);
+        if(ObjectUtils.isEmpty(registerSaveDTO.getCustId())){
+            registerSaveDTO.setCustId(loginUser.getCustId());
+        }
 
-            Date nowDate = DateUtils.getNowDate();
-            registerSaveDTO.setUpdateTime(nowDate);
+        Date nowDate = DateUtils.getNowDate();
+        registerSaveDTO.setUpdateTime(nowDate);
 
-            CaseInfo caseInfo = new CaseInfo();
-            CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
-            BeanUtils.copyProperties(registerSaveDTO, caseInfo);
-            if(ObjectUtils.isEmpty(caseInfo.getId())){
-                caseInfo.setId(utilsClient.getNewTimeCaseId());
-            }
+        CaseInfo caseInfo = new CaseInfo();
+        CaseInfoUnfold caseInfoUnfold = new CaseInfoUnfold();
+        BeanUtils.copyProperties(registerSaveDTO, caseInfo);
+        if(ObjectUtils.isEmpty(caseInfo.getId())){
+            caseInfo.setId(utilsClient.getNewTimeCaseId());
+        }
 //            caseInfo.setInputUnitId(loginUser.getUnitId());
 //            caseInfo.setInputUnitName(loginUser.getUnitName());
-            caseInfo.setInputUserId(loginUser.getId());
-            caseInfo.setInputUserName(loginUser.getTrueName());
-            caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
-            caseInfo.setCreateTime(nowDate);
-            caseInfo.setUpdateTime(nowDate);
-            caseInfo.setVisitTime(nowDate);
-            caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
-            //坐标转换
-            if(ObjectUtils.isNotEmpty(caseInfo.getLat()) && ObjectUtils.isNotEmpty(caseInfo.getLng())){
-                PointXY pointXY = MapUtils.gcj02tobd09(Double.valueOf(caseInfo.getLng()), Double.valueOf(caseInfo.getLat()));
-                caseInfo.setLat(pointXY.getLat()+"");
-                caseInfo.setLng(pointXY.getLon()+"");
-            }
-            //todo case_title生成
-            caseInfo.setCaseRef(utilsClient.createCaseRef());
+        caseInfo.setInputUserId(loginUser.getId());
+        caseInfo.setInputUserName(loginUser.getTrueName());
+        caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
+        //默认添加省市
+        caseInfo.setQueProv("19");
+        caseInfo.setQueProvName("广东省");
+        caseInfo.setQueCity("1601");
+        caseInfo.setQueCityName("广州市");
 
-            // 为了演示先兼容小程序没属地问题,写死属地
-            if (ObjectUtils.isEmpty(caseInfo.getQueProv())) {
-                caseInfo.setQueProv("19");
-                caseInfo.setQueProvName("广东");
-                caseInfo.setQueCity("1601");
-                caseInfo.setQueCityName("广州市");
-                caseInfo.setQueArea("50258");
-                caseInfo.setQueAreaName("白云区");
-                caseInfo.setQueRoad("62857");
-                caseInfo.setQueRoadName("新市街道");
-
-                // 根据经纬度查询问题属地
-//                QueAddrBaseDTO queAddrBaseDTO = sysClient.getQueAddrByBaiduiLngLat(caseInfo.getLng(), caseInfo.getLat());
-//                caseInfo.setQueProv(queAddrBaseDTO.getQueProv());
-//                caseInfo.setQueProvName(queAddrBaseDTO.getQueProvName());
-//                caseInfo.setQueCity(queAddrBaseDTO.getQueCity());
-//                caseInfo.setQueCityName(queAddrBaseDTO.getQueCityName());
-//                caseInfo.setQueArea(queAddrBaseDTO.getQueArea());
-//                caseInfo.setQueAreaName(queAddrBaseDTO.getQueAreaName());
-//                caseInfo.setQueRoad(queAddrBaseDTO.getQueRoad());
-//                caseInfo.setQueRoadName(queAddrBaseDTO.getQueRoadName());
-            }
-            caseInfoUnfold.setId(caseInfo.getId());
-            caseInfoUnfold.setCreateTime(nowDate);
-            caseInfoUnfold.setUpdateTime(nowDate);
-
-            StringBuffer plaintiffs = new StringBuffer();
-            StringBuffer defendants = new StringBuffer();
-            StringBuffer pagents = new StringBuffer();
-            StringBuffer dagents = new StringBuffer();
-            // 常规登记-保存当事人
-            int peopleNum = this.saveCasePersonWechat(registerSaveDTO, plaintiffs, pagents, defendants, dagents,loginUser);
-            caseInfo.setVisitPeopleNum(peopleNum);
-            caseInfo.setPlaintiffs(plaintiffs.toString());
-            caseInfo.setPagents(pagents.toString());
-            caseInfo.setDefendants(defendants.toString());
-            caseInfo.setDagents(dagents.toString());
-
-            //todo case_title生成
-            caseInfo.setCaseTitle(this.createCaseTitle(plaintiffs.toString(), defendants.toString(), caseInfo.getCaseTypeName()));
-
-            caseInfo.setInfoProcess(CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_1.getIndex());
-            caseInfo.setInfoProcessName(CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_1.getDes());
-            caseInfo.setProcess(CaseProcessBaseConstsEnum.CASE_PROCESS_1.getIndex());
-            caseInfo.setProcessName(CaseProcessBaseConstsEnum.CASE_PROCESS_1.getDes());
-            caseInfo.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex());
-            caseInfo.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.getDes());
-            caseInfo.setCaseLevel(3);
-            caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_2.getIndex());
-            caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_2.getDes());
-
-            this.saveOrUpdate(caseInfo);
-
-            // 启动工作流-自动调度流程
-            caseTaskService.webStartFlowLFDJ(caseInfo);
-            return registerSaveDTO.getId();
-        }catch (Exception e){
-            log.error("service方法[CaseInfoService.caseRegisterWechat]调用异常:"+e, e);
-            throw new ServiceException("CaseInfoService.caseRegisterWechat", e);
+        caseInfo.setCreateTime(nowDate);
+        caseInfo.setUpdateTime(nowDate);
+        caseInfo.setVisitTime(nowDate);
+        caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0);
+        //坐标转换
+        if(ObjectUtils.isNotEmpty(caseInfo.getLat()) && ObjectUtils.isNotEmpty(caseInfo.getLng())){
+            PointXY pointXY = MapUtils.gcj02tobd09(Double.valueOf(caseInfo.getLng()), Double.valueOf(caseInfo.getLat()));
+            caseInfo.setLat(pointXY.getLat()+"");
+            caseInfo.setLng(pointXY.getLon()+"");
         }
+        //todo case_title生成
+        caseInfo.setCaseRef(utilsClient.createCaseRef());
+
+        // 为了演示先兼容小程序没属地问题,写死属地
+        if (ObjectUtils.isEmpty(caseInfo.getQueProv())) {
+//                caseInfo.setQueProv("19");
+//                caseInfo.setQueProvName("广东");
+//                caseInfo.setQueCity("1601");
+//                caseInfo.setQueCityName("广州市");
+//                caseInfo.setQueArea("50258");
+//                caseInfo.setQueAreaName("白云区");
+//                caseInfo.setQueRoad("62857");
+//                caseInfo.setQueRoadName("新市街道");
+
+            // 根据经纬度查询问题属地
+            QueAddrBaseDTO queAddrBaseDTO = sysClient.getQueAddrByBaiduiLngLat(caseInfo.getLng(), caseInfo.getLat());
+            caseInfo.setQueProv(queAddrBaseDTO.getQueProv());
+            caseInfo.setQueProvName(queAddrBaseDTO.getQueProvName());
+            caseInfo.setQueCity(queAddrBaseDTO.getQueCity());
+            caseInfo.setQueCityName(queAddrBaseDTO.getQueCityName());
+            caseInfo.setQueArea(queAddrBaseDTO.getQueArea());
+            caseInfo.setQueAreaName(queAddrBaseDTO.getQueAreaName());
+            caseInfo.setQueRoad(queAddrBaseDTO.getQueRoad());
+            caseInfo.setQueRoadName(queAddrBaseDTO.getQueRoadName());
+        }
+        caseInfoUnfold.setId(caseInfo.getId());
+        caseInfoUnfold.setCreateTime(nowDate);
+        caseInfoUnfold.setUpdateTime(nowDate);
+
+        StringBuffer plaintiffs = new StringBuffer();
+        StringBuffer defendants = new StringBuffer();
+        StringBuffer pagents = new StringBuffer();
+        StringBuffer dagents = new StringBuffer();
+        // 常规登记-保存当事人
+        int peopleNum = this.saveCasePersonWechat(registerSaveDTO, plaintiffs, pagents, defendants, dagents,loginUser);
+        caseInfo.setVisitPeopleNum(peopleNum);
+        caseInfo.setPlaintiffs(plaintiffs.toString());
+        caseInfo.setPagents(pagents.toString());
+        caseInfo.setDefendants(defendants.toString());
+        caseInfo.setDagents(dagents.toString());
+
+        //todo case_title生成
+//            caseInfo.setCaseTitle(this.createCaseTitle(plaintiffs.toString(), defendants.toString(), caseInfo.getCaseTypeName()));
+
+        caseInfo.setInfoProcess(CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_1.getIndex());
+        caseInfo.setInfoProcessName(CaseInfoProcessBaseConstsEnum.CASE_INFO_PROCESS_1.getDes());
+        caseInfo.setProcess(CaseProcessBaseConstsEnum.CASE_PROCESS_1.getIndex());
+        caseInfo.setProcessName(CaseProcessBaseConstsEnum.CASE_PROCESS_1.getDes());
+        caseInfo.setStatus(CaseStatusBaseConstsEnum.CASE_STATUS_1.getIndex());
+        caseInfo.setStatusName(CaseStatusBaseConstsEnum.CASE_STATUS_1.getDes());
+        caseInfo.setCaseLevel(3);
+        caseInfo.setCanal(CaseBaseConstsEnum.CASE_CANAL_2.getIndex());
+        caseInfo.setCanalName(CaseBaseConstsEnum.CASE_CANAL_2.getDes());
+
+        caseInfo.setCaseRef(utilsClient.createCaseRef());
+        caseInfo.setVisitWay(CaseBaseConstsEnum.VISIT_WAY_2.getIndex());
+        caseInfo.setVisitWayName(CaseBaseConstsEnum.VISIT_WAY_2.getDes());
+        // 临时加上一级纠纷类型
+        caseInfo.setCaseTypeFirst("24_01-2");
+        caseInfo.setCaseTypeFirstName("劳动社保");
+        this.saveOrUpdate(caseInfo);
+
+        caseInfoUnfoldService.saveOrUpdate(caseInfoUnfold);
+        // 启动工作流-自动调度流程
+        caseTaskService.webStartFlowLFDJ(caseInfo);
+        return registerSaveDTO.getId();
     }
 
     /**
@@ -788,8 +820,11 @@
                 if(ObjectUtils.isNotEmpty(caseInfoUnfold)){
                     caseInfoWeChatDTO.setMediResult(caseInfoUnfold.getMediResult());
                     caseInfoWeChatDTO.setMediResultName(caseInfoUnfold.getMediResultName());
-                    caseInfoWeChatDTO.setMediateDeptId(caseInfoUnfold.getMediateDeptId());
-                    caseInfoWeChatDTO.setMediateDeptName(caseInfoUnfold.getMediateDeptName());
+                    caseInfoWeChatDTO.setMediateDeptId(caseInfoUnfold.getMediateUnitId());
+                    caseInfoWeChatDTO.setMediateDeptName(caseInfoUnfold.getMediateUnitName());
+                    caseInfoWeChatDTO.setAgreeType(caseInfoUnfold.getAgreeType());
+                    caseInfoWeChatDTO.setAgreeTypeName(caseInfoUnfold.getAgreeTypeName());
+                    caseInfoWeChatDTO.setAgreeContent(caseInfoUnfold.getAgreeContent());
                 }
 
                 QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>();
@@ -861,4 +896,190 @@
         }
         return new PageImpl<CasePageDTO>(content, page, total);
     }
+
+    public CaseStatisticsBaseDTO statistics(Map<String, Object> terms) throws IOException {
+        //基础数据统计
+        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");
+        List<String> areaCodeList = new ArrayList<>();
+        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()));
+            areaCodeList.add(caseStatisticsAreaDTO.getAreaCode());
+        }
+        caseStatisticsAreaDTOS.add(allArea);
+        List<CaseAreaDTO> queArea = listAreaByType(terms.get("areaType"), terms.get("queArea"));
+        log.info("listAreaByType {}",JSON.toJSONString(queArea));
+        for (CaseAreaDTO 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);
+                caseStatisticsAreaDTOS.add(areaChild);
+            }
+        }
+
+        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;
+    }
+
+    /**
+     * 根据json文件获取区域信息
+     * */
+    public CaseAreaDTO getArea() throws IOException {
+        Class<?> clazz = CaseAreaDTO.class;
+        String path = clazz.getResource("").getPath();
+        ObjectMapper mapper = new ObjectMapper();
+        File file = new File(path+"Area.json");
+        CaseAreaDTO obj = mapper.readValue(file, CaseAreaDTO.class);
+        return obj;
+    }
+
+    /**
+     * 根据不同的等级获取不同区域子集合
+     * @param areaType 1-市级 2-区
+     * */
+    public List<CaseAreaDTO> listAreaByType(Object areaType,Object areaCode) throws IOException {
+        log.info("listAreaByType {},{}",areaType,areaCode);
+        CaseAreaDTO area = getArea();
+        log.info("listAreaByType area {}",JSON.toJSONString(area));
+        if(ObjectUtils.isEmpty(areaType) || areaType.equals("") || areaType.equals("1")){
+            return area.getChildren();
+        }
+        if(areaType.equals("2")){
+            List<CaseAreaDTO> children = area.getChildren();
+            for (CaseAreaDTO child : children) {
+                if(child.getAreaCode().equals(areaCode)){
+                    return child.getChildren();
+                }
+            }
+        }
+        return new ArrayList<>();
+    }
 }

--
Gitblit v1.8.0