EntDangerStatisMapper.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  4. <mapper namespace="com.zhyc.xps.aqpt.mapper.EntDangerStatisMapper">
  5. <!-- 按状态统计 -->
  6. <select id="counterByStatus" parameterType="java.util.Map" resultType="com.zhyc.xps.aqpt.vo.DangerCounterVo">
  7. SELECT
  8. IFNULL(SUM( CASE WHEN A.status = 0 THEN 1 ELSE 0 END ), 0) AS 'handling' ,
  9. IFNULL(SUM( CASE WHEN A.status = 1 THEN 1 ELSE 0 END ), 0) AS 'completed' ,
  10. IFNULL(SUM( CASE WHEN A.status = -1 THEN 1 ELSE 0 END ), 0) AS 'canceled'
  11. FROM ent_danger AS A
  12. LEFT JOIN s_group AS B ON (A.oc_id = B.oc_id AND A.group_id = B.group_id)
  13. WHERE A.deleted_flag = 0
  14. <if test="ocId != null">
  15. AND A.oc_id = #{ocId}
  16. </if>
  17. <if test="nodeLeft != null and nodeRight != null">
  18. <![CDATA[
  19. AND B.node_left >= #{nodeLeft ,jdbcType=BIGINT}
  20. AND B.node_right <= #{nodeRight ,jdbcType=BIGINT}
  21. ]]>
  22. </if>
  23. </select>
  24. <!-- 待我处理的 -->
  25. <select id="counterByHandler" parameterType="java.util.Map" resultType="int">
  26. SELECT
  27. count(*)
  28. FROM ent_danger AS A
  29. LEFT JOIN s_group AS E ON (A.oc_id = E.oc_id AND A.submit_group_id = E.group_id )
  30. LEFT JOIN s_group AS F ON (A.oc_id = F.oc_id AND A.review_group_id = F.group_id )
  31. LEFT JOIN s_group AS G ON (A.oc_id = G.oc_id AND A.rectify_group_id = G.group_id )
  32. LEFT JOIN s_group AS H ON (A.oc_id = H.oc_id AND A.accept_group_id = H.group_id )
  33. LEFT JOIN wf_ins AS W ON (A.oc_id = W.oc_id AND A.danger_id = W.wf_ins_id )
  34. LEFT JOIN s_group AS X ON (W.oc_id = X.oc_id AND W.cur_group_id = X.group_id )
  35. WHERE A.deleted_flag = 0 AND A.status = 0
  36. <if test="ocId != null">
  37. AND A.oc_id = #{ocId}
  38. </if>
  39. <if test="curAccountId != null">
  40. AND W.cur_account_Id = #{curAccountId, jdbcType=BIGINT}
  41. </if>
  42. <if test="submitAccountId != null">
  43. AND A.submit_account_id = #{submitAccountId, jdbcType=BIGINT}
  44. </if>
  45. <if test="status != null">
  46. AND A.status = #{status}
  47. </if>
  48. <if test="handleAccountId != null">
  49. AND (
  50. A.review_account_id = #{handleAccountId ,jdbcType=BIGINT}
  51. OR
  52. A.rectify_account_id = #{handleAccountId ,jdbcType=BIGINT}
  53. OR
  54. A.accept_account_id = #{handleAccountId ,jdbcType=BIGINT}
  55. )
  56. </if>
  57. <if test="curGroupNodeLeft != null and curGroupNodeRight != null">
  58. <![CDATA[
  59. AND X.node_left >= #{curGroupNodeLeft, jdbcType=BIGINT}
  60. AND X.node_right <= #{curGroupNodeRight, jdbcType=BIGINT}
  61. ]]>
  62. </if>
  63. <if test="submitGroupNodeLeft != null and submitGroupNodeRight != null">
  64. <![CDATA[
  65. AND E.node_left >= #{submitGroupNodeLeft, jdbcType=BIGINT}
  66. AND E.node_right <= #{submitGroupNodeRight, jdbcType=BIGINT}
  67. ]]>
  68. </if>
  69. <if test="reviewGroupNodeLeft != null and reviewGroupNodeRight != null">
  70. <![CDATA[
  71. AND F.node_left >= #{reviewGroupNodeLeft, jdbcType=BIGINT}
  72. AND F.node_right <= #{reviewGroupNodeRight, jdbcType=BIGINT}
  73. ]]>
  74. </if>
  75. <if test="rectifyGroupNodeLeft != null and rectifyGroupNodeRight != null">
  76. <![CDATA[
  77. AND G.node_left >= #{rectifyGroupNodeLeft, jdbcType=BIGINT}
  78. AND G.node_right <= #{rectifyGroupNodeRight, jdbcType=BIGINT}
  79. ]]>
  80. </if>
  81. <if test="acceptGroupNodeLeft != null and acceptGroupNodeRight != null">
  82. <![CDATA[
  83. AND H.node_left >= #{acceptGroupNodeLeft, jdbcType=BIGINT}
  84. AND H.node_right <= #{acceptGroupNodeRight, jdbcType=BIGINT}
  85. ]]>
  86. </if>
  87. </select>
  88. <!-- 按类别统计 -->
  89. <select id="counterByCat" resultType="com.zhyc.xps.aqpt.vo.DangerByCatVo">
  90. SELECT
  91. B.danger_cat_title,
  92. A.danger_level,
  93. COUNT(A.danger_cat_id)
  94. FROM ent_danger AS A
  95. LEFT JOIN ent_danger_cat AS B ON(A.oc_id = B.oc_id AND A.danger_cat_id = B.danger_cat_id)
  96. WHERE A.deleted_flag = 0 AND status != 5
  97. <if test="ocId != null">
  98. AND A.oc_id = #{ocId}
  99. </if>
  100. GROUP BY A.danger_cat_id , A.danger_level
  101. </select>
  102. <!-- 按月份统计 -->
  103. <select id="counterByMonth" parameterType="java.util.Map" resultType="com.zhyc.xps.aqpt.vo.DangerByMonthVo">
  104. SELECT
  105. IFNULL(SUM(CASE MONTH(submit_time) WHEN '1' THEN 1 ELSE 0 END) ,0) AS Jan,
  106. IFNULL(SUM(CASE MONTH(submit_time) WHEN '2' THEN 1 ELSE 0 END) ,0) AS Feb,
  107. IFNULL(SUM(CASE MONTH(submit_time) WHEN '3' THEN 1 ELSE 0 END) ,0) AS Mar,
  108. IFNULL(SUM(CASE MONTH(submit_time) WHEN '4' THEN 1 ELSE 0 END) ,0) AS Apr,
  109. IFNULL(SUM(CASE MONTH(submit_time) WHEN '5' THEN 1 ELSE 0 END) ,0) AS May,
  110. IFNULL(SUM(CASE MONTH(submit_time) WHEN '6' THEN 1 ELSE 0 END) ,0) AS June,
  111. IFNULL(SUM(CASE MONTH(submit_time) WHEN '7' THEN 1 ELSE 0 END) ,0) AS July,
  112. IFNULL(SUM(CASE MONTH(submit_time) WHEN '8' THEN 1 ELSE 0 END) ,0) AS Aug,
  113. IFNULL(SUM(CASE MONTH(submit_time) WHEN '9' THEN 1 ELSE 0 END) ,0) AS Sept,
  114. IFNULL(SUM(CASE MONTH(submit_time) WHEN '10' THEN 1 ELSE 0 END) ,0) AS Oct,
  115. IFNULL(SUM(CASE MONTH(submit_time) WHEN '11' THEN 1 ELSE 0 END) ,0) AS Nov,
  116. IFNULL(SUM(CASE MONTH(submit_time) WHEN '12' THEN 1 ELSE 0 END) ,0) AS Dece
  117. FROM ent_danger
  118. WHERE deleted_flag = 0 AND status != 5
  119. <if test="ocId != null">
  120. AND oc_id = #{ocId}
  121. </if>
  122. <if test="status != null">
  123. AND status = #{status}
  124. </if>
  125. <if test="year != null">
  126. AND YEAR(submit_time) = #{year}
  127. </if>
  128. </select>
  129. <!-- 按条件统计 -->
  130. <select id="counterByCondition" parameterType="java.util.Map" resultType="int">
  131. SELECT
  132. count(0)
  133. FROM ent_danger AS A
  134. LEFT JOIN s_group AS B ON (A.oc_id = B.oc_id AND A.group_id = B.group_id)
  135. WHERE A.deleted_flag = 0
  136. <if test="ocId != null">
  137. AND A.oc_id = #{ocId}
  138. </if>
  139. <if test="status != null">
  140. AND A.status = #{status}
  141. </if>
  142. <if test="submitAccountId != null">
  143. AND A.submit_account_id = #{submitAccountId ,jdbcType=BIGINT}
  144. </if>
  145. <if test="handleAccountId != null">
  146. AND ( A.review_account_id = #{handleAccountId ,jdbcType=BIGINT}
  147. OR A.rectify_account_id = #{handleAccountId ,jdbcType=BIGINT}
  148. OR A.accept_account_id = #{handleAccountId ,jdbcType=BIGINT}
  149. )
  150. </if>
  151. <if test="nodeLeft != null and nodeRight != null">
  152. <![CDATA[
  153. AND B.node_left >= #{nodeLeft ,jdbcType=BIGINT}
  154. AND B.node_right <= #{nodeRight ,jdbcType=BIGINT}
  155. ]]>
  156. </if>
  157. <if test="submitTime != null">
  158. AND date_format(A.submit_time , '%Y-%m-%d') = #{submitTime}
  159. </if>
  160. <if test="startSubmitTime != null and endSubmitTime != null">
  161. AND A.submit_time BETWEEN #{startSubmitTime} and #{endSubmitTime}
  162. </if>
  163. <if test="startAcceptTime != null and endAcceptTime != null">
  164. AND A.accept_time BETWEEN #{startAcceptTime} and #{endAcceptTime}
  165. </if>
  166. </select>
  167. <!-- 按天统计最近一个月的结果 -->
  168. <select id="counterByDay" parameterType="java.util.Map" resultType="map">
  169. SELECT date_format(A.item, '%m-%d') AS 'day', count(DISTINCT B.danger_id) AS dangerCount,
  170. count(DISTINCT c.alert_id) AS waringCount
  171. FROM (
  172. SELECT DATE_SUB(CURDATE(), INTERVAL 29 DAY ) AS item
  173. UNION ALL
  174. SELECT DATE_SUB(CURDATE(), INTERVAL 28 DAY ) AS item
  175. UNION ALL
  176. SELECT DATE_SUB(CURDATE(), INTERVAL 27 DAY ) AS item
  177. UNION ALL
  178. SELECT DATE_SUB(CURDATE(), INTERVAL 26 DAY ) AS item
  179. UNION ALL
  180. SELECT DATE_SUB(CURDATE(), INTERVAL 25 DAY ) AS item
  181. UNION ALL
  182. SELECT DATE_SUB(CURDATE(), INTERVAL 24 DAY ) AS item
  183. UNION ALL
  184. SELECT DATE_SUB(CURDATE(), INTERVAL 23 DAY ) AS item
  185. UNION ALL
  186. SELECT DATE_SUB(CURDATE(), INTERVAL 22 DAY ) AS item
  187. UNION ALL
  188. SELECT DATE_SUB(CURDATE(), INTERVAL 21 DAY ) AS item
  189. UNION ALL
  190. SELECT DATE_SUB(CURDATE(), INTERVAL 20 DAY ) AS item
  191. UNION ALL
  192. SELECT DATE_SUB(CURDATE(), INTERVAL 19 DAY ) AS item
  193. UNION ALL
  194. SELECT DATE_SUB(CURDATE(), INTERVAL 18 DAY ) AS item
  195. UNION ALL
  196. SELECT DATE_SUB(CURDATE(), INTERVAL 17 DAY ) AS item
  197. UNION ALL
  198. SELECT DATE_SUB(CURDATE(), INTERVAL 16 DAY ) AS item
  199. UNION ALL
  200. SELECT DATE_SUB(CURDATE(), INTERVAL 15 DAY ) AS item
  201. UNION ALL
  202. SELECT DATE_SUB(CURDATE(), INTERVAL 14 DAY ) AS item
  203. UNION ALL
  204. SELECT DATE_SUB(CURDATE(), INTERVAL 13 DAY ) AS item
  205. UNION ALL
  206. SELECT DATE_SUB(CURDATE(), INTERVAL 12 DAY ) AS item
  207. UNION ALL
  208. SELECT DATE_SUB(CURDATE(), INTERVAL 11 DAY ) AS item
  209. UNION ALL
  210. SELECT DATE_SUB(CURDATE(), INTERVAL 10 DAY ) AS item
  211. UNION ALL
  212. SELECT DATE_SUB(CURDATE(), INTERVAL 9 DAY ) AS item
  213. UNION ALL
  214. SELECT DATE_SUB(CURDATE(), INTERVAL 8 DAY ) AS item
  215. UNION ALL
  216. SELECT DATE_SUB(CURDATE(), INTERVAL 7 DAY ) AS item
  217. UNION ALL
  218. SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY ) AS item
  219. UNION ALL
  220. SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY ) AS item
  221. UNION ALL
  222. SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY ) AS item
  223. UNION ALL
  224. SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY ) AS item
  225. UNION ALL
  226. SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY ) AS item
  227. UNION ALL
  228. SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY ) AS item
  229. UNION ALL
  230. SELECT DATE_SUB(CURDATE(), INTERVAL 0 DAY ) AS item
  231. ) A
  232. LEFT JOIN ent_danger B ON (B.oc_id = #{ocId ,jdbcType=BIGINT} AND B.deleted_flag = 0 AND date_format(B.submit_time, '%Y-%m-%d') = A.item)
  233. LEFT JOIN alert c ON (c.oc_id = 406283 AND c.deleted_flag = 0 AND date_format(c.alert_time, '%Y-%m-%d') = A.item)
  234. GROUP BY A.item
  235. </select>
  236. <select id="getCounter" parameterType="java.util.Map" resultType="map">
  237. SELECT COUNT( 0 ) AS "total",
  238. SUM( IF ( A.danger_level = 1, 1, 0 )) AS "level_one",
  239. SUM( IF ( A.danger_level = 2, 1, 0 )) AS "level_two",
  240. SUM( IF ( A.danger_level = 3, 1, 0 )) AS "level_three",
  241. SUM( IF ( A.danger_level = 4, 1, 0 )) AS "level_four",
  242. SUM( IF ( ISNULL(A.rectify_account_id), 1, 0 )) AS "rectified",
  243. SUM( IF ( ISNULL(A.accept_account_id), 1, 0 )) AS "accepted"
  244. FROM ent_danger AS A
  245. WHERE A.deleted_flag = 0
  246. <if test="ocId != null">
  247. AND A.oc_id = #{ocId ,jdbcType=BIGINT}
  248. </if>
  249. <if test="status != null">
  250. AND A.status = #{status ,jdbcType=BIGINT}
  251. </if>
  252. ORDER BY A.submit_time DESC
  253. </select>
  254. </mapper>