liujie
2026-05-21 0e5d431f85612bf3abc0515fb6e46e500b5cdfe1
update
3个文件已修改
35 ■■■■■ 已修改文件
admin-server/src/main/java/com/estate/expert/admin/stat/report/data/SystemReportData.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin-server/src/main/java/com/estate/expert/admin/stat/report/data/impl/SystemFuzzyReportData.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin-server/src/main/java/com/estate/expert/admin/stat/report/render/CheckInfoTablePolicy.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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列的相同内容