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(); 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())); } } 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列的相同内容