liujie
2026-09-20 25999c575dd42b4715e49d3fe57e73c2c3204ccb
admin-server/src/main/java/com/estate/expert/admin/stat/report/data/ReportDataBase.java
@@ -28,6 +28,10 @@
@SuperBuilder
public abstract class ReportDataBase {
    private static final String DAIGUAN_REMARK = "岱观科技";
    private static final String DEFAULT_COMPANY_NAME = "四川信立隆第三方评估咨询有限公司";
    private static final String DAIGUAN_COMPANY_NAME = "四川岱观科技有限公司";
    ReportTemplate template;
    List<Device> devices;
@@ -71,8 +75,15 @@
        result.put("报告年份", reportDate.getYear());
        result.put("报告月份", reportDate.getMonthValue());
        result.put("报告日期日", reportDate.getDayOfMonth());
        result.put("公司名称", "四川信立隆第三方评估咨询有限公司");
        result.put("公司名称", buildCompanyName());
        return result;
    }
    private String buildCompanyName() {
        if (template != null && DAIGUAN_REMARK.equals(template.getRemark())) {
            return DAIGUAN_COMPANY_NAME;
        }
        return DEFAULT_COMPANY_NAME;
    }
    /**
@@ -139,26 +150,40 @@
     */
    protected JSONObject buildErrorLevel(TreeNode<FuzzyValue> node) {
        JSONObject result = new JSONObject();
        if(node == null)
        if(node == null || node.getData() == null)
            return result;
        int totalErrors = Arrays.stream(node.getData().getTotalErrorCounts()).sum();
        return buildErrorLevel(node.getData().getTotalErrorCounts());
    }
    /**
     * 根据隐患等级计数构建汇总信息。
     *
     * @param errorCounts 按一级至四级隐患排列的数量
     * @return 隐患等级汇总
     */
    protected JSONObject buildErrorLevel(int[] errorCounts) {
        JSONObject result = new JSONObject();
        if (errorCounts == null || errorCounts.length < ErrorLevel.values().length)
            return result;
        int totalErrors = Arrays.stream(errorCounts).sum();
        result.put("隐患数量", totalErrors);
        List<Object> errorInfos = new ArrayList<>();
        for (int i = 0; i<4 ; i++) {
            var level = ErrorLevel.values()[i];
            var count = node.getData().getTotalErrorCounts()[i];
            var count = errorCounts[i];
            var info = new JSONObject();
            info.put("隐患等级", level.getDesc());
            info.put("隐患程度", level.getDesc2());
            info.put("数量", count);
            info.put("比例", formatPercent(count * 1.0 / totalErrors));
            info.put("比例", formatPercent(totalErrors == 0 ? 0 : count * 1.0 / totalErrors));
            errorInfos.add(info);
        }
        result.put("一级隐患数量", node.getData().getTotalErrorCounts()[0]);
        result.put("二级隐患数量", node.getData().getTotalErrorCounts()[1]);
        result.put("三级隐患数量", node.getData().getTotalErrorCounts()[2]);
        result.put("四级隐患数量", node.getData().getTotalErrorCounts()[3]);
        result.put("一级隐患数量", errorCounts[0]);
        result.put("二级隐患数量", errorCounts[1]);
        result.put("三级隐患数量", errorCounts[2]);
        result.put("四级隐患数量", errorCounts[3]);
        result.put("分项", errorInfos);
        return result;
    }
@@ -189,7 +214,7 @@
        }
        info.put("工程类型", project.getType().getDesc());
        info.put("工程规模", StringUtils.hasText(project.getScale()) ? project.getScale() : project.getProjectCost());
        info.put("工程规模", project.getScale());
        if (projectInfo != null) {
            info.put("项目简介", projectInfo.getDetail());