IotWebStatisticBoardMapper.xml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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
  10. GROUP BY di.device_type
  11. </select>
  12. <select id="orgDeviceCount" resultType="com.xunmei.iot.dto.webStatisticBoard.BoardDeviceCountDto">
  13. SELECT o.id as orgId, o.path as orgPath, di.device_type, count(0) as count
  14. FROM iot_device_info di
  15. INNER JOIN sys_org o on di.org_id = o.id and o.deleted = 0 and o.is_lock = 0
  16. WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
  17. and di.deleted = 0
  18. GROUP BY di.device_type, o.id, o.path
  19. </select>
  20. <select id="protection" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardProtectionVo">
  21. SELECT count(0) AS total,
  22. sum(
  23. IF
  24. (s.`status` = 1, 1, 0)) AS `on`,
  25. sum(
  26. IF
  27. (s.`status` = 0, 1, 0)) AS off
  28. FROM iot_alarm_subsystem s
  29. INNER JOIN sys_org o ON s.org_id = o.id
  30. AND o.deleted = 0
  31. AND o.is_lock = 0
  32. WHERE o.path LIKE CONCAT((select path from sys_org where id = #{orgId}), '%')
  33. AND s.deleted = 0
  34. </select>
  35. <select id="deviceOnline" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardOnlineByTypeVo">
  36. SELECT
  37. di.device_type,
  38. count( 0 ) AS deviceCount,
  39. sum(
  40. IF
  41. ( di.net_status = 1, 1, 0 )) as onLineCount
  42. FROM
  43. iot_device_info di
  44. INNER JOIN sys_org o ON di.org_id = o.id
  45. AND o.deleted = 0
  46. AND o.is_lock = 0
  47. WHERE
  48. o.path LIKE CONCAT(( SELECT path FROM sys_org WHERE id = #{orgId} ), '%' )
  49. AND di.deleted = 0
  50. AND di.device_type IN
  51. <foreach collection="deviceTypes" item="t" separator="," open="(" close=")">
  52. #{t}
  53. </foreach>
  54. GROUP BY
  55. di.device_type
  56. </select>
  57. <select id="healthSummary" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardHealthSummaryVo">
  58. SELECT count(0) as total,
  59. sum(score is not null) as checkedCount,
  60. sum(score is not null and score > 90) as over90Count,
  61. sum(score is not null and score &lt;= 90) as notover90Count
  62. FROM (SELECT o.id, max(dcd.score) as score
  63. FROM sys_org o
  64. LEFT JOIN iot_daily_check_data dcd
  65. on o.id = dcd.org_id and dcd.record_date BETWEEN #{startTime} AND #{endTime}
  66. WHERE o.type = 4
  67. and o.deleted = 0
  68. and o.is_lock = 0
  69. and o.path like concat((SELECT path from sys_org WHERE id = #{orgId}), '%')
  70. GROUP BY o.id) a
  71. </select>
  72. <select id="healthRanking" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardHealthRankingVo">
  73. SELECT org_name, score
  74. FROM (SELECT o.id, o.short_name as org_name, max(dcd.score) as score
  75. FROM sys_org o
  76. INNER JOIN iot_daily_check_data dcd
  77. on o.id = dcd.org_id and dcd.record_date BETWEEN #{startTime} AND #{endTime}
  78. WHERE o.type = 4
  79. and o.deleted = 0
  80. and o.is_lock = 0
  81. and o.path like concat((SELECT path from sys_org WHERE id = #{orgId}), '%')
  82. GROUP BY o.id) a
  83. ORDER BY score desc
  84. limit 3
  85. </select>
  86. <select id="alarmRate" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardAlarmRateVo">
  87. SELECT sum(ds.state = 0) normalCount,
  88. sum(ds.state = 1) alarmCount
  89. FROM iot_device_info di
  90. INNER JOIN sys_org o ON di.org_id = o.id
  91. AND o.deleted = 0
  92. AND o.is_lock = 0
  93. AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}),
  94. '%')
  95. INNER JOIN iot_device_status ds
  96. ON di.id = ds.device_id
  97. </select>
  98. <select id="alarmList" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardAlarmInfoVo">
  99. SELECT o.short_name AS org_name,
  100. di.device_name,
  101. ad.time AS alarmStartTime,
  102. ad.end_time AS alarmEndTime,
  103. ad.value_text AS alarmInfo
  104. FROM iot_alarm_data ad
  105. INNER JOIN iot_device_info di ON ad.device_id = di.id AND di.deleted = 0
  106. INNER JOIN sys_org o ON ad.org_id = o.id AND o.deleted = 0 AND o.is_lock = 0 AND
  107. o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}), '%')
  108. ORDER BY time DESC
  109. LIMIT 50
  110. </select>
  111. <select id="alarmTrend" resultType="com.xunmei.iot.dto.webStatisticBoard.BoardAlarmTrendDto">
  112. select device_type, date, count(0) as count
  113. FROM (SELECT di.device_type,
  114. Date_FORMAT(ad.time, '%Y-%m-%d') as date
  115. FROM iot_alarm_data ad
  116. INNER JOIN iot_device_info di ON ad.device_id = di.id
  117. AND di.deleted = 0
  118. INNER JOIN sys_org o ON ad.org_id = o.id
  119. AND o.deleted = 0
  120. AND o.is_lock = 0
  121. AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}), '%')
  122. WHERE ad.time > #{startTime}) a
  123. GROUP BY device_type, date
  124. </select>
  125. </mapper>