“mitao”
2026-05-16 c556e46c2a6232d74ab6dbf7566479ec955d905d
admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java
@@ -18,6 +18,8 @@
import com.estate.expert.admin.stat.report.builder.ReportBuilderBase;
import com.estate.expert.admin.stat.report.builder.SystemReportBuilder;
import com.estate.expert.admin.stat.report.data.DeviceReportData;
import com.estate.expert.admin.stat.report.data.impl.DaiguanDeviceFuzzyReportData;
import com.estate.expert.admin.stat.report.data.impl.DaiguanDeviceScoreReportData;
import com.estate.expert.admin.stat.report.data.impl.DeviceFuzzyReportData;
import com.estate.expert.admin.stat.report.data.impl.DeviceScoreReportData;
import com.estate.expert.admin.stat.report.data.impl.SystemFuzzyReportData;
@@ -45,6 +47,11 @@
@Slf4j
@Service
public class ReportServiceImpl implements ReportService {
    private static final String DAIGUAN_TECH_REMARK = "岱观科技";
    private static final String DAIGUAN_SYSTEM_TEMPLATE_FILE = "第三方评估报告new.docx";
    private static final String DAIGUAN_REMARK = "岱观科技";
    private static final String DAIGUAN_DEVICE_TEMPLATE_FILE = "设备风险评估报告new.docx";
    @Resource
    private ReportTemplateService reportTemplateService;
@@ -187,8 +194,14 @@
        BizResultCode.BIZ_REPORT_TEMPLATE_NOT_EXIST.check(reportTemplate == null);
        switch (reportTemplate.getType()) {
            case ThirdPartyReport:
                if (isDaiguanTechTemplate(reportTemplate)) {
                    return new SystemReportBuilder(userFileService, DAIGUAN_SYSTEM_TEMPLATE_FILE);
                }
                return new SystemReportBuilder(userFileService);
            case DeviceReport:
                if (DAIGUAN_REMARK.equals(reportTemplate.getRemark())) {
                    return new DeviceReportBuilder(userFileService, DAIGUAN_DEVICE_TEMPLATE_FILE);
                }
                return new DeviceReportBuilder(userFileService);
            default:
                throw new BizException(BizResultCode.BIZ_REPORT_TEMPLATE_TYPE_NOT_EXIST);
@@ -367,6 +380,22 @@
        var clientId = project.getClient() != null ? project.getClient().getId() : null;
        var problemFrequency = buildDeviceProblemFrequency(project.getId(), clientId);
        if (isDaiguanTemplate(reportTemplate)) {
            return DaiguanDeviceFuzzyReportData.builder()
                    .reportId(evalFuzzyResult.getId())
                    .deviceResMap(evalFuzzyResult.getDeviceResMap())
                    .deviceHierarchy(hierarchy)
                    .template(reportTemplate)
                    .project(project)
                    .projectInfo(projectInfo)
                    .devices(devices)
                    .records(records)
                    .deviceProblemHazardCounts(problemFrequency.problemHazardCounts())
                    .deviceCheckCounts(problemFrequency.deviceCheckCounts())
                    .build()
                    .generate();
        }
        // 生成报告数据
        return DeviceFuzzyReportData.builder()
                .reportId(evalFuzzyResult.getId())
@@ -394,6 +423,23 @@
        var clientId = project.getClient() != null ? project.getClient().getId() : null;
        var problemFrequency = buildDeviceProblemFrequency(project.getId(), clientId);
        if (isDaiguanTemplate(reportTemplate)) {
            return DaiguanDeviceScoreReportData.builder()
                    .reportId(evalFuzzyResult.getId())
                    .deviceResMap(evalFuzzyResult.getDeviceResMap())
                    .deviceScoreResMap(evalScoreResult.getDeviceResMap())
                    .deviceHierarchy(hierarchy)
                    .template(reportTemplate)
                    .project(project)
                    .projectInfo(projectInfo)
                    .devices(devices)
                    .records(records)
                    .deviceProblemHazardCounts(problemFrequency.problemHazardCounts())
                    .deviceCheckCounts(problemFrequency.deviceCheckCounts())
                    .build()
                    .generate();
        }
        // 生成报告数据
        return DeviceScoreReportData.builder()
                .reportId(evalFuzzyResult.getId())
@@ -422,6 +468,17 @@
        return taskIds;
    }
    private boolean isDaiguanTemplate(ReportTemplate reportTemplate) {
        return reportTemplate != null && DAIGUAN_REMARK.equals(reportTemplate.getRemark());
    }
    private boolean isDaiguanTechTemplate(ReportTemplate reportTemplate) {
        if (reportTemplate == null || reportTemplate.getRemark() == null) {
            return false;
        }
        return DAIGUAN_TECH_REMARK.equals(reportTemplate.getRemark().trim());
    }
    private long countProjectChecks(Integer projectId) {
        if (projectId == null) {
            return 0L;