IotWebStatisticBoardMapper.xml 5.4 KB

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