liujie
2026-01-30 bad0eff27a0352b8a45f0f3ecb2a5e635bc1af11
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/smart_screen

# Conflicts:
# ruoyi-system/src/main/resources/mapper/system/DeviceUsageMapper.xml
3个文件已修改
189 ■■■■■ 已修改文件
ruoyi-system/src/main/java/com/ruoyi/system/query/ErrorListQuery.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceUsageServiceImpl.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/DeviceUsageMapper.xml 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/ErrorListQuery.java
@@ -19,8 +19,8 @@
    private List<Integer> projectIds;
    @ApiModelProperty("检查ids")
    private List<Integer> recordIds;
    @ApiModelProperty("整改情况 true已整改 false未整改")
    private Boolean reformed;
    @ApiModelProperty("整改情况0未复查1-未整改 2-部分整改 3-已整改")
    private Integer state;
    @ApiModelProperty("隐患类型 1安全 2设备")
    private Integer type;
    @ApiModelProperty("clientId")
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;
    }
}
ruoyi-system/src/main/resources/mapper/system/DeviceUsageMapper.xml
@@ -57,7 +57,7 @@
        group by device_id
        ) latest on t2.id = latest.device_id
        left join project t3 on t1.project_id = t3.id
        where  1=1
        where  t1.deleted = 0
        <if test="query.projectId != null">
            and t1.project_id = #{query.projectId}
        </if>
@@ -73,12 +73,7 @@
        <if test="query.content!= null and query.content!=''">
            and t2.name like CONCAT('%', #{query.content}, '%')
        </if>
        <if test="query.startTime != null and query.startTime != ''">
            and latest.record_time >= #{query.startTime}
        </if>
        <if test="query.endTime != null and query.endTime != ''">
            and #{query.endTime} >=latest.record_time
        </if>
        order by latest.record_time desc
    </select>
    <select id="projectList" resultType="com.ruoyi.system.vo.EntrustProjectVo">
@@ -129,11 +124,13 @@
    <select id="errorList" resultType="com.ruoyi.system.vo.ErrorListVo">
        select t1.*,t2.project_id,t2.plan_id,t3.`name` as  projectName,t4.`name` as planName
             ,t5.`name` as problemName,IF(t1.device_id is null ,1,2) as type,t1.create_time as checkTime
        ,t6.state as state
        from record t1
                 LEFT JOIN task t2 on t1.check_task_id = t2.id
                 LEFT JOIN project t3 on t2.project_id = t3.id
                 LEFT JOIN plan t4 on t2.plan_id = t4.id
                 LEFT JOIN problem t5 ON t1.problem_id = t5.id
        left join error_review t6 on t1.error_review_id = t6.id
        where t1.deleted = 0 and t2.deleted = 0  and t1.`level` =0
          <if test="query.recordIds != null">
            and t1.id in
@@ -145,8 +142,17 @@
        <if test="query.projectId != null">
            and t2.project_id = #{query.projectId}
        </if>
        <if test="query.reformed != null">
            and t1.reformed = #{query.reformed}
        <if test="query.state ==0 ">
            and t6.state is null
        </if>
        <if test="query.state ==1 ">
            and t6.state = #{query.state}
        </if>
        <if test="query.state ==2 ">
            and t6.state = #{query.state}
        </if>
        <if test="query.state ==3 ">
            and t6.state = #{query.state}
        </if>
        <if test="query.type != null and query.type == 1">
            and t1.device_id is null
@@ -154,12 +160,7 @@
        <if test="query.type != null and query.type == 2">
            and t1.device_id is not null
        </if>
        <if test="query.startTime != null and query.startTime != ''">
            and t1.create_time >= #{query.startTime}
        </if>
        <if test="query.endTime != null and query.endTime != ''">
            and #{query.endTime} >=t1.create_time
        </if>
        <if test="query.content!= null and query.content!=''">
            and (t3.name like CONCAT('%', #{query.content}, '%')
                or
@@ -173,11 +174,14 @@
    <select id="deviceErrorList" resultType="com.ruoyi.system.vo.ErrorListVo">
        select t1.*,t2.project_id,t2.plan_id,t3.`name` as  projectName,t4.`name` as planName
        ,t5.`name` as problemName,IF(t1.device_id is null ,1,2) as type,t1.create_time as checkTime
        ,t6.state as state
        from record t1
        LEFT JOIN task t2 on t1.check_task_id = t2.id
        LEFT JOIN project t3 on t2.project_id = t3.id
        LEFT JOIN plan t4 on t2.plan_id = t4.id
        LEFT JOIN problem t5 ON t1.problem_id = t5.id
        left join error_review t6 on t1.error_review_id = t6.id
        where t1.deleted = 0 and t2.deleted = 0  and t1.device_id is not null
        <if test="query.recordIds != null">
            and t1.id in
@@ -188,16 +192,19 @@
        <if test="query.projectId != null">
            and t2.project_id = #{query.projectId}
        </if>
        <if test="query.reformed != null">
            and t1.reformed = #{query.reformed}
        <if test="query.state ==0 ">
            and t6.state is null
        </if>
        <if test="query.state ==1 ">
            and t6.state = #{query.state}
        </if>
        <if test="query.state ==2 ">
            and t6.state = #{query.state}
        </if>
        <if test="query.state ==3 ">
            and t6.state = #{query.state}
        </if>
        <if test="query.startTime != null and query.startTime != ''">
            and t1.create_time >= #{query.startTime}
        </if>
        <if test="query.endTime != null and query.endTime != ''">
            and #{query.endTime} >=t1.create_time
        </if>
        <if test="query.content!= null and query.content!=''">
            and (t3.name like CONCAT('%', #{query.content}, '%')
            or
@@ -211,12 +218,15 @@
    <select id="safetyErrorList" resultType="com.ruoyi.system.vo.ErrorListVo">
        select t1.*,t2.project_id,t2.plan_id,t3.`name` as  projectName,t4.`name` as planName
        ,t5.`name` as problemName,IF(t1.device_id is null ,1,2) as type,t1.create_time as checkTime
        ,t6.state as state
        from record t1
        LEFT JOIN task t2 on t1.check_task_id = t2.id
        LEFT JOIN project t3 on t2.project_id = t3.id
        LEFT JOIN plan t4 on t2.plan_id = t4.id
        LEFT JOIN problem t5 ON t1.problem_id = t5.id
        where t1.deleted = 0 and t2.deleted = 0  and t1.device_id is null
        left join error_review t6 on t1.error_review_id = t6.id
        where t1.deleted = 0   and t1.device_id is null
        <if test="query.recordIds != null">
            and t1.id in
            <foreach item="item" index="index" collection="query.recordIds" open="(" separator="," close=")">
@@ -226,16 +236,19 @@
        <if test="query.projectId != null">
            and t2.project_id = #{query.projectId}
        </if>
        <if test="query.reformed != null">
            and t1.reformed = #{query.reformed}
        <if test="query.state ==0 ">
            and t6.state is null
        </if>
        <if test="query.state ==1 ">
            and t6.state = #{query.state}
        </if>
        <if test="query.state ==2 ">
            and t6.state = #{query.state}
        </if>
        <if test="query.state ==3 ">
            and t6.state = #{query.state}
        </if>
        <if test="query.startTime != null and query.startTime != ''">
            and t1.create_time >= #{query.startTime}
        </if>
        <if test="query.endTime != null and query.endTime != ''">
            and #{query.endTime} >=t1.create_time
        </if>
        <if test="query.content!= null and query.content!=''">
            and (t3.name like CONCAT('%', #{query.content}, '%')
            or