From ed8f08873f9869ef04c1129f1b9206197c1a7c73 Mon Sep 17 00:00:00 2001
From: zhouxiantao <1026371446@qq.com>
Date: Fri, 18 Oct 2024 15:55:05 +0800
Subject: [PATCH] refactor:解纷态势-统计范围和本级统计重构
---
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java | 2 +
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml | 57 ++++++++++++++++------------
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsAreaDTO.java | 1
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java | 57 +++++++++++++++++-----------
4 files changed, 71 insertions(+), 46 deletions(-)
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java
index ae674e7..5eb0247 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java
@@ -117,6 +117,7 @@
if (StringUtils.isNotBlank(mediResult)){
terms.put("mediResult", mediResult);
}
+
String peopleNum = request.getParameter("peopleNum");
if (StringUtils.isNotBlank(peopleNum)){
String[] split = peopleNum.split("-");
@@ -700,6 +701,7 @@
Map<String, Object> terms = getParameterAll();
Sort sort = Sort.by(Sort.Direction.DESC, "a.create_time");
PageRequest pageRequest = PageRequest.of(0, 1000000, sort);
+ terms.put("report","report");
Page<CasePageDTO> caseInfoPage = service.pageQueryAll(pageRequest, terms);
List<CaseInfoWeExcelDTO> excelList = new ArrayList<>();
if(ObjectUtils.isNotEmpty(caseInfoPage.getContent())){
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml
index 9e1ae38..342161f 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml
@@ -299,7 +299,7 @@
<sql id="where-part-all">
<if test="terms != null">
<where>
- and delete_status = 0
+ and a.delete_status = 0
<if test="terms.ids != null and terms.ids.size > 0">
and a.id in
<foreach collection="terms.ids" item="id" index="index" open="(" separator="," close=")">
@@ -358,20 +358,26 @@
and (DATE_FORMAT(b.file_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{terms.fileStart}
and DATE_FORMAT(b.file_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{terms.fileEnd})
</if>
- <if test="terms.queCity != null and terms.queCity !=''">
- and ((b.mediate_unit_id is not null and b.mediate_unit_id in (select id from "gzdyh_dev"."dyh_ct_unit" where que_city = #{terms.queCity}))
+ <if test="terms.queCity != null and terms.queCity !='' and terms.statistics != null">
+ and ((b.mediate_unit_id is not null and c.city = #{terms.queCity})
or (b.mediate_unit_id is null and a.que_city = #{terms.queCity}))
</if>
- <if test="terms.queArea != null and terms.queArea !=''">
- and ((b.mediate_unit_id is not null and b.mediate_unit_id in (select id from "gzdyh_dev"."dyh_ct_unit" where que_area = #{terms.queArea}))
+ <if test="terms.queArea != null and terms.queArea !='' and terms.statistics != null">
+ and ((b.mediate_unit_id is not null and c.area = #{terms.queArea})
or (b.mediate_unit_id is null and a.que_area = #{terms.queArea}))
</if>
- <if test="terms.queRoad != null and terms.queRoad !=''">
- and ((b.mediate_unit_id is not null and b.mediate_unit_id in (select id from "gzdyh_dev"."dyh_ct_unit" where que_road = #{terms.queRoad}))
+ <if test="terms.queRoad != null and terms.queRoad !='' and terms.statistics != null">
+ and ((b.mediate_unit_id is not null and c.road in = #{terms.queRoad})
or (b.mediate_unit_id is null and a.que_road = #{terms.queRoad}))
</if>
<if test="terms.isArea != null and terms.isArea !=''">
and a.que_city is not null and a.que_area is not null and a.que_road is not null
+ </if>
+ <if test="terms.queArea != null and terms.queArea !='' and terms.statistics == null">
+ and a.que_area = #{terms.queArea}
+ </if>
+ <if test="terms.queRoad != null and terms.queRoad !='' and terms.statistics == null">
+ and a.que_road = #{terms.queRoad}
</if>
<if test="terms.caseRef != null and terms.caseRef !=''">
and a.case_ref = #{terms.caseRef}
@@ -845,31 +851,26 @@
<select id="statisticsArea" resultType="cn.huge.module.cases.domain.dto.CaseStatisticsAreaDTO">
SELECT
<if test="terms.areaType == null or terms.areaType ==''">
- a.que_area as areaCode,a.que_area_name as areaName,
+ IF(c.area is null,a.que_area,c.area) as areaCode,IF(c.area_name is null,a.que_area_name,c.area_name) as areaName,
</if>
<if test='terms.areaType != null and terms.areaType =="1"'>
- a.que_area as areaCode,a.que_area_name as areaName,
+ IF(c.area is null,a.que_area,c.area) as areaCode,IF(c.area_name is null,a.que_area_name,c.area_name) as areaName,
</if>
<if test='terms.areaType != null and terms.areaType =="2"'>
- a.que_road as areaCode,a.que_road_name as areaName,
+ IF(c.road is null,a.que_road,c.road) as areaCode,IF(c.road_name is null,a.que_road_name,c.road_name) as areaName,
</if>
+ c.unit_grade as unitGrade,
count(1) as caseNum,
sum(case when b.medi_result = '22_00025-1' then 1 else 0 end) as resolveNum,
sum(case when b.medi_result is null and a.info_process <![CDATA[ < ]]> 4 then 1 else 0 end) as resolveingNum,
sum(case when b.medi_result = '22_00025-2' then 1 else 0 end) as unResolveNum,
sum(case when a.info_process = 4 then 1 else 0 end) as rejectNum
FROM
- dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.id
+ dyh_case_info a
+ inner JOIN dyh_case_info_unfold b on a.id = b.id
+ LEFT JOIN dyh_ct_unit c ON b.mediate_unit_id = c.id
<include refid="where-part-all"/>
- <if test="terms.areaType == null or terms.areaType ==''">
- group by a.que_area
- </if>
- <if test='terms.areaType != null and terms.areaType =="1"'>
- group by a.que_area
- </if>
- <if test='terms.areaType != null and terms.areaType =="2"'>
- group by a.que_road
- </if>
+ group by areaCode
</select>
<!-- 统计分析(基础) -->
@@ -886,7 +887,9 @@
sum(case when a.info_process = 3 then 1 else 0 end) as finishNum,
sum(case when a.info_process = 4 then 1 else 0 end) as rejectNum
FROM
- dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.id
+ dyh_case_info a
+ inner JOIN dyh_case_info_unfold b on a.id = b.id
+ LEFT JOIN dyh_ct_unit c ON b.mediate_unit_id = c.id
<include refid="where-part-all"/>
</select>
<!-- 统计分析(类型) -->
@@ -894,7 +897,9 @@
SELECT
a.case_type_first as caseType,a.case_type_first_name as caseTypeName,count(1) as caseNum
FROM
- dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.id
+ dyh_case_info a
+ inner JOIN dyh_case_info_unfold b on a.id = b.id
+ LEFT JOIN dyh_ct_unit c ON b.mediate_unit_id = c.id
<include refid="where-part-all"/>
group by a.case_type_first
</select>
@@ -904,7 +909,9 @@
SELECT
a.case_type as caseType,a.case_type_name as caseTypeName,count(1) as caseNum
FROM
- dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.id
+ dyh_case_info a
+ inner JOIN dyh_case_info_unfold b on a.id = b.id
+ LEFT JOIN dyh_ct_unit c ON b.mediate_unit_id = c.id
<include refid="where-part-all"/>
group by a.case_type
</select>
@@ -918,7 +925,9 @@
sum(case when b.medi_result = '22_00025-2' then 1 else 0 end) as unResolveNum,
sum(case when a.info_process = 4 then 1 else 0 end) as rejectNum
FROM
- dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.id
+ dyh_case_info a
+ inner JOIN dyh_case_info_unfold b on a.id = b.id
+ LEFT JOIN dyh_ct_unit c ON b.mediate_unit_id = c.id
<include refid="where-part-all"/>
group by a.canal
</select>
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsAreaDTO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsAreaDTO.java
index a627892..ee9f78a 100644
--- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsAreaDTO.java
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseStatisticsAreaDTO.java
@@ -15,4 +15,5 @@
private Integer resolveingNum=0;//化解中数量
private Integer unResolveNum=0;//化解不成功数量
private Integer rejectNum=0;//不予受理数量
+ private Integer unitGrade;//单位级别 1:市级,2:区级,3:镇街级,4:村居级
}
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 1537f16..c6aff30 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
@@ -968,20 +968,23 @@
break;
}
}
- QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>();
- personWrapper1.eq("case_id", casePageDTO.getId());
- List<CasePerson> casePersonList1 = personService.list(personWrapper1);
//申请人集合
List<CasePersonWeDTO> plaintiffList = new ArrayList<>();
//被申请人集合
List<CasePersonWeDTO> defendantList = new ArrayList<>();
- for (CasePerson casePerson : casePersonList1) {
- CasePersonWeDTO casePersonWechatDTO = new CasePersonWeDTO();
- BeanUtils.copyProperties(casePerson, casePersonWechatDTO);
- if (CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePerson.getPerType())) {
- plaintiffList.add(casePersonWechatDTO);
- } else if (CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())) {
- defendantList.add(casePersonWechatDTO);
+ //如果是导出调用,不查询extend信息
+ if(ObjectUtils.isEmpty(terms.get("report"))){
+ QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>();
+ personWrapper1.eq("case_id", casePageDTO.getId());
+ List<CasePerson> casePersonList1 = personService.list(personWrapper1);
+ for (CasePerson casePerson : casePersonList1) {
+ CasePersonWeDTO casePersonWechatDTO = new CasePersonWeDTO();
+ BeanUtils.copyProperties(casePerson, casePersonWechatDTO);
+ if (CaseBaseConstsEnum.PERSON_TYPE_1.getIndex().equals(casePerson.getPerType())) {
+ plaintiffList.add(casePersonWechatDTO);
+ } else if (CaseBaseConstsEnum.PERSON_TYPE_2.getIndex().equals(casePerson.getPerType())) {
+ defendantList.add(casePersonWechatDTO);
+ }
}
}
casePageDTO.setDefendantList(defendantList);
@@ -1000,12 +1003,17 @@
if(ObjectUtils.isNotEmpty(terms.get("canal"))){
canal = terms.get("canal");
}
+ terms.put("statistics", "1");
//根据用户筛选区域范围
CtUnitDTO ctUnitDTO = custClient.getUnitByUserId(userId);
if(ctUnitDTO.getUnitGrade().equals(2)){
terms.put("queArea", ctUnitDTO.getArea());
}else if(ctUnitDTO.getUnitGrade().equals(3) || ctUnitDTO.getUnitGrade().equals(4)){
terms.put("queRoad", ctUnitDTO.getRoad());
+ }
+ //目前没有村居,所以区和街道进来都是按街道展示
+ if(ObjectUtils.isNotEmpty(terms.get("queRoad")) || ObjectUtils.isNotEmpty(terms.get("queArea"))){
+ terms.put("areaType","2");
}
//基础数据统计
CaseStatisticsBaseDTO caseStatisticsBaseDTO = mapper.statisticsBase(terms);
@@ -1018,7 +1026,6 @@
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<>();
@@ -1027,14 +1034,20 @@
allArea.setAreaName("本级");
allArea.setAreaCode("1");
List<String> areaCodeList = new ArrayList<>();
+ List<CaseStatisticsAreaDTO> areaList = 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());
+ //本及:承办单位是本及和没有承办单位并且没有下级区域编码
+ if(ObjectUtils.isEmpty(caseStatisticsAreaDTO.getAreaCode()) || ctUnitDTO.getUnitGrade().equals(caseStatisticsAreaDTO.getUnitGrade())){
+ 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()));
+ }else{
+ areaList.add(caseStatisticsAreaDTO);
+ areaCodeList.add(caseStatisticsAreaDTO.getAreaCode());
+ }
}
- caseStatisticsAreaDTOS.add(allArea);
+ areaList.add(allArea);
List<QueAreaDTO> queArea = listAreaByType(terms.get("queArea"));
log.info("listAreaByType {}", JSON.toJSONString(queArea));
for (QueAreaDTO caseAreaDTO : queArea) {
@@ -1046,15 +1059,14 @@
areaChild.setResolveNum(0);
areaChild.setUnResolveNum(0);
areaChild.setResolveingNum(0);
- caseStatisticsAreaDTOS.add(areaChild);
+ areaList.add(areaChild);
}
}
- if (ObjectUtils.isNotEmpty(caseStatisticsAreaDTOS)) {
- sortArea(caseStatisticsAreaDTOS);
+ if (ObjectUtils.isNotEmpty(areaList)) {
+ sortArea(areaList);
}
- caseStatisticsBaseDTO.setAreaList(caseStatisticsAreaDTOS);
- terms.remove("isArea");
+ caseStatisticsBaseDTO.setAreaList(areaList);
//纠纷类型统计
List<CaseStatisticsTypeDTO> caseStatisticsTypeDTOS = mapper.statisticsTypeFirst(terms);
if (ObjectUtils.isNotEmpty(caseStatisticsTypeDTOS)) {
@@ -1136,6 +1148,7 @@
}
Sort sort = Sort.by(Sort.Direction.DESC, "a.create_time");
PageRequest pageRequest = PageRequest.of(0, 30, sort);
+ terms.remove("statistics");
Page<CasePageDTO> casePageDTOS = pageQueryAll(pageRequest, terms);
if (ObjectUtils.isNotEmpty(casePageDTOS.getContent())) {
caseStatisticsBaseDTO.setCaseList(casePageDTOS.getContent());
--
Gitblit v1.8.0