forked from gzzfw/backEnd/gz-dyh

zhouxiantao
2024-09-20 fca638bd85eb9e5c04a766e7d5c3f469fe2388ca
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<>();
    }
}