ソースを参照

物联看板设备数量、告警趋势、告警状态增加查询报警主机传感器

jiawuxian 1 年間 前
コミット
2d10d10dc9

+ 24 - 15
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotWebStatisticBoardServiceImpl.java

@@ -41,25 +41,34 @@ public class IotWebStatisticBoardServiceImpl implements IIotWebStatisticBoardSer
             BaseDeviceTypeEnum.AlarmHostInput_Temperature.getCode(),
             BaseDeviceTypeEnum.AlarmHostInput_Humidity.getCode());
     final List<String> environmentTypes = Arrays.asList(BaseDeviceTypeEnum.FSU_Theft.getCode(),
+
             BaseDeviceTypeEnum.FSU_Infrared.getCode(),
+            BaseDeviceTypeEnum.AlarmHostInput_Infrared.getCode(),
+
             BaseDeviceTypeEnum.FSU_DoorMagnetic.getCode(),
-            BaseDeviceTypeEnum.FSU_Water.getCode(),
-            BaseDeviceTypeEnum.FSU_Ups.getCode(),
-            BaseDeviceTypeEnum.FSU_AirConditioner.getCode(),
-            BaseDeviceTypeEnum.FSU_DoPowerControl.getCode(),
-            BaseDeviceTypeEnum.FSU_DoPowerCollection.getCode(),
-            BaseDeviceTypeEnum.FSU_DoPowerControlBoxButton.getCode(),
             BaseDeviceTypeEnum.AlarmHostInput_DoorSensor.getCode(),
-            BaseDeviceTypeEnum.AlarmHostInput_Infrared.getCode(),
+
+            BaseDeviceTypeEnum.FSU_Water.getCode(),
             BaseDeviceTypeEnum.AlarmHostInput_Soaking.getCode(),
-            BaseDeviceTypeEnum.AlarmHostInput_Displacement.getCode(),
-            BaseDeviceTypeEnum.AlarmHostInput_Broken.getCode(),
-            BaseDeviceTypeEnum.AlarmHostInput_Shock.getCode(),
-            BaseDeviceTypeEnum.AlarmHostInput_Tamper.getCode(),
-            BaseDeviceTypeEnum.AlarmHostInput_Intrusion.getCode(),
-            BaseDeviceTypeEnum.AlarmHostInput_IMDualIdentification.getCode(),
-            BaseDeviceTypeEnum.AlarmHostInput_Microwave.getCode(),
-            BaseDeviceTypeEnum.AlarmHostInput_EmergencyButton.getCode()
+
+            BaseDeviceTypeEnum.FSU_Ups.getCode(),
+
+            BaseDeviceTypeEnum.FSU_AirConditioner.getCode()
+
+//            BaseDeviceTypeEnum.FSU_DoPowerControl.getCode(),
+//            BaseDeviceTypeEnum.FSU_DoPowerCollection.getCode(),
+//            BaseDeviceTypeEnum.FSU_DoPowerControlBoxButton.getCode(),
+
+//
+//
+//            BaseDeviceTypeEnum.AlarmHostInput_Displacement.getCode(),
+//            BaseDeviceTypeEnum.AlarmHostInput_Broken.getCode(),
+//            BaseDeviceTypeEnum.AlarmHostInput_Shock.getCode(),
+//            BaseDeviceTypeEnum.AlarmHostInput_Tamper.getCode(),
+//            BaseDeviceTypeEnum.AlarmHostInput_Intrusion.getCode(),
+//            BaseDeviceTypeEnum.AlarmHostInput_IMDualIdentification.getCode(),
+//            BaseDeviceTypeEnum.AlarmHostInput_Microwave.getCode(),
+//            BaseDeviceTypeEnum.AlarmHostInput_EmergencyButton.getCode()
     );
 
     final SimpleDateFormat dayFormat = new SimpleDateFormat("M月d");

+ 45 - 10
soc-modules/soc-modules-iot/src/main/resources/mapper/IotWebStatisticBoardMapper.xml

@@ -8,6 +8,13 @@
         WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
           and di.deleted = 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
+        GROUP BY di.sensor_type
     </select>
 
     <select id="orgDeviceCount" resultType="com.xunmei.iot.dto.webStatisticBoard.BoardDeviceCountDto">
@@ -17,6 +24,13 @@
         WHERE o.path like CONCAT((select path from sys_org where id = #{orgId}), '%')
           and di.deleted = 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
+        GROUP BY di.sensor_type, o.id, o.path
     </select>
 
     <select id="protection" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardProtectionVo">
@@ -87,16 +101,26 @@
         limit 3
     </select>
     <select id="alarmRate" resultType="com.xunmei.iot.vo.webStatisticBoard.BoardAlarmRateVo">
-        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 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
+        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 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 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">
@@ -123,6 +147,17 @@
                   AND o.deleted = 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 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>