From 78e7243f324724160c42d22616c38fd83c714f24 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 15 五月 2026 10:42:24 +0800
Subject: [PATCH] feat:安全检查报告模版

---
 admin-server/src/main/java/com/estate/expert/admin/stat/report/builder/SystemReportBuilder.java |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/admin-server/src/main/java/com/estate/expert/admin/stat/report/builder/SystemReportBuilder.java b/admin-server/src/main/java/com/estate/expert/admin/stat/report/builder/SystemReportBuilder.java
index 0a24858..5ca7a91 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/stat/report/builder/SystemReportBuilder.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/stat/report/builder/SystemReportBuilder.java
@@ -13,7 +13,6 @@
 import com.estate.expert.admin.stat.report.render.AbstractInfoTablePolicy;
 import com.estate.expert.admin.stat.report.render.CheckInfoTablePolicy;
 import com.estate.expert.admin.stat.report.render.CustomPictureRenderPolicy;
-import lombok.AllArgsConstructor;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.util.CollectionUtils;
 
@@ -24,10 +23,22 @@
 /**
  * 第三方评估报告构建器
  */
-@AllArgsConstructor
 public class SystemReportBuilder implements ReportBuilderBase {
 
+    private static final String DEFAULT_TEMPLATE_FILE = "第三方评估报告.docx";
+
     protected UserFileService userFileService;
+
+    private final String templateFile;
+
+    public SystemReportBuilder(UserFileService userFileService) {
+        this(userFileService, DEFAULT_TEMPLATE_FILE);
+    }
+
+    public SystemReportBuilder(UserFileService userFileService, String templateFile) {
+        this.userFileService = userFileService;
+        this.templateFile = templateFile;
+    }
 
     /**
      * 构建第三方评估报告
@@ -37,7 +48,7 @@
      */
     @Override
     public XWPFTemplate buildReport(JSONObject data, Map<String, Integer> templateConfig) {
-        var res = new ClassPathResource("templates/第三方评估报告.docx");
+        var res = new ClassPathResource("templates/" + templateFile);
 
         var viewConfig = templateConfig != null ? toViewConfig(templateConfig) : null;
         var builder = initConfig(viewConfig);
@@ -77,6 +88,7 @@
     private ConfigureBuilder initConfig(Map<String, Boolean> viewConfig){
         ConfigureBuilder builder = Configure.builder();
         builder.bind("data.设备信息", new LoopRowTableRenderPolicy());
+        builder.bind("data.设备分组信息", new LoopRowTableRenderPolicy());
         builder.bind("data.评估结果.隐患等级分布.分项", new LoopRowTableRenderPolicy());
         builder.bind("分项评估",  new CheckInfoTablePolicy());
 
@@ -107,10 +119,15 @@
      * @param dataMap 数据映射
      */
     private void initChart(JSONObject data, Map<String, Object> dataMap){
-        var checkCategories = data.getJSONObject("评估结果").getJSONArray("检查项");
+        var evalResult = data.getJSONObject("评估结果");
+        var checkCategories = evalResult.getJSONArray("检查项");
         if(checkCategories == null) return;
+        var safetyCategories = new JSONArray();
         for (var c : checkCategories){
             var co = (JSONObject)c;
+            var name = co.getString("名称");
+            if(name != null && name.contains("安全"))
+                safetyCategories.add(co);
             var pieChart = buildPieChart(co);
             if(pieChart!=null)
                 co.put("问题分布饼图", pieChart);
@@ -118,6 +135,9 @@
             if(barChart!=null)
                 co.put("问题分布直方图", barChart);
         }
+        if(safetyCategories.isEmpty() && !checkCategories.isEmpty())
+            safetyCategories.add(checkCategories.get(0));
+        evalResult.put("安全检查项", safetyCategories);
     }
 
     /**

--
Gitblit v1.7.1