liujie
2026-01-30 bad0eff27a0352b8a45f0f3ecb2a5e635bc1af11
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceUsageServiceImpl.java
@@ -224,6 +224,7 @@
        }
        return deviceList;
    }
    private static Float calculateDeviceScore(String deviceResMapJson) {
        try {
            // 1. 解析 JSON 字符串
@@ -293,6 +294,7 @@
            return null;
        }
    }
    @Override
    public List<EntrustProjectReportVo> projectReport(Page<EntrustProjectReportVo> page, ProjectReportListQuery query) {
        List<EntrustProjectReportVo> entrustProjectReportVoList = this.baseMapper.projectReport(page,query);
@@ -376,9 +378,16 @@
    @Override
    public List<ErrorListVo> errorList(Page<ErrorListVo> page, ErrorListQuery query) throws ParseException {
        String startTime;
        String endTime;
        // 查询在建工程项目(usage_type 表示项目用途类型,假设 0 表示在建工程)
        String startTime = query.getStartTime().replace("年","-").replace("月","-").replace("日","-");
        String endTime = query.getEndTime();
        if (StringUtils.hasLength(query.getStartTime())) {
            startTime = query.getStartTime().replace("年", "-").replace("月", "-").replace("日", "-");
            endTime = query.getEndTime();
        } else {
            endTime = "";
            startTime = "";
        }
        LambdaQueryWrapper<Project> projectWrapper = new LambdaQueryWrapper<>();
        switch (query.getCategory()){
            case 1:
@@ -389,7 +398,8 @@
                                .eq(Project::getStatus, 1)  // 在建项目
                                .or(w -> w
                                        .eq(Project::getStatus, 2)  // 已完成项目
                                        .between(Project::getSuccessTime, startTime,endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                        .between(StringUtils.hasLength(startTime),Project::getSuccessTime, startTime, endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                )
                        );
                break;
@@ -401,7 +411,7 @@
                                .eq(Project::getStatus, 1)  // 在建项目
                                .or(w -> w
                                        .eq(Project::getStatus, 2)  // 已完成项目
                                        .between(Project::getSuccessTime, startTime,endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                        .between(StringUtils.hasLength(startTime),Project::getSuccessTime, startTime, endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                )
                        );
                break;
@@ -434,8 +444,44 @@
    @Override
    public List<ErrorListVo> deviceErrorList(Page<ErrorListVo> page, ErrorListQuery query) {
        String startTime;
        String endTime;
        // 查询在建工程项目(usage_type 表示项目用途类型,假设 0 表示在建工程)
        if (StringUtils.hasLength(query.getStartTime())) {
            startTime = query.getStartTime().replace("年", "-").replace("月", "-").replace("日", "-");
            endTime = query.getEndTime();
        } else {
            endTime = "";
            startTime = "";
        }
        LambdaQueryWrapper<Project> projectWrapper = new LambdaQueryWrapper<>();
        switch (query.getCategory()) {
            case 1:
                // 查询在建资产项目
                projectWrapper.eq(Project::getDeleted, false)
                        .ne(Project::getType, 2) // 在建工程
                        .and(wrapper -> wrapper
                                .eq(Project::getStatus, 1)  // 在建项目
                                .or(w -> w
                                        .eq(Project::getStatus, 2)  // 已完成项目
                                        .between(StringUtils.hasLength(startTime),Project::getSuccessTime, startTime, endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                )
                        );
                break;
            case 2:
                // 查询固定资产项目
                projectWrapper.eq(Project::getDeleted, false)
                        .eq(Project::getType, 2) // 在建工程
                        .and(wrapper -> wrapper
                                .eq(Project::getStatus, 1)  // 在建项目
                                .or(w -> w
                                        .eq(Project::getStatus, 2)  // 已完成项目
                                        .between(StringUtils.hasLength(startTime),Project::getSuccessTime, startTime, endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                )
                        );
                break;
        }
        if (query.getClientId() != null) {
            projectWrapper.eq(Project::getClientId, query.getClientId());
        }
@@ -458,12 +504,58 @@
        List<Integer> recordIds = recordMapper.selectList(recordWrapper).stream().map(Record::getId).toList();
        query.setRecordIds(recordIds);
        List<ErrorListVo> errorList = this.baseMapper.deviceErrorList(page, query);
        return errorList;    }
        return errorList;
    }
    @Override
    public List<ErrorListVo> safetyErrorList(Page<ErrorListVo> page, ErrorListQuery query) {
        String startTime;
        String endTime;
        // 查询在建工程项目(usage_type 表示项目用途类型,假设 0 表示在建工程)
        if (StringUtils.hasLength(query.getStartTime())) {
            startTime = query.getStartTime().replace("年", "-").replace("月", "-").replace("日", "-");
            endTime = query.getEndTime();
        } else {
            endTime = "";
            startTime = "";
        }
        LambdaQueryWrapper<Project> projectWrapper = new LambdaQueryWrapper<>();
        switch (query.getCategory()) {
            case 1:
                // 查询在建资产项目
                projectWrapper
//                        .eq(Project::getDeleted, false)
                        .ne(Project::getType, 2) // 在建工程
                        .and(wrapper -> wrapper
                                .eq(Project::getStatus, 1)  // 在建项目
                                .or(w -> w
                                        .eq(Project::getStatus, 2)  // 已完成项目
                                        .between(StringUtils.hasLength(startTime),Project::getSuccessTime, startTime, endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                )
                                        .or(w -> w
                                                        .isNull(Project::getStatus)  // 已完成项目
                                        .between(StringUtils.hasLength(startTime),Project::getSuccessTime, startTime, endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                        )
                        );
                break;
            case 2:
                // 查询固定资产项目
                projectWrapper
//                        .eq(Project::getDeleted, false)
                        .eq(Project::getType, 2) // 在建工程
                        .and(wrapper -> wrapper
                                .eq(Project::getStatus, 1)  // 在建项目
                                .or(w -> w
                                        .eq(Project::getStatus, 2)  // 已完成项目
                                        .between(StringUtils.hasLength(startTime),Project::getSuccessTime, startTime, endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                )
                                        .or(w -> w
                                                        .isNull(Project::getStatus)  // 已完成项目
//                                        .between(StringUtils.hasLength(startTime),Project::getSuccessTime, startTime, endTime)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                                        )
                        );
                break;
        }
        if (query.getClientId() != null) {
            projectWrapper.eq(Project::getClientId, query.getClientId());
        }
@@ -475,18 +567,20 @@
        // 查询检查任务
        LambdaQueryWrapper<Task> taskWrapper = new LambdaQueryWrapper<>();
        taskWrapper.in(Task::getProjectId, projectIds)
                .eq(Task::getDeleted, false);
                ;
        List<Task> tasks = taskMapper.selectList(taskWrapper);
        List<Integer> checkTaskIds = tasks.stream().map(Task::getId).collect(Collectors.toList());
        // 查询重大隐患记录(level 表示隐患等级,0 表示重大隐患)
        LambdaQueryWrapper<Record> recordWrapper = new LambdaQueryWrapper<>();
        recordWrapper.eq(Record::getDeleted, false)
                .eq(Record::getRecordType,"error")
                .in(Record::getCheckTaskId, checkTaskIds);
        List<Integer> recordIds = recordMapper.selectList(recordWrapper).stream().map(Record::getId).toList();
        query.setRecordIds(recordIds);
        List<ErrorListVo> errorList = this.baseMapper.safetyErrorList(page, query);
        return errorList;    }
        return errorList;
    }
}