IotWebStatisticBoardMapper.xml 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.xunmei.iot.mapper.IotWebStatisticBoardMapper">
  4. <select id="deviceCount" resultType="com.xunmei.iot.dto.webStatisticBoard.BoardDeviceCountByTypeDto">
  5. SELECT di.device_type, count(0) as count
  6. FROM iot_device_info di
  7. INNER JOIN sys_org o on di.org_id = o.id and o.deleted = 0 and o.is_lock = 0
  8. WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
  9. and di.deleted = 0 and di.enable=0
  10. GROUP BY di.device_type
  11. union all
  12. SELECT di.sensor_type as device_type, count(0) as count
  13. FROM iot_alarm_defence_area di
  14. INNER JOIN sys_org o on di.org_id = o.id and o.deleted = 0 and o.is_lock = 0
  15. WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
  16. and di.deleted = 0 and di.enable=0
  17. GROUP BY di.sensor_type
  18. </select>
  19. <select id="orgDeviceCount" resultType="com.xunmei.iot.dto.webStatisticBoard.BoardDeviceCountDto">
  20. SELECT o.id as orgId, o.path as orgPath, di.device_type, count(0) as count
  21. FROM iot_device_info di
  22. INNER JOIN sys_org o on di.org_id = o.id and o.deleted = 0 and o.is_lock = 0
  23. WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
  24. and di.deleted = 0 and di.enable=0
  25. GROUP BY di.device_type, o.id, o.path
  26. union all
  27. SELECT o.id as orgId, o.path as orgPath, di.sensor_type as device_type, count(0) as count
  28. FROM iot_alarm_defence_area di
  29. INNER JOIN sys_org o on di.org_id = o.id and o.deleted = 0 and o.is_lock = 0
  30. WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
  31. and di.deleted = 0 and di.enable=0
  32. GROUP BY di.sensor_type, o.id, o.path
  33. </select>
  34. <select id="protection" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardProtectionVo">
  35. SELECT count(0) AS total,
  36. sum(
  37. IF
  38. (s.`status` = 1, 1, 0)) AS `on`,
  39. sum(
  40. IF
  41. (s.`status` = 0, 1, 0)) AS off
  42. FROM iot_alarm_subsystem s
  43. INNER JOIN sys_org o ON s.org_id = o.id
  44. AND o.deleted = 0
  45. AND o.is_lock = 0
  46. and s.enable = 0
  47. WHERE o.path LIKE CONCAT((select path from sys_org where id = #{orgId}), '%')
  48. AND s.deleted = 0
  49. </select>
  50. <select id="deviceOnline" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardOnlineByTypeVo">
  51. SELECT
  52. di.device_type,
  53. count( 0 ) AS deviceCount,
  54. sum(
  55. IF
  56. ( di.net_status = 1, 1, 0 )) as onLineCount
  57. FROM
  58. iot_device_info di
  59. INNER JOIN sys_org o ON di.org_id = o.id
  60. AND o.deleted = 0
  61. AND o.is_lock = 0
  62. WHERE
  63. o.path LIKE CONCAT(( SELECT path FROM sys_org WHERE id = #{orgId} ), '%' )
  64. AND di.deleted = 0
  65. and di.enable=0
  66. AND di.device_type IN
  67. <foreach collection="deviceTypes" item="t" separator="," open="(" close=")">
  68. #{t}
  69. </foreach>
  70. GROUP BY
  71. di.device_type
  72. </select>
  73. <select id="healthSummary" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardHealthSummaryVo">
  74. SELECT count(0) as total,
  75. sum(score is not null) as checkedCount,
  76. sum(score is not null and score > 90) as over90Count,
  77. sum(score is not null and score &lt;= 90) as notover90Count
  78. FROM (SELECT o.id, max(dcd.score) as score
  79. FROM sys_org o
  80. LEFT JOIN iot_daily_check_data dcd
  81. on o.id = dcd.org_id and dcd.record_date BETWEEN #{startTime} AND #{endTime}
  82. WHERE o.type = 4
  83. and o.deleted = 0
  84. and o.is_lock = 0
  85. and o.path like concat((SELECT path from sys_org WHERE id = #{orgId}), '%')
  86. GROUP BY o.id) a
  87. </select>
  88. <select id="healthRanking" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardHealthRankingVo">
  89. SELECT org_name, score
  90. FROM (SELECT o.id, o.short_name as org_name, max(dcd.score) as score
  91. FROM sys_org o
  92. INNER JOIN iot_daily_check_data dcd
  93. on o.id = dcd.org_id and dcd.record_date BETWEEN #{startTime} AND #{endTime}
  94. WHERE o.type = 4
  95. and o.deleted = 0
  96. and o.is_lock = 0
  97. and o.path like concat((SELECT path from sys_org WHERE id = #{orgId}), '%')
  98. GROUP BY o.id) a
  99. ORDER BY score desc
  100. limit 3
  101. </select>
  102. <select id="alarmRate" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardAlarmRateVo">
  103. SELECT sum(normalCount) as normalCount, sum(alarmCount) as alarmCount
  104. from (SELECT sum(ds.state = 0) normalCount,
  105. sum(ds.state = 1) alarmCount
  106. FROM iot_device_info di
  107. INNER JOIN sys_org o ON di.org_id = o.id
  108. AND o.deleted = 0
  109. and di.enable=0
  110. AND o.is_lock = 0
  111. AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}),
  112. '%')
  113. INNER JOIN iot_device_status ds
  114. ON di.id = ds.device_id
  115. union all
  116. SELECT sum(di.state = 'normal') normalCount,
  117. sum(di.state = 'alarm') alarmCount
  118. FROM iot_alarm_defence_area di
  119. INNER JOIN sys_org o ON di.org_id = o.id
  120. AND o.deleted = 0
  121. and di.enable=0
  122. AND o.is_lock = 0
  123. AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}),
  124. '%')) a
  125. </select>
  126. <select id="alarmList" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardAlarmInfoVo">
  127. SELECT o.short_name AS org_name,
  128. ad.device_name,
  129. ad.time AS alarmStartTime,
  130. ad.end_time AS alarmEndTime,
  131. ad.value_text AS alarmInfo
  132. FROM iot_alarm_data ad
  133. INNER JOIN sys_org o ON ad.org_id = o.id AND o.deleted = 0 AND o.is_lock = 0 AND
  134. o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}), '%')
  135. INNER JOIN iot_device_info di ON ad.device_id = di.id
  136. where di.deleted = 0
  137. and di.enable=0
  138. <if test="productTypeList != null and productTypeList.size() > 0">
  139. and ad.source_type in
  140. <foreach collection="productTypeList" item="item" index="index" open="(" separator="," close=")">
  141. #{item}
  142. </foreach>
  143. </if>
  144. ORDER BY time DESC
  145. LIMIT 50
  146. </select>
  147. <select id="alarmTrend" resultType="com.xunmei.iot.dto.webStatisticBoard.BoardAlarmTrendDto">
  148. select device_type, date, count(0) as count
  149. FROM (SELECT di.device_type,
  150. Date_FORMAT(ad.time, '%Y-%m-%d') as date
  151. FROM iot_alarm_data ad
  152. INNER JOIN iot_device_info di ON ad.device_id = di.id
  153. AND di.deleted = 0
  154. INNER JOIN sys_org o ON ad.org_id = o.id
  155. AND o.deleted = 0
  156. and di.enable=0
  157. AND o.is_lock = 0
  158. AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}), '%')
  159. WHERE ad.time > #{startTime}
  160. union all
  161. SELECT ai.sensor_type as device_type,
  162. Date_FORMAT(ad.time, '%Y-%m-%d') as date
  163. FROM iot_alarm_data ad
  164. INNER JOIN iot_alarm_defence_area ai ON ad.device_id = ai.id
  165. AND ai.deleted = 0
  166. INNER JOIN sys_org o ON ad.org_id = o.id
  167. AND o.deleted = 0
  168. and ai.enable=0
  169. AND o.is_lock = 0
  170. AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}), '%')
  171. WHERE ad.time > #{startTime}) a
  172. GROUP BY device_type, date
  173. </select>
  174. </mapper>