From 4f3666c00b00bc1b68975aa46e5c6065c971f03c Mon Sep 17 00:00:00 2001 From: buaixuexideshitongxue <2936013465@qq.com> Date: Thu, 5 Mar 2026 16:43:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A0=94=E5=88=A4=E5=88=86=E6=9E=90=E6=8A=A5?= =?UTF-8?q?=E5=91=8A--step1--=E6=80=BB=E4=BD=93=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 + .../constants/enums/CheckStatusEnum.java | 17 ++ .../controller/work/NegativeController.java | 10 + .../pojo/dto/report/OverviewSection.java | 105 +++++++++ .../pojo/dto/report/ReportViewModel.java | 28 +++ .../pojo/enums/report/TrendEnum.java | 31 +++ .../NegativeBlameQueryParam.java | 6 + .../negative/ReportGenerationRequest.java | 45 ++++ .../NegativeBlameResourceService.java | 2 +- .../supervision/service/NegativeService.java | 62 +++++ .../negativeReport/NegativeReportService.java | 4 + .../NegativeReportServiceImpl.java | 20 ++ .../service/report/ReportDataService.java | 19 ++ .../service/report/ReportDataServiceImpl.java | 185 +++++++++++++++ .../supervision/util/ChartRenderUtil.java | 219 ++++++++++++++++++ .../util/DateCompareRangeUtil.java | 78 +++++++ .../supervision/util/ReportTrendUtil.java | 124 ++++++++++ .../com/biutag/supervision/util/TimeUtil.java | 7 + ...审一体化平台研判分析报告.docx | Bin 0 -> 88615 bytes 19 files changed, 973 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/OverviewSection.java create mode 100644 src/main/java/com/biutag/supervision/pojo/dto/report/ReportViewModel.java create mode 100644 src/main/java/com/biutag/supervision/pojo/enums/report/TrendEnum.java create mode 100644 src/main/java/com/biutag/supervision/pojo/request/negative/ReportGenerationRequest.java create mode 100644 src/main/java/com/biutag/supervision/service/negativeReport/NegativeReportService.java create mode 100644 src/main/java/com/biutag/supervision/service/negativeReport/NegativeReportServiceImpl.java create mode 100644 src/main/java/com/biutag/supervision/service/report/ReportDataService.java create mode 100644 src/main/java/com/biutag/supervision/service/report/ReportDataServiceImpl.java create mode 100644 src/main/java/com/biutag/supervision/util/ChartRenderUtil.java create mode 100644 src/main/java/com/biutag/supervision/util/DateCompareRangeUtil.java create mode 100644 src/main/java/com/biutag/supervision/util/ReportTrendUtil.java create mode 100644 src/main/resources/static/templates/督审一体化平台研判分析报告.docx diff --git a/pom.xml b/pom.xml index c8aa6dc..9f0b2b1 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,18 @@ + + org.jfree + jfreechart + 1.5.4 + + + + com.deepoove + poi-tl + 1.12.2 + + org.projectlombok lombok diff --git a/src/main/java/com/biutag/supervision/constants/enums/CheckStatusEnum.java b/src/main/java/com/biutag/supervision/constants/enums/CheckStatusEnum.java index 666129d..835c4fe 100644 --- a/src/main/java/com/biutag/supervision/constants/enums/CheckStatusEnum.java +++ b/src/main/java/com/biutag/supervision/constants/enums/CheckStatusEnum.java @@ -3,6 +3,8 @@ package com.biutag.supervision.constants.enums; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.List; + @Getter @AllArgsConstructor public enum CheckStatusEnum { @@ -20,4 +22,19 @@ public enum CheckStatusEnum { private String label; + /** + * 属实 + */ + public static final List TRUE_LIST = List.of(TRUE.value); + + /** + * 部分属实 + */ + public static final List PART_TRUE_LIST = List.of(PARTIALLY_TRUE.value, QTFT.value); + + /** + * 不属实 + */ + public static final List FALSE_LIST = List.of(WFCS.value, FALSE.value); + } diff --git a/src/main/java/com/biutag/supervision/controller/work/NegativeController.java b/src/main/java/com/biutag/supervision/controller/work/NegativeController.java index f8cd869..98f0362 100644 --- a/src/main/java/com/biutag/supervision/controller/work/NegativeController.java +++ b/src/main/java/com/biutag/supervision/controller/work/NegativeController.java @@ -22,15 +22,19 @@ import com.biutag.supervision.pojo.dto.flow.VerifyData; import com.biutag.supervision.pojo.entity.*; import com.biutag.supervision.pojo.model.UserAuth; import com.biutag.supervision.pojo.param.NegativeQueryParam; +import com.biutag.supervision.pojo.request.negative.ReportGenerationRequest; import com.biutag.supervision.pojo.vo.NegativeConfirmationCompletionVo; import com.biutag.supervision.pojo.vo.NegativeQueryVo; import com.biutag.supervision.service.*; import com.biutag.supervision.util.JSON; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.UnsupportedEncodingException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Objects; @@ -298,4 +302,10 @@ public class NegativeController { return Result.success(); } + @Operation(summary = "生成研判分析报告") + @PostMapping("/generateReport") + public void generateReport(@RequestBody ReportGenerationRequest request, HttpServletResponse response) throws UnsupportedEncodingException { + negativeService.generateReport(request, response); + } + } diff --git a/src/main/java/com/biutag/supervision/pojo/dto/report/OverviewSection.java b/src/main/java/com/biutag/supervision/pojo/dto/report/OverviewSection.java new file mode 100644 index 0000000..e08c281 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/OverviewSection.java @@ -0,0 +1,105 @@ +package com.biutag.supervision.pojo.dto.report; + +import com.biutag.supervision.pojo.enums.report.TrendEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "研判分析报告-总体统计数据") +public class OverviewSection { + + @Schema(description = "统计开始时间", example = "2026年3月1日") + private String periodStart; + + @Schema(description = "统计结束时间", example = "2026年3月31日") + private String periodEnd; + + @Schema(description = "全市下发督审数据总数", example = "1286") + private Integer totalIssued; + + @Schema(description = "环比趋势") + private TrendEnum momTrend; + + @Schema(description = "环比增长率", example = "12.5") + private BigDecimal momRate; + + @Schema(description = "同比趋势") + private TrendEnum yoyTrend; + + @Schema(description = "同比增长率", example = "18.2") + private BigDecimal yoyRate; + + @Schema(description = "市局层面下发数量", example = "356") + private Integer cityIssued; + + @Schema(description = "市局下发占比", example = "27.7") + private BigDecimal cityRate; + + @Schema(description = "分县市局下发数量", example = "930") + private Integer countyIssued; + + @Schema(description = "分县市局下发占比", example = "72.3") + private BigDecimal countyRate; + + @Schema(description = "已办结数据数量", example = "1100") + private Integer closedCount; + + @Schema(description = "查实数量", example = "420") + private Integer verifiedCount; + + @Schema(description = "基本属实数量", example = "380") + private Integer basicallyVerifiedCount; + + @Schema(description = "不属实数量", example = "300") + private Integer unverifiedCount; + + @Schema(description = "总体查实率", example = "72.7") + private BigDecimal verifiedRate; + + @Schema(description = "查实率环比趋势") + private TrendEnum verifiedMomTrend; + + @Schema(description = "查实率环比变化率", example = "3.2") + private BigDecimal verifiedMomRate; + + @Schema(description = "查实率同比趋势") + private TrendEnum verifiedYoyTrend; + + @Schema(description = "查实率同比变化率", example = "5.1") + private BigDecimal verifiedYoyRate; + + @Schema(description = "问责总人次", example = "58") + private Integer accountabilityTotal; + + @Schema(description = "个人问责次数", example = "45") + private Integer personalAccountability; + + @Schema(description = "单位问责次数", example = "13") + private Integer unitAccountability; + + @Schema(description = "问责环比趋势") + private TrendEnum accountabilityMomTrend; + + @Schema(description = "问责环比变化率", example = "8.6") + private BigDecimal accountabilityMomRate; + + @Schema(description = "问责同比趋势") + private TrendEnum accountabilityYoyTrend; + + @Schema(description = "问责同比变化率", example = "6.4") + private BigDecimal accountabilityYoyRate; + + /** + * @see com.biutag.supervision.pojo.enums.report.TrendEnum + */ + @Schema(description = "整体趋势") + private TrendEnum overallTrend; + + @Schema(description = "问题集中项目", example = "工程招投标") + private String topProblemProject; + + @Schema(description = "需重点关注单位", example = "XX县局") + private String topProblemUnit; +} \ No newline at end of file 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 new file mode 100644 index 0000000..b0ebde6 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/report/ReportViewModel.java @@ -0,0 +1,28 @@ +package com.biutag.supervision.pojo.dto.report; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * @ClassName ReportGenerationDTO + * @Description TODO + * @Author shihao + * @Date 2026/3/5 9:26 + */ +@Getter +@Setter +@Schema(description = "研判分析报告DTO") +public class ReportViewModel { + + @Schema(description = "统计开始时间", example = "2026年3月1日") + private String periodStart; + + @Schema(description = "统计结束时间", example = "2026年3月31日") + private String periodEnd; + + + @Schema(description = "总体部分") + private OverviewSection overviewSection; + +} diff --git a/src/main/java/com/biutag/supervision/pojo/enums/report/TrendEnum.java b/src/main/java/com/biutag/supervision/pojo/enums/report/TrendEnum.java new file mode 100644 index 0000000..0f45730 --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/enums/report/TrendEnum.java @@ -0,0 +1,31 @@ +package com.biutag.supervision.pojo.enums.report; + +import com.biutag.supervision.constants.enums.CodeEnum; +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(description = "趋势类型") +public enum TrendEnum implements CodeEnum { + UP("UP","上升"), + DOWN("DOWN","下降"), + STABLE("STABLE","持平"); + + private final String code; + private final String desc; + + + + TrendEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + @Override + public String getCode() { + return code; + } + + @Override + public String getDesc() { + return desc; + } +} diff --git a/src/main/java/com/biutag/supervision/pojo/param/negativeBlame/NegativeBlameQueryParam.java b/src/main/java/com/biutag/supervision/pojo/param/negativeBlame/NegativeBlameQueryParam.java index 852af3b..ea40a20 100644 --- a/src/main/java/com/biutag/supervision/pojo/param/negativeBlame/NegativeBlameQueryParam.java +++ b/src/main/java/com/biutag/supervision/pojo/param/negativeBlame/NegativeBlameQueryParam.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; +import java.util.List; import java.util.Set; /** @@ -16,6 +17,11 @@ import java.util.Set; @Setter public class NegativeBlameQueryParam { + @Schema(description = "问题id") + private String negativeId; + + @Schema(description = "问题Ids") + private List negativeIds; @Schema(description = "涉及人员禁闭处罚id") private String confinementId; diff --git a/src/main/java/com/biutag/supervision/pojo/request/negative/ReportGenerationRequest.java b/src/main/java/com/biutag/supervision/pojo/request/negative/ReportGenerationRequest.java new file mode 100644 index 0000000..5bd044d --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/request/negative/ReportGenerationRequest.java @@ -0,0 +1,45 @@ +package com.biutag.supervision.pojo.request.negative; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import com.biutag.supervision.aop.ParamChecked; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.ValidationException; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.Objects; + +/** + * @ClassName ReportGenerationRequest + * @Description TODO + * @Author shihao + * @Date 2026/3/4 16:38 + */ +@Setter +@Getter +@Schema(description = "研判分析报告生成请求") +public class ReportGenerationRequest implements ParamChecked { + + @Schema(description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date beginTime; + + @Schema(description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date endTime; + + + @Override + public void check() { + if (Objects.isNull(beginTime) || Objects.isNull(endTime)){ + throw new ValidationException("必须选择时间"); + } + // 统一格式化时间 + this.beginTime = DateUtil.beginOfDay(this.beginTime); + this.endTime = DateUtil.endOfDay(this.endTime); + } +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/repository/negativeBlame/NegativeBlameResourceService.java b/src/main/java/com/biutag/supervision/repository/negativeBlame/NegativeBlameResourceService.java index 4ddb5fa..c150049 100644 --- a/src/main/java/com/biutag/supervision/repository/negativeBlame/NegativeBlameResourceService.java +++ b/src/main/java/com/biutag/supervision/repository/negativeBlame/NegativeBlameResourceService.java @@ -28,7 +28,7 @@ public class NegativeBlameResourceService extends BaseDAO { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); setBatchQuery(param.getConfinementId(), param.getConfinementIds(), queryWrapper, NegativeBlame::getConfinementId); setBatchQuery(param.getLeadConfinementId(), param.getLeadConfinementIds(), queryWrapper, NegativeBlame::getLeadConfinementId); - + setBatchQuery(param.getNegativeId(), param.getNegativeIds(), queryWrapper, NegativeBlame::getNegativeId); // 防御 if (queryWrapper.getExpression() == null || queryWrapper.getExpression().getSqlSegment().isEmpty()) { return Collections.emptyList(); diff --git a/src/main/java/com/biutag/supervision/service/NegativeService.java b/src/main/java/com/biutag/supervision/service/NegativeService.java index 2787e9f..6340b1f 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeService.java @@ -27,17 +27,31 @@ import com.biutag.supervision.pojo.dto.NegativeDto; import com.biutag.supervision.pojo.dto.flow.FirstDistributeData; import com.biutag.supervision.pojo.dto.flow.VerifyData; import com.biutag.supervision.pojo.dto.jwdc.NegativeApiDto; +import com.biutag.supervision.pojo.dto.report.ReportViewModel; import com.biutag.supervision.pojo.entity.*; import com.biutag.supervision.pojo.model.UserAuth; +import com.biutag.supervision.pojo.request.negative.ReportGenerationRequest; import com.biutag.supervision.pojo.vo.NegativeFileVo; +import com.biutag.supervision.service.report.ReportDataService; +import com.biutag.supervision.util.ChartRenderUtil; import com.biutag.supervision.util.SpringUtil; import com.biutag.supervision.util.TimeUtil; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.data.Pictures; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StreamUtils; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.atomic.AtomicReference; @@ -80,6 +94,8 @@ public class NegativeService extends ServiceImpl { private final NegativeCountersignApplyService countersignApplyService; + private final ReportDataService reportDataService; + public NegativeDetail get(String id, Integer workId) { Negative negative = getById(id); List flows = negativeHistoryService.listByNegativeId(id); @@ -476,4 +492,50 @@ public class NegativeService extends ServiceImpl { } } + + + + public void generateReport(ReportGenerationRequest request, HttpServletResponse response) { + // 你要返回的模板路径 + String templatePath = "static/templates/督审一体化平台研判分析报告.docx"; + ClassPathResource resource = new ClassPathResource(templatePath); + if (!resource.exists()) { + // 资源不存在,返回 404 + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + response.setContentType("application/json;charset=UTF-8"); + try { + response.getWriter().write("{\"message\":\"模板文件不存在: " + templatePath + "\"}"); + } catch (IOException ignored) {} + return; + } + // 1) 准备模板变量(含图表) + ReportViewModel vm = reportDataService.buildViewModel(request); + // 2) 响应头(docx 正确类型) + String downloadName = "督审一体化平台研判分析报告.docx"; + String encoded = URLEncoder.encode(downloadName, StandardCharsets.UTF_8).replaceAll("\\+", "%20"); + String contentDisposition = "attachment; filename=\"" + encoded + "\"; filename*=UTF-8''" + encoded; + + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", contentDisposition); + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + response.setHeader("Pragma", "no-cache"); + response.setDateHeader("Expires", 0); + + // 3) 关键:compile + render + write(不要 StreamUtils.copy) + try (InputStream in = resource.getInputStream(); + XWPFTemplate template = XWPFTemplate.compile(in).render(vm); + ServletOutputStream out = response.getOutputStream()) { + + template.write(out); + out.flush(); + + } catch (Exception e) { + log.error("生成/下载报告失败", e); + // 如果你们有统一异常处理,可以直接抛出去 + // throw new RuntimeException("生成报告失败", e); + } + } } diff --git a/src/main/java/com/biutag/supervision/service/negativeReport/NegativeReportService.java b/src/main/java/com/biutag/supervision/service/negativeReport/NegativeReportService.java new file mode 100644 index 0000000..d4a9876 --- /dev/null +++ b/src/main/java/com/biutag/supervision/service/negativeReport/NegativeReportService.java @@ -0,0 +1,4 @@ +package com.biutag.supervision.service.negativeReport; + +public interface NegativeReportService { +} diff --git a/src/main/java/com/biutag/supervision/service/negativeReport/NegativeReportServiceImpl.java b/src/main/java/com/biutag/supervision/service/negativeReport/NegativeReportServiceImpl.java new file mode 100644 index 0000000..7f8fc7d --- /dev/null +++ b/src/main/java/com/biutag/supervision/service/negativeReport/NegativeReportServiceImpl.java @@ -0,0 +1,20 @@ +package com.biutag.supervision.service.negativeReport; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @ClassName NegativeReportServiceImpl + * @Description TODO + * @Author shihao + * @Date 2026/3/4 18:34 + */ +@Slf4j +@Service +@RequiredArgsConstructor +@Schema(description = "研判分析报告") +public class NegativeReportServiceImpl implements NegativeReportService { + +} diff --git a/src/main/java/com/biutag/supervision/service/report/ReportDataService.java b/src/main/java/com/biutag/supervision/service/report/ReportDataService.java new file mode 100644 index 0000000..d31c12b --- /dev/null +++ b/src/main/java/com/biutag/supervision/service/report/ReportDataService.java @@ -0,0 +1,19 @@ +package com.biutag.supervision.service.report; + + +import com.biutag.supervision.pojo.dto.report.ReportViewModel; +import com.biutag.supervision.pojo.request.negative.ReportGenerationRequest; + +public interface ReportDataService { + + + /** + * 构建概要 + * @param request + * @return + */ + ReportViewModel buildViewModel(ReportGenerationRequest request); + + + +} diff --git a/src/main/java/com/biutag/supervision/service/report/ReportDataServiceImpl.java b/src/main/java/com/biutag/supervision/service/report/ReportDataServiceImpl.java new file mode 100644 index 0000000..acd9ba9 --- /dev/null +++ b/src/main/java/com/biutag/supervision/service/report/ReportDataServiceImpl.java @@ -0,0 +1,185 @@ +package com.biutag.supervision.service.report; + +import cn.hutool.core.util.StrUtil; +import com.biutag.supervision.constants.enums.CheckStatusEnum; +import com.biutag.supervision.pojo.dto.report.OverviewSection; +import com.biutag.supervision.pojo.dto.report.ReportViewModel; +import com.biutag.supervision.pojo.entity.Negative; +import com.biutag.supervision.pojo.entity.NegativeBlame; +import com.biutag.supervision.pojo.param.NegativeQueryParam; +import com.biutag.supervision.pojo.param.negativeBlame.NegativeBlameQueryParam; +import com.biutag.supervision.pojo.request.negative.ReportGenerationRequest; +import com.biutag.supervision.repository.negative.NegativeResourceService; +import com.biutag.supervision.repository.negativeBlame.NegativeBlameResourceService; +import com.biutag.supervision.util.DateCompareRangeUtil; +import com.biutag.supervision.util.ReportTrendUtil; +import com.biutag.supervision.util.TimeUtil; +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.stream.Stream; + +@Service +public class ReportDataServiceImpl implements ReportDataService { + + @Resource + private NegativeResourceService negativeResourceService; + + @Resource + private NegativeBlameResourceService negativeBlameResourceService; + + @Override + public ReportViewModel buildViewModel(ReportGenerationRequest request) { + String periodStart = TimeUtil.formatDate(request.getBeginTime()); + String periodEnd = TimeUtil.formatDate(request.getEndTime()); + ReportViewModel vm = new ReportViewModel(); + vm.setPeriodStart(periodStart); + vm.setPeriodEnd(periodEnd); + vm.setOverviewSection(buildOverviewSection(request, periodStart, periodEnd)); +// + return vm; + } + + /** + * 总体情况计算 + * + * @param request + * @param periodStart + * @param periodEnd + * @return + */ + private OverviewSection buildOverviewSection(ReportGenerationRequest request, String periodStart, String periodEnd) { + + DateCompareRangeUtil.CompareDateRange compareDateRange = DateCompareRangeUtil.buildCompareDateRange(request.getBeginTime(), request.getEndTime()); + // 总体数据 + NegativeQueryParam ztNegativeQueryParam = new NegativeQueryParam(); + ztNegativeQueryParam.setCrtTime(compareDateRange.current()); + List ztNegativeList = negativeResourceService.query(ztNegativeQueryParam); + // 环比数据 + NegativeQueryParam hbQueryParam = new NegativeQueryParam(); + hbQueryParam.setCrtTime(compareDateRange.mom()); + List hbNegativList = negativeResourceService.query(hbQueryParam); + // 同比数据 + NegativeQueryParam tbQueryParam = new NegativeQueryParam(); + tbQueryParam.setCrtTime(compareDateRange.yoy()); + List tbNegativList = negativeResourceService.query(tbQueryParam); + + // 市局下发数据 + List sjxfNegativeList = ztNegativeList.stream().filter(one -> Objects.equals(0, one.getCrtDepartLevel())).toList(); + // 分县市局下发数据 + List fxsjxfNegativeList = ztNegativeList.stream().filter(one -> Objects.equals(2, one.getCrtDepartLevel())).toList(); + // 办结数据 + List bjNegativeList = ztNegativeList.stream().filter(one -> !Objects.isNull(one.getCompleteDate())).toList(); + // 办结中属实数据 + List bjssNegativeList = bjNegativeList.stream().filter(one -> CheckStatusEnum.TRUE_LIST.contains(one.getCheckStatusCode())).toList(); + // 办结中基本属实数据 + List bjjbssNegativeList = bjNegativeList.stream().filter(one -> CheckStatusEnum.PART_TRUE_LIST.contains(one.getCheckStatusCode())).toList(); + // 办结中不属实数据 + List bjbssNegativeList = bjNegativeList.stream().filter(one -> CheckStatusEnum.FALSE_LIST.contains(one.getCheckStatusCode())).toList(); + // 属实 基本属实中的问责数据 + List ssNegativeIds = Stream.concat(bjssNegativeList.stream(), bjjbssNegativeList.stream()) + .map(Negative::getId).filter(StrUtil::isNotBlank).distinct().toList(); + NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam(); + negativeBlameQueryParam.setNegativeIds(ssNegativeIds); + List negativeBlames = negativeBlameResourceService.query(negativeBlameQueryParam); + // 个人问责 + List grwzNegativeBlames = negativeBlames.stream().filter(one -> "personal".equals(one.getType())) + .filter(one -> StrUtil.isNotBlank(one.getHandleResultName())) + .filter(one -> !"不予追责".equals(one.getHandleResultName())).toList(); + + // 单位问责 + List dwwzNegativeBlames = negativeBlames.stream() + .filter(one -> "department".equals(one.getType())) + .filter(one -> StrUtil.isNotBlank(one.getHandleResultName())) + .filter(one -> !"不予追责".equals(one.getHandleResultName())).toList(); + // 第一段 + int current = ztNegativeList.size(); + int mom = hbNegativList.size(); + int yoy = tbNegativList.size(); + // 第二段 + int closedCount = bjNegativeList.size(); // 总办结 + int verifiedCount = bjssNegativeList.size(); // 查实 + int basicallyVerifiedCount = bjjbssNegativeList.size();// 基本属实 + int unverifiedCount = bjbssNegativeList.size(); // 不属实 + + + OverviewSection overviewSection = new OverviewSection(); + // 时间 + overviewSection.setPeriodStart(periodStart); + overviewSection.setPeriodEnd(periodEnd); + // 总条数 + overviewSection.setTotalIssued(ztNegativeList.size()); + // 总条数环比 + overviewSection.setMomRate(ReportTrendUtil.calcRate(current, mom)); + overviewSection.setMomTrend(ReportTrendUtil.calcTrend(current, mom)); + // 总条数同比 + overviewSection.setYoyRate(ReportTrendUtil.calcRate(current, yoy)); + overviewSection.setYoyTrend(ReportTrendUtil.calcTrend(current, yoy)); + // 市局下发 + overviewSection.setCityIssued(sjxfNegativeList.size()); + overviewSection.setCityRate(ReportTrendUtil.percent(sjxfNegativeList.size(), ztNegativeList.size())); + // 分县市局下发 + overviewSection.setCountyIssued(fxsjxfNegativeList.size()); + overviewSection.setCountyRate(ReportTrendUtil.percent(fxsjxfNegativeList.size(), ztNegativeList.size())); + // 办结总数据 + overviewSection.setClosedCount(closedCount); + overviewSection.setVerifiedCount(verifiedCount); + overviewSection.setBasicallyVerifiedCount(basicallyVerifiedCount); + overviewSection.setUnverifiedCount(unverifiedCount); + // 办结查实率 + // 1) 本期/环比/同比 查实率(都是 %,BigDecimal) + BigDecimal curVerifiedRate = calcVerifiedRate(ztNegativeList); + BigDecimal momVerifiedRate = calcVerifiedRate(hbNegativList); + BigDecimal yoyVerifiedRate = calcVerifiedRate(tbNegativList); + overviewSection.setVerifiedRate(curVerifiedRate); + // 3) 查实率环比(注意:率对率) + overviewSection.setVerifiedMomRate(ReportTrendUtil.calcRate(curVerifiedRate, momVerifiedRate)); + overviewSection.setVerifiedMomTrend(ReportTrendUtil.calcTrend(curVerifiedRate, momVerifiedRate)); + // 4) 查实率同比(注意:率对率) + overviewSection.setVerifiedYoyRate(ReportTrendUtil.calcRate(curVerifiedRate, yoyVerifiedRate)); + overviewSection.setVerifiedYoyTrend(ReportTrendUtil.calcTrend(curVerifiedRate, yoyVerifiedRate)); + + // 集中问题 + Map.Entry problemEntry = ReportTrendUtil.topBy(Negative::getProblemSources, bjssNegativeList, bjjbssNegativeList); + String problemSource = problemEntry != null ? problemEntry.getKey() : null; + Long problemSourceCount = problemEntry != null ? problemEntry.getValue() : 0; + overviewSection.setTopProblemProject(problemSource); + // 重点关注单位 + Map.Entry departEntry = ReportTrendUtil.topBy(Negative::getInvolveDepartName, bjssNegativeList, bjjbssNegativeList); + String departName = departEntry != null ? departEntry.getKey() : null; + Long departNameCount = departEntry != null ? departEntry.getValue() : 0; + overviewSection.setTopProblemUnit(departName); + return overviewSection; + } + + + // 查实率 + private BigDecimal calcVerifiedRate(List list) { + // 办结 + List closed = list.stream().filter(n -> n.getCompleteDate() != null).toList(); + + int closedCount = closed.size(); + if (closedCount == 0) { + return BigDecimal.ZERO; + } + + // 属实 + int verified = (int) closed.stream() + .filter(n -> CheckStatusEnum.TRUE_LIST.contains(n.getCheckStatusCode())) + .count(); + + // 基本属实 + int partVerified = (int) closed.stream() + .filter(n -> CheckStatusEnum.PART_TRUE_LIST.contains(n.getCheckStatusCode())) + .count(); + + // 查实率 = (属实 + 基本属实) / 办结 + return ReportTrendUtil.percent(verified + partVerified, closedCount); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/util/ChartRenderUtil.java b/src/main/java/com/biutag/supervision/util/ChartRenderUtil.java new file mode 100644 index 0000000..a4aaded --- /dev/null +++ b/src/main/java/com/biutag/supervision/util/ChartRenderUtil.java @@ -0,0 +1,219 @@ +package com.biutag.supervision.util; + +import org.jfree.chart.ChartFactory; +import org.jfree.chart.ChartUtils; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; +import org.jfree.chart.labels.StandardPieSectionLabelGenerator; +import org.jfree.chart.plot.CategoryPlot; +import org.jfree.chart.plot.PiePlot; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.renderer.category.BarRenderer; +import org.jfree.chart.title.LegendTitle; +import org.jfree.data.category.DefaultCategoryDataset; +import org.jfree.data.general.DefaultPieDataset; + +import java.awt.*; +import java.io.ByteArrayOutputStream; +import java.text.NumberFormat; +import java.util.Map; + +/** + * 图表渲染工具(PNG) + * - 适配报告输出:白底、抗锯齿、中文字体、标签更清晰、柱状图显示数值 + */ +public class ChartRenderUtil { + + // ========================= + // 对外 API:根据数据生成图 + // ========================= + + public static byte[] piePng(Map data, int w, int h) { + DefaultPieDataset dataset = new DefaultPieDataset<>(); + data.forEach(dataset::setValue); + + JFreeChart chart = ChartFactory.createPieChart( + "占比统计", // 你不想要标题可以传 null + dataset, + true, + false, + false + ); + + beautifyPie(chart); + return toPng(chart, w, h, "生成饼图失败"); + } + + public static byte[] barPng(Map data, String xLabel, String yLabel, int w, int h) { + DefaultCategoryDataset dataset = new DefaultCategoryDataset(); + // series 用一个固定值即可(yLabel 也行) + data.forEach((k, v) -> dataset.addValue(v, yLabel, k)); + + JFreeChart chart = ChartFactory.createBarChart( + "统计分析", // 你不想要标题可以传 null + xLabel, + yLabel, + dataset, + PlotOrientation.VERTICAL, + true, + false, + false + ); + + beautifyBar(chart); + return toPng(chart, w, h, "生成柱状图失败"); + } + + // ========================= + // Demo:随便生成一个图(可留可删) + // ========================= + + public static byte[] createPieChart() { + return piePng(Map.of("查实", 40, "基本属实", 30, "不属实", 30), 900, 520); + } + + public static byte[] createBarChart() { + return barPng(Map.of("市局", 120, "分县市局", 80, "基层单位", 50), "单位", "数量", 900, 520); + } + + // ========================= + // 美化:饼图 + // ========================= + + private static void beautifyPie(JFreeChart chart) { + chart.setAntiAlias(true); + chart.setTextAntiAlias(true); + chart.setBackgroundPaint(Color.WHITE); + chart.setBorderVisible(false); + + Font titleFont = pickFont(Font.BOLD, 16); + Font legendFont = pickFont(Font.PLAIN, 12); + Font labelFont = pickFont(Font.PLAIN, 12); + + if (chart.getTitle() != null) { + chart.getTitle().setFont(titleFont); + } + + LegendTitle legend = chart.getLegend(); + if (legend != null) { + legend.setItemFont(legendFont); + legend.setBackgroundPaint(Color.WHITE); + } + + PiePlot plot = (PiePlot) chart.getPlot(); + plot.setBackgroundPaint(Color.WHITE); + plot.setOutlineVisible(false); + + // label 样式:白底半透明,边框淡一点,去阴影 + plot.setLabelFont(labelFont); + plot.setLabelBackgroundPaint(new Color(255, 255, 255, 235)); + plot.setLabelOutlinePaint(new Color(220, 220, 220)); + plot.setLabelShadowPaint(null); + + // 标签内容:名称 + 百分比(例:查实 40.0%) + plot.setLabelGenerator(new StandardPieSectionLabelGenerator( + "{0} {2}", + NumberFormat.getNumberInstance(), + NumberFormat.getPercentInstance() + )); + + // 让饼图别贴边 + plot.setInteriorGap(0.03); + + // 分离效果(可选:更“立体”,如果你觉得花哨可以注释) + // plot.setExplodePercent("查实", 0.04); + } + + // ========================= + // 美化:柱状图 + // ========================= + + private static void beautifyBar(JFreeChart chart) { + chart.setAntiAlias(true); + chart.setTextAntiAlias(true); + chart.setBackgroundPaint(Color.WHITE); + chart.setBorderVisible(false); + + Font titleFont = pickFont(Font.BOLD, 16); + Font legendFont = pickFont(Font.PLAIN, 12); + Font axisFont = pickFont(Font.PLAIN, 12); + Font valueFont = pickFont(Font.PLAIN, 12); + + if (chart.getTitle() != null) { + chart.getTitle().setFont(titleFont); + } + + LegendTitle legend = chart.getLegend(); + if (legend != null) { + legend.setItemFont(legendFont); + legend.setBackgroundPaint(Color.WHITE); + } + + CategoryPlot plot = chart.getCategoryPlot(); + plot.setBackgroundPaint(Color.WHITE); + plot.setOutlineVisible(false); + + // 网格线淡一点(更干净) + plot.setRangeGridlinePaint(new Color(230, 230, 230)); + plot.setRangeGridlinesVisible(true); + + // 轴字体 + plot.getDomainAxis().setTickLabelFont(axisFont); + plot.getDomainAxis().setLabelFont(axisFont); + plot.getRangeAxis().setTickLabelFont(axisFont); + plot.getRangeAxis().setLabelFont(axisFont); + + // 柱体渲染:更清爽 + BarRenderer renderer = (BarRenderer) plot.getRenderer(); + renderer.setDrawBarOutline(false); + renderer.setShadowVisible(false); + renderer.setMaximumBarWidth(0.12); + renderer.setItemMargin(0.10); + + // 在柱子上方显示数值 + renderer.setDefaultItemLabelGenerator(new StandardCategoryItemLabelGenerator()); + renderer.setDefaultItemLabelsVisible(true); + renderer.setDefaultItemLabelFont(valueFont); + } + + // ========================= + // 输出 PNG + // ========================= + + private static byte[] toPng(JFreeChart chart, int w, int h, String errMsg) { + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + ChartUtils.writeChartAsPNG(out, chart, w, h); + return out.toByteArray(); + } catch (Exception e) { + throw new RuntimeException(errMsg, e); + } + } + + // ========================= + // 字体兜底(避免 Linux 没微软雅黑导致中文丑/方块) + // ========================= + + private static Font pickFont(int style, int size) { + // 按优先级尝试(Windows 常见:微软雅黑;Linux 常见:Noto/文泉驿/DejaVu) + String[] candidates = new String[]{ + "Microsoft YaHei", "微软雅黑", + "PingFang SC", "苹方-简", + "Noto Sans CJK SC", "Noto Sans SC", + "WenQuanYi Micro Hei", "文泉驿微米黑", + "SimSun", "宋体", + "Arial Unicode MS", + "SansSerif" + }; + + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + String[] available = ge.getAvailableFontFamilyNames(); + for (String c : candidates) { + for (String a : available) { + if (a.equalsIgnoreCase(c)) { + return new Font(a, style, size); + } + } + } + return new Font("SansSerif", style, size); + } +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/util/DateCompareRangeUtil.java b/src/main/java/com/biutag/supervision/util/DateCompareRangeUtil.java new file mode 100644 index 0000000..200dad2 --- /dev/null +++ b/src/main/java/com/biutag/supervision/util/DateCompareRangeUtil.java @@ -0,0 +1,78 @@ +package com.biutag.supervision.util; + +import java.time.*; +import java.time.temporal.ChronoUnit; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +public class DateCompareRangeUtil { + + private static final ZoneId ZONE = ZoneId.systemDefault(); + private static final LocalTime END_OF_DAY_MILLIS = LocalTime.of(23, 59, 59, 999_000_000); + + public record CompareDateRange(List current, List mom, List yoy) {} + + /** 本期/环比/同比(按天口径) */ + public static CompareDateRange buildCompareDateRange(Date beginTime, Date endTime) { + if (beginTime == null || endTime == null) { + throw new IllegalArgumentException("beginTime/endTime 不能为空"); + } + if (beginTime.after(endTime)) { + throw new IllegalArgumentException("beginTime 不能晚于 endTime"); + } + + LocalDate beginDate = toLocalDate(beginTime); + LocalDate endDate = toLocalDate(endTime); + + // 本期天数(包含首尾) + long daysInclusive = ChronoUnit.DAYS.between(beginDate, endDate) + 1; + + // 本期:begin 00:00:00 ~ end 23:59:59.999 + List current = Arrays.asList( + toDate(beginDate.atStartOfDay()), + toDate(endDate.atTime(END_OF_DAY_MILLIS)) + ); + + // 环比:向前推 N 天,且按你给的口径:momEnd = beginDate 当天 23:59:59.999(与本期重叠) + LocalDate momEndDate = beginDate; + LocalDate momBeginDate = momEndDate.minusDays(daysInclusive - 1); + + List mom = Arrays.asList( + toDate(momBeginDate.atStartOfDay()), + toDate(momEndDate.atTime(END_OF_DAY_MILLIS)) + ); + + // 同比:去年同期(begin/end 都减 1 年) + LocalDate yoyBeginDate = beginDate.minusYears(1); + LocalDate yoyEndDate = endDate.minusYears(1); + + List yoy = Arrays.asList( + toDate(yoyBeginDate.atStartOfDay()), + toDate(yoyEndDate.atTime(END_OF_DAY_MILLIS)) + ); + + return new CompareDateRange(current, mom, yoy); + } + + private static LocalDate toLocalDate(Date d) { + return d.toInstant().atZone(ZONE).toLocalDate(); + } + + private static Date toDate(LocalDateTime ldt) { + return Date.from(ldt.atZone(ZONE).toInstant()); + } + + // demo + public static void main(String[] args) { + Date begin = Date.from(LocalDateTime.of(2026, 2, 13, 20, 33, 33).atZone(ZONE).toInstant()); + Date end = Date.from(LocalDateTime.of(2026, 2, 23, 20, 33, 22).atZone(ZONE).toInstant()); + + CompareDateRange r = buildCompareDateRange(begin, end); + + System.out.println("current = " + r.current()); + System.out.println("mom = " + r.mom()); + System.out.println("yoy = " + r.yoy()); + } +} \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/util/ReportTrendUtil.java b/src/main/java/com/biutag/supervision/util/ReportTrendUtil.java new file mode 100644 index 0000000..adc5cee --- /dev/null +++ b/src/main/java/com/biutag/supervision/util/ReportTrendUtil.java @@ -0,0 +1,124 @@ +package com.biutag.supervision.util; + +import com.biutag.supervision.pojo.enums.report.TrendEnum; +import io.swagger.v3.oas.annotations.media.Schema; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @ClassName ReportTrendUtil + * @Description TODO + * @Author shihao + * @Date 2026/3/5 12:01 + */ +@Schema(description = "比率工具类") +public class ReportTrendUtil { + + + /** + * 计算变化率 + * (current - prev) / prev * 100 + */ + public static BigDecimal calcRate(int current, int prev) { + + if (prev == 0) { + return BigDecimal.ZERO; + } + + return BigDecimal.valueOf(current - prev) + .divide(BigDecimal.valueOf(prev), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)); + } + + + /** + * 判断趋势 + */ + public static TrendEnum calcTrend(int current, int prev) { + + if (current > prev) { + return TrendEnum.UP; + } + + if (current < prev) { + return TrendEnum.DOWN; + } + + return TrendEnum.STABLE; + } + + /** + * 计算百分比 + */ + public static BigDecimal percent(int part, int total) { + + if (total == 0) { + return BigDecimal.ZERO; + } + + return BigDecimal.valueOf(part) + .divide(BigDecimal.valueOf(total), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)); + } + + /** + * 计算变化率(百分比对百分比) + */ + public static BigDecimal calcRate(BigDecimal current, BigDecimal prev) { + + if (prev == null || prev.compareTo(BigDecimal.ZERO) == 0) { + return BigDecimal.ZERO; + } + + return current.subtract(prev) + .divide(prev, 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)); + } + + + /** + * 判断趋势(百分比对百分比) + */ + public static TrendEnum calcTrend(BigDecimal current, BigDecimal prev) { + + if (current == null) current = BigDecimal.ZERO; + if (prev == null) prev = BigDecimal.ZERO; + + int cmp = current.compareTo(prev); + + if (cmp > 0) { + return TrendEnum.UP; + } + + if (cmp < 0) { + return TrendEnum.DOWN; + } + + return TrendEnum.STABLE; + } + + public static Map.Entry topBy(Function mapper, List... lists) { + + return Arrays.stream(lists) + .filter(Objects::nonNull) + .flatMap(List::stream) + .map(mapper) + .filter(Objects::nonNull) + .collect(Collectors.groupingBy( + Function.identity(), + Collectors.counting() + )) + .entrySet().stream() + .max(Map.Entry.comparingByValue()) + .orElse(null); + } + + +} diff --git a/src/main/java/com/biutag/supervision/util/TimeUtil.java b/src/main/java/com/biutag/supervision/util/TimeUtil.java index d08a03f..2a0019d 100644 --- a/src/main/java/com/biutag/supervision/util/TimeUtil.java +++ b/src/main/java/com/biutag/supervision/util/TimeUtil.java @@ -6,9 +6,11 @@ import cn.hutool.core.util.StrUtil; import com.biutag.supervision.constants.enums.FlowNodeEnum; import com.biutag.supervision.service.HolidayService; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.temporal.ChronoUnit; +import java.util.Date; import java.util.Objects; public class TimeUtil { @@ -102,4 +104,9 @@ public class TimeUtil { } return getRemainingDuration(beginTime, maxHandleDuration, extensionDurationDays); } + + + public static String formatDate(Date date) { + return new SimpleDateFormat("yyyy年MM月dd日").format(date); + } } diff --git a/src/main/resources/static/templates/督审一体化平台研判分析报告.docx b/src/main/resources/static/templates/督审一体化平台研判分析报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..d13e753a704e8f5fd2ef4d86fdff2fc1d0850f32 GIT binary patch literal 88615 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

v%It}?eA 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

|u3=yw0g1&6pLvfX1j$NIwuRnqg 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 literal 0 HcmV?d00001