huliguo
2025-08-13 3ca07e5ec7b9986dfdd9ddf666ef40d2889be95d
guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TaskDetailMapper.xml
@@ -9,16 +9,32 @@
         b.`name`,
         b.type,
         a.status,
         ifnull(c.num, 0) as vehicleNum,
         DATE_FORMAT(a.execution_time, '%Y-%m-%d %H:%i:%s') as executionTime
      from t_task_detail a
      left join t_patrol_task b on (a.patrol_task_id = b.id)
      left join (select task_detail_id, count(1) as num from t_task_detail_vehicles group by task_detail_id) c on (a.id = c.task_detail_id)
      where a.del_flag = 0
      <if test="null != item.code and '' != item.code">
         and a.code like CONCAT('%', #{item.code}, '%')
      </if>
      <if test="null != item.status">
         and a.status = #{item.status}
      <if test="null != item.status and item.status.size() > 0">
         and a.status in
         <foreach collection="item.status" item="item" index="index" open="(" separator="," close=")">
               #{item}
         </foreach>
      </if>
      <if test="null != item.type">
         and b.type = #{item.type}
      </if>
      <if test="null != item.name and '' != item.name">
         and b.name like CONCAT('%', #{item.name}, '%')
      </if>
      <if test="null != item.startTime and null != item.endTime">
         and a.execution_time between #{item.startTime} and #{item.endTime}
      </if>
      order by a.execution_time desc
   </select>
   
   
@@ -29,27 +45,46 @@
         b.`name`,
         a.`status`,
         a.execution_time as executionTime,
         c.num as vehicleNum,
         d.num as unexecutedQuantity,
         e.num as offlineNum,
         f.num as normalNum,
         g.num as abnormalNum,
         ifnull(c.num, 0) as vehicleNum,
         ifnull(d.num, 0) as unexecutedQuantity,
         ifnull(e.num, 0) as offlineNum,
         ifnull(f.num, 0) as normalNum,
         ifnull(g.num, 0) as abnormalNum,
         ROUND(ifnull(((ifnull(e.num, 0) + ifnull(f.num, 0) + ifnull(g.num, 0)) / ifnull(c.num, 0) * 100), 0), 2) as schedule,
         if(h.num > 0, 0, 1) as authStatus
      from t_task_detail a
        left join t_patrol_task b on (a.patrol_task_id = b.id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles group by task_detail_id) c on (a.id = c.task_detail_id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles where `status` = 1 group by task_detail_id) d on (a.id = d.task_detail_id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles where `status` = 3 group by task_detail_id) e on (a.id = e.task_detail_id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles where `status` = 2 group by task_detail_id) f on (a.id = f.task_detail_id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles where `status` = 4 group by task_detail_id) g on (a.id = g.task_detail_id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles_channel where artificial_status = 1 group by task_detail_id) h on (a.id = h.task_detail_id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles where `status` = 4 group by task_detail_id) e on (a.id = e.task_detail_id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles where `status` = 3 group by task_detail_id) f on (a.id = f.task_detail_id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles where `status` = 5 group by task_detail_id) g on (a.id = g.task_detail_id)
        left join (select task_detail_id, count(1) as num from t_task_detail_vehicles_channel
                                                          where artificial_status = 1
                                                          <if test="null != item.sysStatus">
                                               and sys_status = #{item.sysStatus}
                                            </if>
                                                                                              group by task_detail_id) h on (a.id = h.task_detail_id)
      where a.del_flag = 0
      <if test="null != item.code and '' != item.code">
         and a.code like CONCAT('%', #{item.code}, '%')
      </if>
      <if test="null != item.status">
         and a.status = #{item.status}
      <if test="null != item.status and item.status.size() > 0">
         and a.status in
         <foreach collection="item.status" item="item" index="index" open="(" separator="," close=")">
            #{item}
         </foreach>
      </if>
      <if test="null != item.type">
         and b.type = #{item.type}
      </if>
      <if test="null != item.name and '' != item.name">
         and b.name like CONCAT('%', #{item.name}, '%')
      </if>
      <if test="null != item.startTime and null != item.endTime">
         and a.execution_time between #{item.startTime} and #{item.endTime}
      </if>
      order by a.execution_time desc
   </select>
   
   
@@ -72,7 +107,7 @@
      from t_task_detail_vehicles a
      left join t_task_detail b on (a.task_detail_id = b.id)
      left join t_patrol_task c on (a.patrol_task_id = c.id)
      left join t_task_detail_vehicles_channel d on (a.id = d.task_detail_vehicles_id and d.video_channel = 1)
      left join t_task_detail_vehicles_channel d on (a.id = d.task_detail_vehicles_id)
      left join sys_user e on (d.artificial_user_id = e.id)
      where b.del_flag = 0
      <if test="null != ids and ids.size() > 0">
@@ -84,8 +119,15 @@
      <if test="null != code and '' != code">
         and b.code like CONCAT('%', #{code}, '%')
      </if>
      <if test="null != status">
         and b.status = #{status}
      <if test="null != status and status.size() > 0">
         and b.status in
         <foreach collection="status" item="item" index="index" open="(" separator="," close=")">
            #{item}
         </foreach>
      </if>
      <if test="null != sysStatus">
         and d.sys_status = #{sysStatus}
      </if>
      order by b.execution_time desc
   </select>
</mapper>