From d1fcb44a9b81d0880b414e9125cb60897cf0b6a8 Mon Sep 17 00:00:00 2001
From: liyj <15602261488@163.com>
Date: Sat, 21 Sep 2024 13:19:14 +0800
Subject: [PATCH] 1、受理操作报错修复 整改: 2、工作台-待/已分派列表 3、工作台-待/已签收列表 4、工作台-待/已/不予受理列表

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java |  202 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 202 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 fa3937c..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;
 
@@ -227,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());
@@ -561,6 +571,12 @@
         caseInfo.setInputUserId(loginUser.getId());
         caseInfo.setInputUserName(loginUser.getTrueName());
         caseInfo.setInputWay(CaseBaseConsts.INPUT_WAY_1);
+        //默认添加省市
+        caseInfo.setQueProv("19");
+        caseInfo.setQueProvName("广东省");
+        caseInfo.setQueCity("1601");
+        caseInfo.setQueCityName("广州市");
+
         caseInfo.setCreateTime(nowDate);
         caseInfo.setUpdateTime(nowDate);
         caseInfo.setVisitTime(nowDate);
@@ -880,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