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 5eae08f..db67adc 100644 Binary files a/src/main/resources/static/templates/督审一体化平台研判分析报告.docx and b/src/main/resources/static/templates/督审一体化平台研判分析报告.docx differ