From fca638bd85eb9e5c04a766e7d5c3f469fe2388ca Mon Sep 17 00:00:00 2001
From: zhouxiantao <1026371446@qq.com>
Date: Fri, 20 Sep 2024 17:30:15 +0800
Subject: [PATCH] 态势分析

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 56 insertions(+), 1 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 e26abb9..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,6 +25,7 @@
 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;
@@ -36,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;
 
@@ -893,7 +897,7 @@
         return new PageImpl<CasePageDTO>(content, page, total);
     }
 
-    public CaseStatisticsBaseDTO statistics(Map<String, Object> terms){
+    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());
@@ -913,13 +917,30 @@
         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);
         }
@@ -1027,4 +1048,38 @@
         }
         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