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 | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 208 insertions(+), 3 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 fb00ddf..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());
@@ -243,7 +253,7 @@
// 判断是否自行受理
if(1 == registerSaveDTO.getIsSelfAccept()){
// 自行受理流程
- caseTaskService.webStartFlowZXSL(caseInfo, loginUser);
+ return caseTaskService.webStartFlowZXSL(caseInfo, loginUser);
}else {
// 自动调度流程
caseTaskService.webStartFlowLFDJ(caseInfo);
@@ -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);
@@ -804,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<>();
@@ -877,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