From 251ae22a7abf258a5cd33495496fcbcd5b73bbd3 Mon Sep 17 00:00:00 2001 From: buaixuexideshitongxue <2936013465@qq.com> Date: Fri, 6 Mar 2026 18:23:53 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A0=94=E5=88=A4=E5=88=86=E6=9E=90--=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=A8=A1=E6=9D=BFstep2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/dto/report/ReportViewModel.java | 28 +++ .../AccountabilityDepartmentSection.java | 19 ++ .../AccountabilityOverviewSection.java | 34 +++ .../AccountabilityPersonalSection.java | 19 ++ .../AccountabilityTypeItem.java | 17 ++ .../BusinessLineDetailSection.java | 73 +++++++ .../BusinessLineOverviewSection.java | 2 +- .../BusinessLinePersonRankItem.java | 28 +++ .../businessLine/BusinessLineRankItem.java | 22 ++ .../UnitInvestigationItem.java | 34 +++ .../UnitInvestigationOverviewSection.java | 33 +++ .../pojo/vo/ExportNegativeBlameLeaderVo.java | 118 ++++++++++ .../service/NegativeTaskService.java | 34 +++ .../service/NegativeWorkService.java | 6 +- .../service/report/ReportDataServiceImpl.java | 202 +++++++++++++++++- ...审一体化平台研判分析报告.docx | Bin 88809 -> 88959 bytes 16 files changed, 658 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityDepartmentSection.java create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityOverviewSection.java create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityPersonalSection.java create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityTypeItem.java create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineDetailSection.java rename src/main/java/com/biutag/supervision/pojo/dto/report/{ => businessLine}/BusinessLineOverviewSection.java (91%) create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLinePersonRankItem.java create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineRankItem.java create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/unitInvestigation/UnitInvestigationItem.java create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/unitInvestigation/UnitInvestigationOverviewSection.java create mode 100644 src/main/java/com/biutag/supervision/pojo/vo/ExportNegativeBlameLeaderVo.java diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/ReportViewModel.java b/src/main/java/com/biutag/supervision/pojo/dto/report/ReportViewModel.java index 62e8491..6e83e69 100644 --- a/src/main/java/com/biutag/supervision/pojo/dto/report/ReportViewModel.java +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/ReportViewModel.java @@ -1,9 +1,17 @@ package com.biutag.supervision.pojo.dto.report; +import com.biutag.supervision.pojo.dto.report.accountability.AccountabilityDepartmentSection; +import com.biutag.supervision.pojo.dto.report.accountability.AccountabilityOverviewSection; +import com.biutag.supervision.pojo.dto.report.accountability.AccountabilityPersonalSection; +import com.biutag.supervision.pojo.dto.report.businessLine.BusinessLineDetailSection; +import com.biutag.supervision.pojo.dto.report.businessLine.BusinessLineOverviewSection; +import com.biutag.supervision.pojo.dto.report.unitInvestigation.UnitInvestigationOverviewSection; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; +import java.util.List; + /** * @ClassName ReportGenerationDTO * @Description TODO @@ -28,6 +36,26 @@ public class ReportViewModel { @Schema(description = "各业务条线情况-总览部分") private BusinessLineOverviewSection businessLineOverviewSection; + @Schema(description = "各业务条线情况-明细部分") + private List businessLineDetailSections; + + + @Schema(description = "单位查处情况") + private UnitInvestigationOverviewSection unitInvestigationSection; + + +// @Schema(description = "单位查处情况--详情预留") +// private UnitInvestigationDetailSection unitInvestigationDetailSection; + + @Schema(description = "问责追责情况") + private AccountabilityOverviewSection accountabilityOverviewSection; + + + // 分开 预留可修改空间 + @Schema(description = "单位问责追责情况明细") + private AccountabilityDepartmentSection accountabilityUnitDetailSection; + @Schema(description = "个人问责追责情况") + private AccountabilityPersonalSection accountabilityPersonOverviewSection; } diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityDepartmentSection.java b/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityDepartmentSection.java new file mode 100644 index 0000000..81ff73d --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityDepartmentSection.java @@ -0,0 +1,19 @@ +package com.biutag.supervision.pojo.dto.report.accountability; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@Schema(description = "对单位追责问责情况") +public class AccountabilityDepartmentSection { + + @Schema(description = "问责单位总次数", example = "6") + private Integer totalCount; + + @Schema(description = "单位问责类型列表") + private List typeItems; +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityOverviewSection.java b/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityOverviewSection.java new file mode 100644 index 0000000..82a3c06 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityOverviewSection.java @@ -0,0 +1,34 @@ +package com.biutag.supervision.pojo.dto.report.accountability; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * @ClassName AccountabilityOverviewSection + * @Description TODO + * @Author shihao + * @Date 2026/3/6 11:19 + */ +@Getter +@Setter +@Schema(description = "问责追责情况总览") +public class AccountabilityOverviewSection { + + @Schema(description = "统计开始时间", example = "2026年3月1日") + private String periodStart; + + @Schema(description = "统计结束时间", example = "2026年3月31日") + private String periodEnd; + + @Schema(description = "开展问题类型条数", example = "8") + private Integer problemTypeCount; + + @Schema(description = "个人问责次数", example = "12") + private Integer personalAccountabilityCount; + + @Schema(description = "单位问责次数", example = "5") + private Integer departmentAccountabilityCount; + + +} diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityPersonalSection.java b/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityPersonalSection.java new file mode 100644 index 0000000..41ba6f5 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityPersonalSection.java @@ -0,0 +1,19 @@ +package com.biutag.supervision.pojo.dto.report.accountability; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@Schema(description = "对个人追责问责情况") +public class AccountabilityPersonalSection { + + @Schema(description = "问责个人总次数", example = "10") + private Integer totalCount; + + @Schema(description = "个人问责类型列表") + private List typeItems; +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityTypeItem.java b/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityTypeItem.java new file mode 100644 index 0000000..24ccef9 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/accountability/AccountabilityTypeItem.java @@ -0,0 +1,17 @@ +package com.biutag.supervision.pojo.dto.report.accountability; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Schema(description = "问责类型项") +public class AccountabilityTypeItem { + + @Schema(description = "问责类型名称", example = "诫勉处理") + private String typeName; + + @Schema(description = "次数", example = "3") + private Integer count; +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineDetailSection.java b/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineDetailSection.java new file mode 100644 index 0000000..829aff2 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineDetailSection.java @@ -0,0 +1,73 @@ +package com.biutag.supervision.pojo.dto.report.businessLine; + +import com.biutag.supervision.pojo.enums.report.TrendEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @ClassName BusinessLineDetailSection + * @Description 各业务条线情况明细项 + * @Author shihao + * @Date 2026/3/6 9:37 + */ +@Getter +@Setter +@Schema(description = "各业务条线情况-明细项") +public class BusinessLineDetailSection { + + @Schema(description = "序号,如 一、二、三") + private String orderNo; + + @Schema(description = "业务条线名称") + private String businessLineName; + + @Schema(description = "业务条线父级名称") + private String businessFatherLineName; + + @Schema(description = "下发总数") + private Integer totalIssued; + + @Schema(description = "查实总数(属实+基本属实)") + private Integer verifiedTotal; + + @Schema(description = "查实率") + private BigDecimal verifiedRate; + + @Schema(description = "问责总次数") + private Integer accountabilityTotal; + + @Schema(description = "总追责问责率") + private BigDecimal accountabilityRate; + + @Schema(description = "个人问责次数") + private Integer personalAccountabilityCount; + + @Schema(description = "单位问责次数") + private Integer departmentAccountabilityCount; + + @Schema(description = "问题类型TOP列表") + private List topProblemTypes; + + @Schema(description = "重点单位TOP列表") + private List topUnits; + + @Schema(description = "重点人员TOP列表") + private List topPersons; + + @Schema(description = "环比变化率") + private BigDecimal momRate; + + @Schema(description = "环比趋势") + private TrendEnum momTrend; + + @Schema(description = "同比变化率") + private BigDecimal yoyRate; + + @Schema(description = "同比趋势") + private TrendEnum yoyTrend; + +} diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/BusinessLineOverviewSection.java b/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineOverviewSection.java similarity index 91% rename from src/main/java/com/biutag/supervision/pojo/dto/report/BusinessLineOverviewSection.java rename to src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineOverviewSection.java index d9731a4..d060e53 100644 --- a/src/main/java/com/biutag/supervision/pojo/dto/report/BusinessLineOverviewSection.java +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineOverviewSection.java @@ -1,4 +1,4 @@ -package com.biutag.supervision.pojo.dto.report; +package com.biutag.supervision.pojo.dto.report.businessLine; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLinePersonRankItem.java b/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLinePersonRankItem.java new file mode 100644 index 0000000..81c5aa0 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLinePersonRankItem.java @@ -0,0 +1,28 @@ +package com.biutag.supervision.pojo.dto.report.businessLine; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; + +@Getter +@Setter +@Schema(description = "业务条线重点人员排行项") +public class BusinessLinePersonRankItem { + + @Schema(description = "人员姓名") + private String personName; + + @Schema(description = "所属单位") + private String unitName; + + @Schema(description = "人员类别,如 民警/辅警") + private String identityName; + + @Schema(description = "数量") + private Integer count; + + @Schema(description = "占比") + private BigDecimal rate; +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineRankItem.java b/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineRankItem.java new file mode 100644 index 0000000..4a2458c --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/businessLine/BusinessLineRankItem.java @@ -0,0 +1,22 @@ +package com.biutag.supervision.pojo.dto.report.businessLine; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; + +@Getter +@Setter +@Schema(description = "业务条线排行项") +public class BusinessLineRankItem { + + @Schema(description = "名称,如 执法程序问题 / 某某派出所") + private String name; + + @Schema(description = "数量") + private Integer count; + + @Schema(description = "占比") + private BigDecimal rate; +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/unitInvestigation/UnitInvestigationItem.java b/src/main/java/com/biutag/supervision/pojo/dto/report/unitInvestigation/UnitInvestigationItem.java new file mode 100644 index 0000000..c1476b6 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/unitInvestigation/UnitInvestigationItem.java @@ -0,0 +1,34 @@ +package com.biutag.supervision.pojo.dto.report.unitInvestigation; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * @ClassName UnitInvestigationItem + * @Description TODO + * @Author shihao + * @Date 2026/3/6 10:46 + */ + + +@Getter +@Setter +@Schema(description = "单位查处情况明细") +public class UnitInvestigationItem { + + @Schema(description = "排名", example = "1") + private Integer rank; + + @Schema(description = "单位名称", example = "XXXXX") + private String unitName; + + @Schema(description = "下发问题数", example = "20") + private Integer issuedProblemCount; + + @Schema(description = "查实问题数", example = "15") + private Integer verifiedProblemCount; + + @Schema(description = "查实率", example = "75.00%") + private String verifiedRate; +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/unitInvestigation/UnitInvestigationOverviewSection.java b/src/main/java/com/biutag/supervision/pojo/dto/report/unitInvestigation/UnitInvestigationOverviewSection.java new file mode 100644 index 0000000..830cf32 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/unitInvestigation/UnitInvestigationOverviewSection.java @@ -0,0 +1,33 @@ +package com.biutag.supervision.pojo.dto.report.unitInvestigation; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** + * @ClassName UnitInvestigationOverviewSection + * @Description TODO + * @Author shihao + * @Date 2026/3/6 10:45 + */ +@Setter +@Getter +@Schema(description = "单位查处情况") +public class UnitInvestigationOverviewSection { + + + + @Schema(description = "统计开始时间", example = "2026年3月1日") + private String periodStart; + + @Schema(description = "统计结束时间", example = "2026年3月31日") + private String periodEnd; + + + @Schema(description = "查实问题占比较多的单位列表") + private List topUnits; + + +} diff --git a/src/main/java/com/biutag/supervision/pojo/vo/ExportNegativeBlameLeaderVo.java b/src/main/java/com/biutag/supervision/pojo/vo/ExportNegativeBlameLeaderVo.java new file mode 100644 index 0000000..fdff818 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/vo/ExportNegativeBlameLeaderVo.java @@ -0,0 +1,118 @@ +package com.biutag.supervision.pojo.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +/** + * @ClassName ExportNegativeBlameLeaderVo + * @Description 问责领导信息 + * @Author shihao + * @Date 2026/3/6 14:46 + */ +@Setter +@Getter +@Schema(description = "问责领导信息") +public class ExportNegativeBlameLeaderVo { + + @ExcelProperty({"问题编号"}) + private String id; + + // 通报期数 + @ExcelProperty({"通报期数"}) + private String reportNumber; + + // 问题发现时间 + @ExcelProperty({"问题发现时间"}) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private LocalDateTime discoveryTime; + + // 业务类别名称 + @ExcelProperty({"问题来源"}) + private String problemSources; + + // 业务类别名称 + @ExcelProperty({"业务类别"}) + private String businessTypeName; + + // 涉嫌问题 JSON + @ExcelProperty({"涉嫌问题"}) + private String involveProblem; + + // 简要描述 + @ExcelProperty({"简要描述"}) + private String thingDesc; + + // 涉及单位名称 + @ExcelProperty({"涉及单位"}) + private String involveDepartName; + + // 办理单位 二级 + @ExcelProperty({"办理单位(二级)"}) + private String handleSecondDepartName; + + // 办理单位 三级 + @ExcelProperty({"办理单位(三级)"}) + private String handleThreeDepartName; + + // 核查情况 + @ExcelProperty({"核查情况(是否属实)"}) + private String checkStatusName; + + // 是否整改 + @ExcelProperty({"是否整改"}) + private String isRectifyName; + + // 问题整改情况 + @ExcelProperty({"整改情况"}) + private String rectifyDesc; + + // 追责对象 + @ExcelProperty({"追责对象"}) + private String accountabilityTarget; + +// @ExcelProperty({"涉及人员姓名"}) +// private String blameName; + + // 涉及警号 +// @ExcelProperty({"警号"}) +// private String blameEmpNo; +// +// // 涉及身份证 +// @ExcelProperty({"身份证"}) +// private String blameIdCode; + +// @ExcelProperty({"人员属性"}) +// private String ivPersonType; +// +// @ExcelProperty({"责任追责"}) +// private String handleResultName; + + // 责任领导 + @ExcelProperty({"责任领导姓名"}) + private String leadName; + + // 领导警号 + @ExcelProperty({"责任领导警号"}) + private String leadEmpNo; + + // 责任领导身份证 + @ExcelProperty({"责任领导身份证"}) + private String leadIdCode; + + // 领导处理结果 + @ExcelProperty("责任领导责任追责") + private String leadHandleResultName; + + + // 问题类型 +// @ExcelProperty({"问题类型"}) +// private String problemType; + + + +} diff --git a/src/main/java/com/biutag/supervision/service/NegativeTaskService.java b/src/main/java/com/biutag/supervision/service/NegativeTaskService.java index c30cfb4..dd9251d 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeTaskService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeTaskService.java @@ -19,6 +19,7 @@ import com.biutag.supervision.pojo.entity.*; import com.biutag.supervision.pojo.model.ModelClueTaskDepartModel; import com.biutag.supervision.pojo.model.UserAuth; import com.biutag.supervision.pojo.param.NegativeTaskQueryParam; +import com.biutag.supervision.pojo.vo.ExportNegativeBlameLeaderVo; import com.biutag.supervision.pojo.vo.ExportNegativeBlameVo; import com.biutag.supervision.pojo.vo.ExportNegativeVo; import com.biutag.supervision.pojo.vo.NegativeQueryVo; @@ -178,6 +179,33 @@ public class NegativeTaskService extends ServiceImpl seen = new HashSet<>(); + List blameLeaderVoList = blameVoList.stream() + .filter(one -> StrUtil.isNotBlank(one.getLeadName())) + .filter(one -> "涉及个人".equals(one.getAccountabilityTarget())) + // 同一个问题 同一个人 同一个问责 算一条数据 + .filter(one -> seen.add(one.getId() + "_" + one.getLeadHandleResultName() + "_" + one.getLeadName())) + .map(one -> { + ExportNegativeBlameLeaderVo exportNegativeBlameLeaderVo = new ExportNegativeBlameLeaderVo(); + BeanUtils.copyProperties(one, exportNegativeBlameLeaderVo); + return exportNegativeBlameLeaderVo; + } + ).toList(); + + + Set seenLead = new HashSet<>(); + List departBlameLeaderVoList = blameVoList.stream() + .filter(one -> StrUtil.isNotBlank(one.getLeadName())) + .filter(one -> "涉及单位".equals(one.getAccountabilityTarget())) +// .filter(one -> seenLead.add(one.getId() + "_" + one.getLeadHandleResultName())) + .map(one -> { + ExportNegativeBlameLeaderVo exportNegativeBlameLeaderVo = new ExportNegativeBlameLeaderVo(); + BeanUtils.copyProperties(one, exportNegativeBlameLeaderVo); + return exportNegativeBlameLeaderVo; + } + ).toList(); + + ByteArrayOutputStream os = new ByteArrayOutputStream(); try { ExcelWriter excelWriter = EasyExcel.write(os).build(); @@ -185,8 +213,14 @@ public class NegativeTaskService extends ServiceImpl page(NegativeQueryParam param, String workStatus) { UserAuth user = UserContextHolder.getCurrentUser(); - if (user.getRoleCodes().isEmpty() || user.getAuthDepartIds().isEmpty() || user.getAuthSources().isEmpty()) { - return new Page().setTotal(0).setRecords(new ArrayList<>()); - } +// if (user.getRoleCodes().isEmpty() || user.getAuthDepartIds().isEmpty() || user.getAuthSources().isEmpty()) { +// return new Page().setTotal(0).setRecords(new ArrayList<>()); +// } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("w.role_code", user.getRoleCodes()) .in("w.depart_id", user.getAuthDepartIds()) diff --git a/src/main/java/com/biutag/supervision/service/report/ReportDataServiceImpl.java b/src/main/java/com/biutag/supervision/service/report/ReportDataServiceImpl.java index bde5673..8270578 100644 --- a/src/main/java/com/biutag/supervision/service/report/ReportDataServiceImpl.java +++ b/src/main/java/com/biutag/supervision/service/report/ReportDataServiceImpl.java @@ -3,11 +3,17 @@ package com.biutag.supervision.service.report; import cn.hutool.core.util.StrUtil; import com.biutag.supervision.constants.enums.CheckStatusEnum; import com.biutag.supervision.constants.enums.ProcessingStatusEnum; -import com.biutag.supervision.pojo.domain.NegativeVo; -import com.biutag.supervision.pojo.dto.report.BusinessLineOverviewSection; +import com.biutag.supervision.pojo.dto.report.accountability.AccountabilityOverviewSection; +import com.biutag.supervision.pojo.dto.report.businessLine.BusinessLineDetailSection; +import com.biutag.supervision.pojo.dto.report.businessLine.BusinessLineOverviewSection; import com.biutag.supervision.pojo.dto.report.OverviewSection; import com.biutag.supervision.pojo.dto.report.ReportViewModel; +import com.biutag.supervision.pojo.dto.report.businessLine.BusinessLinePersonRankItem; +import com.biutag.supervision.pojo.dto.report.businessLine.BusinessLineRankItem; +import com.biutag.supervision.pojo.dto.report.unitInvestigation.UnitInvestigationItem; +import com.biutag.supervision.pojo.dto.report.unitInvestigation.UnitInvestigationOverviewSection; import com.biutag.supervision.pojo.entity.NegativeBlame; +import com.biutag.supervision.pojo.enums.report.TrendEnum; import com.biutag.supervision.pojo.param.NegativeQueryParam; import com.biutag.supervision.pojo.param.negativeBlame.NegativeBlameQueryParam; import com.biutag.supervision.pojo.vo.DictProblemSourceTree; @@ -23,9 +29,7 @@ import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -52,10 +56,194 @@ public class ReportDataServiceImpl implements ReportDataService { vm.setPeriodStart(periodStart); vm.setPeriodEnd(periodEnd); vm.setOverviewSection(buildOverviewSection(request, periodStart, periodEnd)); - vm.setBusinessLineOverviewSection(buildbusinessLineOverviewSection(request, periodStart, periodEnd)); + vm.setBusinessLineOverviewSection(buildBusinessLineOverviewSection(request, periodStart, periodEnd)); + vm.setBusinessLineDetailSections(buildBusinessLineDetailSections(request, periodStart, periodEnd)); + vm.setUnitInvestigationSection(buildUnitInvestigationSection(request, periodStart, periodEnd)); + vm.setAccountabilityOverviewSection(buildAccountabilityOverviewSection(request, periodStart, periodEnd)); +// vm.setAccountabilityUnitDetailSection(); return vm; } + /** + * 问责追责总览 + * @param request + * @param periodStart + * @param periodEnd + * @return + */ + private AccountabilityOverviewSection buildAccountabilityOverviewSection(NegativeQueryParam request, String periodStart, String periodEnd) { + + return null; + } + + private UnitInvestigationOverviewSection buildUnitInvestigationSection(NegativeQueryParam request, + String periodStart, + String periodEnd) { + UnitInvestigationOverviewSection section = new UnitInvestigationOverviewSection(); + section.setPeriodStart(periodStart); + section.setPeriodEnd(periodEnd); + + List topUnits = new ArrayList<>(); + + UnitInvestigationItem item1 = new UnitInvestigationItem(); + item1.setRank(1); + item1.setUnitName("北京市分公司"); + item1.setIssuedProblemCount(28); + item1.setVerifiedProblemCount(21); + item1.setVerifiedRate("75.00"); + + UnitInvestigationItem item2 = new UnitInvestigationItem(); + item2.setRank(2); + item2.setUnitName("上海市分公司"); + item2.setIssuedProblemCount(24); + item2.setVerifiedProblemCount(17); + item2.setVerifiedRate("70.83"); + + UnitInvestigationItem item3 = new UnitInvestigationItem(); + item3.setRank(3); + item3.setUnitName("广东省分公司"); + item3.setIssuedProblemCount(19); + item3.setVerifiedProblemCount(13); + item3.setVerifiedRate("68.42"); + + topUnits.add(item1); + topUnits.add(item2); + topUnits.add(item3); + + section.setTopUnits(topUnits); + return section; + } + + /** + * 业务条线的明细 + * @param request + * @param periodStart + * @param periodEnd + * @return + */ + private List buildBusinessLineDetailSections(NegativeQueryParam request, String periodStart, String periodEnd) { + List list = new ArrayList<>(); + + // 第一条 + BusinessLineDetailSection section1 = new BusinessLineDetailSection(); + section1.setOrderNo("一"); + section1.setBusinessLineName("执法监督"); + section1.setBusinessFatherLineName("执法办案"); + section1.setTotalIssued(12); + section1.setVerifiedTotal(8); + section1.setVerifiedRate(new BigDecimal("66.67")); + section1.setAccountabilityTotal(5); + section1.setAccountabilityRate(new BigDecimal("62.50")); + section1.setPersonalAccountabilityCount(3); + section1.setDepartmentAccountabilityCount(2); + section1.setTopProblemTypes(Arrays.asList( + buildRankItem("执法程序问题", 3, "37.50"), + buildRankItem("案件管理问题", 2, "25.00"), + buildRankItem("执法作风问题", 2, "25.00") + )); + section1.setTopUnits(Arrays.asList( + buildRankItem("XX派出所", 2, "25.00"), + buildRankItem("XX大队", 2, "25.00"), + buildRankItem("XX中队", 1, "12.50") + )); + section1.setTopPersons(Arrays.asList( + buildPersonRankItem("张三", "XX派出所", "民警", 2, "25.00"), + buildPersonRankItem("李四", "XX大队", "辅警", 1, "12.50"), + buildPersonRankItem("王五", "XX中队", "民警", 1, "12.50") + )); + section1.setMomRate(new BigDecimal("20.00")); + section1.setMomTrend(TrendEnum.UP); + section1.setYoyRate(new BigDecimal("10.00")); + section1.setYoyTrend(TrendEnum.DOWN); + list.add(section1); + + // 第二条 + BusinessLineDetailSection section2 = new BusinessLineDetailSection(); + section2.setOrderNo("二"); + section2.setBusinessLineName("案件管理"); + section2.setBusinessFatherLineName("执法办案"); + section2.setTotalIssued(9); + section2.setVerifiedTotal(6); + section2.setVerifiedRate(new BigDecimal("66.67")); + section2.setAccountabilityTotal(4); + section2.setAccountabilityRate(new BigDecimal("50.00")); + section2.setPersonalAccountabilityCount(2); + section2.setDepartmentAccountabilityCount(2); + section2.setTopProblemTypes(Arrays.asList( + buildRankItem("案件审核把关不严", 2, "33.33"), + buildRankItem("卷宗管理不规范", 2, "33.33"), + buildRankItem("系统录入不及时", 1, "16.67") + )); + section2.setTopUnits(Arrays.asList( + buildRankItem("XX法制大队", 2, "33.33"), + buildRankItem("XX派出所", 1, "16.67"), + buildRankItem("XX治安大队", 1, "16.67") + )); + section2.setTopPersons(Arrays.asList( + buildPersonRankItem("赵六", "XX法制大队", "民警", 2, "33.33"), + buildPersonRankItem("孙七", "XX派出所", "民警", 1, "16.67"), + buildPersonRankItem("周八", "XX治安大队", "辅警", 1, "16.67") + )); + section2.setMomRate(new BigDecimal("12.50")); + section2.setMomTrend(TrendEnum.DOWN); + section2.setYoyRate(new BigDecimal("8.00")); + section2.setYoyTrend(TrendEnum.UP); + list.add(section2); + + // 第三条 + BusinessLineDetailSection section3 = new BusinessLineDetailSection(); + section3.setOrderNo("三"); + section3.setBusinessLineName("作风建设"); + section3.setBusinessFatherLineName("队伍管理"); + section3.setTotalIssued(7); + section3.setVerifiedTotal(5); + section3.setVerifiedRate(new BigDecimal("71.43")); + section3.setAccountabilityTotal(3); + section3.setAccountabilityRate(new BigDecimal("60.00")); + section3.setPersonalAccountabilityCount(2); + section3.setDepartmentAccountabilityCount(1); + section3.setTopProblemTypes(Arrays.asList( + buildRankItem("纪律作风问题", 2, "40.00"), + buildRankItem("窗口服务问题", 1, "20.00"), + buildRankItem("值班备勤问题", 1, "20.00") + )); + section3.setTopUnits(Arrays.asList( + buildRankItem("XX交警大队", 2, "40.00"), + buildRankItem("XX派出所", 1, "20.00"), + buildRankItem("XX巡特警大队", 1, "20.00") + )); + section3.setTopPersons(Arrays.asList( + buildPersonRankItem("吴九", "XX交警大队", "民警", 2, "40.00"), + buildPersonRankItem("郑十", "XX派出所", "辅警", 1, "20.00"), + buildPersonRankItem("钱一", "XX巡特警大队", "民警", 1, "20.00") + )); + section3.setMomRate(new BigDecimal("0.00")); + section3.setMomTrend(TrendEnum.STABLE); + section3.setYoyRate(new BigDecimal("15.00")); + section3.setYoyTrend(TrendEnum.UP); + list.add(section3); + + return list; + } + + private BusinessLineRankItem buildRankItem(String name, Integer count, String rate) { + BusinessLineRankItem item = new BusinessLineRankItem(); + item.setName(name); + item.setCount(count); + item.setRate(new BigDecimal(rate)); + return item; + } + + private BusinessLinePersonRankItem buildPersonRankItem(String personName, String unitName, String identityName, Integer count, String rate) { + BusinessLinePersonRankItem item = new BusinessLinePersonRankItem(); + item.setPersonName(personName); + item.setUnitName(unitName); + item.setIdentityName(identityName); + item.setCount(count); + item.setRate(new BigDecimal(rate)); + return item; + } + /** * 业务条线的总览 * @param request @@ -63,7 +251,7 @@ public class ReportDataServiceImpl implements ReportDataService { * @param periodEnd * @return */ - private BusinessLineOverviewSection buildbusinessLineOverviewSection(NegativeQueryParam request, String periodStart, String periodEnd) { + private BusinessLineOverviewSection buildBusinessLineOverviewSection(NegativeQueryParam request, String periodStart, String periodEnd) { // 总体数据 NegativeQueryParam ztNegativeQueryParam = request.newQueryParam(); List ztNegativeList = negativeQueryService.page(ztNegativeQueryParam).getRecords(); diff --git a/src/main/resources/static/templates/督审一体化平台研判分析报告.docx b/src/main/resources/static/templates/督审一体化平台研判分析报告.docx index 5eae08f5cbb459b759fa10f41d12cbd6e175d50c..db67adc4227249d15b0c4c4977e5f17838cb19d0 100644 GIT binary patch delta 23744 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 gSz!t$UwZJ<2rOb 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