| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- <?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="com.xunmei.iot.mapper.IotWebStatisticBoardMapper">
- <select id="deviceCount" resultType="com.xunmei.iot.dto.webStatisticBoard.BoardDeviceCountByTypeDto">
- SELECT di.device_type, count(0) as count
- FROM iot_device_info di
- INNER JOIN sys_org o on di.org_id = o.id and o.deleted = 0 and o.is_lock = 0
- WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
- and di.deleted = 0 and di.enable=0
- GROUP BY di.device_type
- union all
- SELECT di.sensor_type as device_type, count(0) as count
- FROM iot_alarm_defence_area di
- INNER JOIN sys_org o on di.org_id = o.id and o.deleted = 0 and o.is_lock = 0
- WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
- and di.deleted = 0 and di.enable=0
- GROUP BY di.sensor_type
- </select>
- <select id="orgDeviceCount" resultType="com.xunmei.iot.dto.webStatisticBoard.BoardDeviceCountDto">
- SELECT o.id as orgId, o.path as orgPath, di.device_type, count(0) as count
- FROM iot_device_info di
- INNER JOIN sys_org o on di.org_id = o.id and o.deleted = 0 and o.is_lock = 0
- WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
- and di.deleted = 0 and di.enable=0
- GROUP BY di.device_type, o.id, o.path
- union all
- SELECT o.id as orgId, o.path as orgPath, di.sensor_type as device_type, count(0) as count
- FROM iot_alarm_defence_area di
- INNER JOIN sys_org o on di.org_id = o.id and o.deleted = 0 and o.is_lock = 0
- WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
- and di.deleted = 0 and di.enable=0
- GROUP BY di.sensor_type, o.id, o.path
- </select>
- <select id="protection" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardProtectionVo">
- SELECT count(0) AS total,
- sum(
- IF
- (s.`status` = 1, 1, 0)) AS `on`,
- sum(
- IF
- (s.`status` = 0, 1, 0)) AS off
- FROM iot_alarm_subsystem s
- INNER JOIN sys_org o ON s.org_id = o.id
- AND o.deleted = 0
- AND o.is_lock = 0
- and s.enable = 0
- WHERE o.path LIKE CONCAT((select path from sys_org where id = #{orgId}), '%')
- AND s.deleted = 0
- </select>
- <select id="deviceOnline" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardOnlineByTypeVo">
- SELECT
- di.device_type,
- count( 0 ) AS deviceCount,
- sum(
- IF
- ( di.net_status = 1, 1, 0 )) as onLineCount
- FROM
- iot_device_info di
- INNER JOIN sys_org o ON di.org_id = o.id
- AND o.deleted = 0
- AND o.is_lock = 0
- WHERE
- o.path LIKE CONCAT(( SELECT path FROM sys_org WHERE id = #{orgId} ), '%' )
- AND di.deleted = 0
- and di.enable=0
- AND di.device_type IN
- <foreach collection="deviceTypes" item="t" separator="," open="(" close=")">
- #{t}
- </foreach>
- GROUP BY
- di.device_type
- </select>
- <select id="healthSummary" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardHealthSummaryVo">
- SELECT count(0) as total,
- sum(score is not null) as checkedCount,
- sum(score is not null and score > 90) as over90Count,
- sum(score is not null and score <= 90) as notover90Count
- FROM (SELECT o.id, max(dcd.score) as score
- FROM sys_org o
- LEFT JOIN iot_daily_check_data dcd
- on o.id = dcd.org_id and dcd.record_date BETWEEN #{startTime} AND #{endTime}
- WHERE o.type = 4
- and o.deleted = 0
- and o.is_lock = 0
- and o.path like concat((SELECT path from sys_org WHERE id = #{orgId}), '%')
- GROUP BY o.id) a
- </select>
- <select id="healthRanking" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardHealthRankingVo">
- SELECT org_name, score
- FROM (SELECT o.id, o.short_name as org_name, max(dcd.score) as score
- FROM sys_org o
- INNER JOIN iot_daily_check_data dcd
- on o.id = dcd.org_id and dcd.record_date BETWEEN #{startTime} AND #{endTime}
- WHERE o.type = 4
- and o.deleted = 0
- and o.is_lock = 0
- and o.path like concat((SELECT path from sys_org WHERE id = #{orgId}), '%')
- GROUP BY o.id) a
- ORDER BY score desc
- limit 3
- </select>
- <select id="alarmRate" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardAlarmRateVo">
- SELECT sum(normalCount) as normalCount, sum(alarmCount) as alarmCount
- from (SELECT sum(ds.state = 0) normalCount,
- sum(ds.state = 1) alarmCount
- FROM iot_device_info di
- INNER JOIN sys_org o ON di.org_id = o.id
- AND o.deleted = 0
- and di.enable=0
- AND o.is_lock = 0
- AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}),
- '%')
- INNER JOIN iot_device_status ds
- ON di.id = ds.device_id
- union all
- SELECT sum(di.state = 'normal') normalCount,
- sum(di.state = 'alarm') alarmCount
- FROM iot_alarm_defence_area di
- INNER JOIN sys_org o ON di.org_id = o.id
- AND o.deleted = 0
- and di.enable=0
- AND o.is_lock = 0
- AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}),
- '%')) a
- </select>
- <select id="alarmList" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardAlarmInfoVo">
- SELECT o.short_name AS org_name,
- ad.device_name,
- ad.time AS alarmStartTime,
- ad.end_time AS alarmEndTime,
- ad.value_text AS alarmInfo
- FROM iot_alarm_data ad
- INNER JOIN sys_org o ON ad.org_id = o.id AND o.deleted = 0 AND o.is_lock = 0 AND
- o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}), '%')
- INNER JOIN iot_device_info di ON ad.device_id = di.id
- where di.deleted = 0
- and di.enable=0
- <if test="productTypeList != null and productTypeList.size() > 0">
- and ad.source_type in
- <foreach collection="productTypeList" item="item" index="index" open="(" separator="," close=")">
- #{item}
- </foreach>
- </if>
- ORDER BY time DESC
- LIMIT 50
- </select>
- <select id="alarmTrend" resultType="com.xunmei.iot.dto.webStatisticBoard.BoardAlarmTrendDto">
- select device_type, date, count(0) as count
- FROM (SELECT di.device_type,
- Date_FORMAT(ad.time, '%Y-%m-%d') as date
- FROM iot_alarm_data ad
- INNER JOIN iot_device_info di ON ad.device_id = di.id
- AND di.deleted = 0
- INNER JOIN sys_org o ON ad.org_id = o.id
- AND o.deleted = 0
- and di.enable=0
- AND o.is_lock = 0
- AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}), '%')
- WHERE ad.time > #{startTime}
- union all
- SELECT ai.sensor_type as device_type,
- Date_FORMAT(ad.time, '%Y-%m-%d') as date
- FROM iot_alarm_data ad
- INNER JOIN iot_alarm_defence_area ai ON ad.device_id = ai.id
- AND ai.deleted = 0
- INNER JOIN sys_org o ON ad.org_id = o.id
- AND o.deleted = 0
- and ai.enable=0
- AND o.is_lock = 0
- AND o.path LIKE concat((SELECT path FROM sys_org WHERE id = #{orgId}), '%')
- WHERE ad.time > #{startTime}) a
- GROUP BY device_type, date
- </select>
- </mapper>
|