From 0e5d431f85612bf3abc0515fb6e46e500b5cdfe1 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 21 五月 2026 18:06:41 +0800
Subject: [PATCH] update

---
 admin-server/src/main/java/com/estate/expert/admin/stat/report/data/impl/SystemFuzzyReportData.java |    3 ++-
 admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java           |    8 --------
 admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java     |   24 +++++++++++++++++++++---
 3 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java b/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java
index da8af05..949300e 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java
@@ -198,18 +198,10 @@
     protected List<Object> buildErrorInfo(String nodePath) {
         var suffix = nodePath + "/";
         var errors = new ArrayList<>();
-        // 按 problem.id 去重,相同问题只保留第一个记录
         var nodeRecords = records.stream()
                 .filter(record -> record.getProblem() != null &&
                         record.getProblem().getHierarchyPath() != null &&
                         record.getProblem().getHierarchyPath().startsWith(suffix))
-                .collect(java.util.stream.Collectors.toMap(
-                        record -> record.getProblem().getId(),
-                        record -> record,
-                        (existing, replacement) -> existing  // 保留第一个遇到的记录
-                ))
-                .values()
-                .stream()
                 // 按照record.errorLevel排序
                 .sorted(Comparator.comparing(ErrorRecord::getLevel, Comparator.nullsLast(Comparator.naturalOrder())))
                 .toList();
diff --git a/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/impl/SystemFuzzyReportData.java b/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/impl/SystemFuzzyReportData.java
index 33a1d1e..57cfda5 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/impl/SystemFuzzyReportData.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/stat/report/data/impl/SystemFuzzyReportData.java
@@ -44,7 +44,8 @@
     protected void buildNode(JSONObject info, TreeNode<ScoreValue> c){
         var parentWeight = c.getParent() == null ? 1f : c.getParent().getData().getWeight();
         info.put("权重", formatFloatF4(c.getData().getWeight() * parentWeight ));
-        info.put("得分", formatFloat(c.getData().getScore()));
+        var fuzzyNode = getFuzzyNodeByPath(c.getPath());
+        info.put("得分", formatFloat(fuzzyNode != null ? fuzzyNode.getData().getScore() : c.getData().getScore()));
     }
 
 }
diff --git a/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java b/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java
index dda25ce..4956022 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java
@@ -45,9 +45,7 @@
                         // 分项得分结果,去掉权重/评价列后只保留名称与得分
                         var row = table.insertNewTableRow(table.getRows().size() - 1);
                         RenderHelper.renderCell(row, info.getString("类别"));
-                        RenderHelper.renderCell(row, info.containsKey("得分")
-                                ? info.getString("得分")
-                                : info.getString("模糊得分"));
+                        RenderHelper.renderCell(row, renderScore(info));
                     }break;
                     case 3: {
                         if(colTitle.equals("分项")) {
@@ -142,6 +140,26 @@
         }
     }
 
+    private String renderScore(JSONObject info) {
+        if (!info.containsKey("得分")) {
+            return info.getString("模糊得分");
+        }
+        if (!info.containsKey("总分")) {
+            return info.getString("得分");
+        }
+        try {
+            var totalScore = Float.parseFloat(info.getString("总分"));
+            if (totalScore <= 0) {
+                return info.getString("得分");
+            }
+            var normalizedScore = Float.parseFloat(info.getString("得分")) * 100 / totalScore;
+            return String.format("%.2f", normalizedScore);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return info.getString("得分");
+        }
+    }
+
     /*
      * 问题汇总表
      * 主要差异是需要合并第0列的相同内容

--
Gitblit v1.7.1