<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="cn.gistack.sm.patrol.mapper.PatrolInfoMapper">
|
<resultMap id="patrolInfoResultMap" type="cn.gistack.sm.patrol.vo.PatrolInfoVO">
|
<result column="id" property="id"/>
|
<result column="project_id" property="projectId"/>
|
<result column="check_date" property="checkDate"/>
|
<result column="weather" property="weather"/>
|
<result column="inspection_person" property="inspectionPerson"/>
|
<result column="record_person" property="recordPerson"/>
|
<result column="reservoir_water_level" property="reservoirWaterLevel"/>
|
<result column="patrol_type" property="patrolType"/>
|
<result column="report_type" property="reportType"/>
|
<result column="project_items" property="projectItems"
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
|
<result column="image_urls" property="imageUrls"
|
typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
|
</resultMap>
|
|
|
<!--分页列表查询-->
|
<select id="selectPatrolInfoPage" resultMap="patrolInfoResultMap">
|
SELECT info.*
|
FROM sm_patrol_info info
|
WHERE 1=1 AND info.is_deleted = 0
|
<if test="patrolInfo.checkDateStart!=null and patrolInfo.checkDateStart!=''">
|
AND date_format(info.check_date,'%Y-%m-%d') >= #{patrolInfo.checkDateStart}
|
</if>
|
<if test="patrolInfo.checkDateEnd!=null and patrolInfo.checkDateEnd!=''">
|
AND date_format(info.check_date,'%Y-%m-%d') <= #{patrolInfo.checkDateEnd}
|
</if>
|
<if test="patrolInfo.projectId !=null and patrolInfo.projectId !=''">
|
AND info.project_id = #{patrolInfo.projectId}
|
</if>
|
|
ORDER BY info.id desc
|
</select>
|
|
<select id="getAllUserTimes" resultType="cn.gistack.sm.patrol.vo.PatrolStatisticsVO">
|
SELECT
|
u.id userId,u.realname,
|
(CASE a.patrolTimes WHEN a.patrolTimes THEN a.patrolTimes ELSE 0 END) patrolTimes,
|
(CASE b.dangerNumber WHEN b.dangerNumber THEN b.dangerNumber ELSE 0 END) dangerMangeNumber,
|
(CASE c.finishNumber WHEN c.finishNumber THEN c.finishNumber ELSE 0 END) finished,
|
(CASE d.handlingNumber WHEN d.handlingNumber THEN d.handlingNumber ELSE 0 END) processing,
|
(CASE e.waitingNumber WHEN e.waitingNumber THEN e.waitingNumber ELSE 0 END) waiting
|
FROM sys_user u
|
-- 巡检次数
|
LEFT JOIN
|
(
|
SELECT user.id,COUNT( user.id ) patrolTimes
|
FROM sys_user user,sm_patrol_info info
|
WHERE del_flag = 0 AND info.is_deleted = 0 AND FIND_IN_SET( user.id, inspection_person )
|
GROUP BY user.id
|
) a ON u.id = a.id
|
-- 隐患数量
|
LEFT JOIN
|
(
|
SELECT user.id,COUNT(user.id) dangerNumber
|
FROM sys_user user,sm_danger_management danger
|
WHERE del_flag = 0 AND danger.is_deleted = 0 AND FIND_IN_SET( user.id, danger.check_user )
|
GROUP BY user.id
|
) b ON u.id = b.id
|
-- 已处理
|
LEFT JOIN
|
(
|
SELECT user.id,COUNT(user.id) finishNumber
|
FROM sys_user user,sm_danger_management danger
|
WHERE del_flag = 0 AND danger.is_deleted = 0 AND danger.status=99 AND FIND_IN_SET( user.id, danger.check_user )
|
GROUP BY user.id
|
) c ON u.id = c.id
|
-- 处理中
|
LEFT JOIN
|
(
|
SELECT user.id,COUNT(user.id) handlingNumber
|
FROM sys_user user,sm_danger_management danger
|
WHERE del_flag = 0 AND danger.is_deleted = 0 AND (danger.status>1 AND danger.status<99) AND FIND_IN_SET( user.id, danger.check_user )
|
GROUP BY user.id
|
) d ON u.id = d.id
|
-- 待处理
|
LEFT JOIN
|
(
|
SELECT user.id,COUNT(user.id) waitingNumber
|
FROM sys_user user,sm_danger_management danger
|
WHERE del_flag = 0 AND danger.is_deleted = 0 AND danger.status=1 AND FIND_IN_SET( user.id, danger.check_user )
|
GROUP BY user.id
|
) e ON u.id = e.id
|
WHERE u.del_flag = 0
|
<if test="patrolStatisticsVO.realname != null and patrolStatisticsVO.realname != '' ">
|
AND u.realname LIKE CONCAT('%',#{patrolStatisticsVO.realname},'%')
|
</if>
|
ORDER BY a.patrolTimes DESC
|
</select>
|
|
<select id="getAllProjectTimes" resultType="cn.gistack.sm.patrol.vo.PatrolStatisticsVO">
|
SELECT
|
project.id projectId,
|
project.name projectName,
|
item.item_text projectType,
|
CONCAT(p.region_name,c.region_name,a.region_name,t.region_name) region,
|
COUNT( info.project_id) patrolTimes,
|
dangers.dangerNumber dangerMangeNumber,
|
finish.finishNumber finished,
|
handling.handlingNumber processing,
|
waiting.waitingNumber waiting
|
FROM
|
sm_water_conservancy_project project
|
LEFT JOIN sm_patrol_info info ON info.project_id= project.id AND info.is_deleted = 0
|
LEFT JOIN sys_dict dict ON dict.dict_code = "oa_project_type"
|
LEFT JOIN sys_dict_item item ON dict.id = item.dict_id AND item.item_value = project.project_type
|
LEFT JOIN sys_region p ON p.region_id = project.region->'$.province'+0
|
LEFT JOIN sys_region c ON c.region_id = project.region->'$.city'+0
|
LEFT JOIN sys_region a ON a.region_id = project.region->'$.area'+0
|
LEFT JOIN sys_region t ON t.region_id = project.region->'$.town'+0
|
-- 隐患数量
|
LEFT JOIN
|
(
|
SELECT
|
project.id projectId,
|
COUNT( danger.project_id) dangerNumber
|
FROM
|
sm_water_conservancy_project project
|
LEFT JOIN sm_danger_management danger ON danger.project_id = project.id AND danger.is_deleted = 0
|
WHERE
|
project.is_deleted = 0
|
GROUP BY
|
danger.project_id,
|
project.id
|
)dangers ON dangers.projectId = project.id
|
-- 已处理
|
LEFT JOIN
|
(
|
SELECT
|
project.id projectId,
|
COUNT( danger.project_id) finishNumber
|
FROM
|
sm_water_conservancy_project project
|
LEFT JOIN sm_danger_management danger ON danger.project_id = project.id AND danger.is_deleted = 0 AND danger.status = 99
|
WHERE
|
project.is_deleted = 0
|
GROUP BY
|
danger.project_id,
|
project.id
|
)finish ON finish.projectId = project.id
|
-- 处理中
|
LEFT JOIN
|
(
|
SELECT
|
project.id projectId,
|
COUNT( danger.project_id) handlingNumber
|
FROM
|
sm_water_conservancy_project project
|
LEFT JOIN sm_danger_management danger ON danger.project_id = project.id AND danger.is_deleted = 0 AND (danger.status >=1 AND danger.status<=99)
|
WHERE
|
project.is_deleted = 0
|
GROUP BY
|
danger.project_id,
|
project.id
|
)handling ON handling.projectId = project.id
|
-- 待处理
|
LEFT JOIN
|
(
|
SELECT
|
project.id projectId,
|
COUNT( danger.project_id) waitingNumber
|
FROM
|
sm_water_conservancy_project project
|
LEFT JOIN sm_danger_management danger ON danger.project_id = project.id AND danger.is_deleted = 0 AND danger.status = 1
|
WHERE
|
project.is_deleted = 0
|
GROUP BY
|
danger.project_id,
|
project.id
|
)waiting ON waiting.projectId = project.id
|
WHERE
|
project.is_deleted = 0
|
<if test="patrolStatisticsVO.projectName !=null and patrolStatisticsVO.projectName != '' ">
|
AND project.name LIKE CONCAT('%',#{patrolStatisticsVO.projectName},'%')
|
</if>
|
GROUP BY
|
info.project_id,
|
project.id,
|
dangers.dangerNumber,
|
finish.finishNumber,
|
handling.handlingNumber,
|
waiting.waitingNumber,
|
dict.id,
|
item.id,
|
p.region_id,
|
c.region_id,
|
a.region_id,
|
t.region_id
|
ORDER BY patrolTimes DESC
|
</select>
|
|
</mapper>
|