“mitao”
2026-02-04 458334ecf2bf8aa76ac6d07226ed29878c56b070
ruoyi-system/src/main/resources/mapper/system/DeviceUsageMapper.xml
@@ -46,48 +46,58 @@
        order by latest.record_time desc
    </select>
    <select id="deviceList" resultType="com.ruoyi.system.vo.EntrustDeviceListVo">
        select t2.id, t2.name, t2.create_time, t2.properties, t2.type, latest.record_time as checkTime,t3.name as projectName
        select t2.id, t2.name, t2.create_time, t2.properties, t2.type, latest.record_time as checkTime,t3.name as projectName,
        t3.id as projectId
        from device_usage t1
        left join device t2 on t2.id = t1.device_id
        left join (
        select device_id, max(create_time) as record_time
        from record
        where device_id is not null and deleted = 0 and record_type ='error'
        group by device_id
        ) latest on t2.id = latest.device_id
        left join project t3 on t1.project_id = t3.id
        where t1.project_id = #{query.projectId} and t1.deleted = 0 and t1.disabled = 0
        where  t1.deleted = 0
        <if test="query.projectId != null">
            and t1.project_id = #{query.projectId}
        </if>
        <if test="query.projectIds != null">
            and t1.project_id in
            <foreach item="item" index="index" collection="query.projectIds" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="query.type != null">
            and t2.type = #{query.type}
        </if>
        <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">
        select
        t1.*, latest.record_time as checkTime,result.risk_level
        t1.*,result.risk_level
        from project t1
        left join device_usage t2 on t1.id = t2.project_id
        left join (
        select device_id, max(create_time) as record_time
        from record
        group by device_id
        ) latest on t2.device_id = latest.device_id
        left join (
        select score,project_id,risk_level
        from eval_result
        group by project_id
        order by create_time desc
        ) result on t1.id = result.project_id
        where t1.deleted = 0 and t1.status =1 and t1.type!=2 and t1.client_id =#{query.clientId}
        where t1.deleted = 0
        <if test="query.clientId != null">
            and t1.client_id = #{query.clientId}
        </if>
        <if test="query.projectIds != null">
            and t1.id in
            <foreach item="item" index="index" collection="query.projectIds" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="query.projectId != null">
            and t1.id = #{query.projectId}
        </if>
@@ -95,19 +105,13 @@
            and t1.type = #{query.type}
        </if>
        <if test="query.riskLevel != null">
            and result.risk_level = #{query.riskLevel}
            and `result`.risk_level = #{query.riskLevel}
        </if>
        <if test="query.name!= null and query.name!=''">
            and t1.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
            and t1.name like CONCAT('%', #{query.name}, '%')
        </if>
        GROUP BY t1.id
        order by latest.record_time desc
        order by t1.create_time desc
    </select>
    <select id="projectReport" resultType="com.ruoyi.system.vo.EntrustProjectReportVo">
        select t1.name,t1.type,t2.score,t2.risk_level,t3.time as checkTime
@@ -120,17 +124,35 @@
    <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
        ,IF(t6.state  is null,0,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.`level` =1
          <if test="query.projectId != null">
        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
            <foreach item="item" index="index" collection="query.recordIds" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <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
@@ -138,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
@@ -157,25 +174,37 @@
    <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
        ,IF(t6.state  is null,0,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
            <foreach item="item" index="index" collection="query.recordIds" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <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
@@ -189,25 +218,37 @@
    <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
        ,IF(t6.state  is null,0,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=")">
                #{item}
            </foreach>
        </if>
        <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