Browse Source

解决告警值拼接只有单位的问题,解决温湿度同时告警同时恢复时 只会恢复一条告警的问题,

zhulu 1 năm trước cách đây
mục cha
commit
706693d010

+ 11 - 4
project_data/sql/0.0.7.409/soc/soc.sql

@@ -30,10 +30,10 @@ CALL schema_change ();
 DELETE from `sys_dict_type` WHERE  `dict_type`='alarm_deal_type';
 DELETE from `sys_dict_data` WHERE  `dict_type`='alarm_deal_type';
 INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('告警处置类型', 'alarm_deal_type', '0', '超级管理员', '2024-04-02 18:02:13', '', NULL, NULL);
-INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '误报', '5', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:16', '', NULL, NULL);
-INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '正常报警', '2', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:35', '', NULL, NULL);
-INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '报修', '3', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:46', '', NULL, NULL);
-INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (5, '测试', '4', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:56', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (5, '误报', '2', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:16', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '正常报警', '3', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:35', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '报修', '4', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:46', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '测试', '5', 'alarm_deal_type', NULL, 'default', 'N', '0', '超级管理员', '2024-04-02 18:03:56', '', NULL, NULL);
 
 delete from `iot_alarm_system_field` WHERE  `source_type`='41881';
 INSERT INTO `iot_alarm_system_field` (`source_type`, `source_type_des`, `sys_field_code`, `name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (41881, '盗情', '41881', '被盗告警', '{\"0\": \"正常\",\"1\": \"告警\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, '2022-07-26 16:14:26', NULL, '2022-07-26 16:14:30', NULL);
@@ -44,3 +44,10 @@ INSERT INTO `sys_dict_data`(`dict_sort`, `dict_label`, `dict_value`, `dict_type`
 
 delete from `sys_dict_data` WHERE  `dict_value`='41881' AND `dict_type`='app_sensor_device_type';
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 6, '被盗', '41881', 'app_sensor_device_type', NULL, 'default', 'N', '0', '超级管理员', '2024-03-04 16:23:49', '', NULL, NULL);
+
+delete from `sys_dict_type` WHERE  `dict_type`='alarm_deal_status';
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('告警处置状态', 'alarm_deal_status', '0', '超级管理员', '2024-04-08 09:38:40', '', NULL, NULL);
+
+delete from `sys_dict_data` WHERE  `dict_type`='alarm_deal_status';
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 0, '未处置', '0', 'alarm_deal_status', NULL, 'default', 'N', '0', '超级管理员', '2024-04-08 09:39:03', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 1, '已处置', '1', 'alarm_deal_status', NULL, 'default', 'N', '0', '超级管理员', '2024-04-08 09:39:12', '', NULL, NULL);

+ 1 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotAlarmDataMapper.xml

@@ -50,6 +50,7 @@
         <if test="param.isDo == 0">
             and a.is_do is null
         </if>
+        order by a.end_time ,a.time desc
     </select>
     <select id="selectAppPageList" resultType="com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo">
         SELECT

+ 15 - 6
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDataServiceImpl.java

@@ -152,14 +152,22 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
                 iotSensor.setStateStartTime(LocalDateTime.now());
                 iotSensorMapper.updateById(iotSensor);
             }
-
         }
         if (isExpress && !isAlarm) {
             //报警恢复
             if( alarms.size() != 0){
-                IotAlarmData iotAlarmData = alarms.get(0);
-                iotAlarmData.setEndTime(LocalDateTime.now());
-                this.updateById(iotAlarmData);
+                if(alarms.size()>1)
+                {
+                    for (IotAlarmData oldAlarm : alarms) {
+                        oldAlarm.setEndTime(LocalDateTime.now());
+                        this.updateById(oldAlarm);
+                    }
+                }
+                else {
+                    IotAlarmData iotAlarmData = alarms.get(0);
+                    iotAlarmData.setEndTime(LocalDateTime.now());
+                    this.updateById(iotAlarmData);
+                }
             }
 
             if (ObjectUtil.notEqual(iotSensor.getState(),0)) {
@@ -330,7 +338,8 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
         //此处认为大于,大于等于,小于,小于等于 规则中传感器上报值与规则中的设定值皆为数字,
         //所以在判断此类规则的时候将值转为了BigDecimal进行判断; parseInt会在有小数的时候报错
         if (AlarmRuleExpressOperateEnum.EQUALS.getText().equals(operator)) {
-            if (sensorValue.equals(settingValue)) {
+            // sensorValue 存在为null的情况, deviceType和 infos.name 不对应的情况
+            if (ObjectUtil.equal(sensorValue,settingValue)) {
                 //对上了
                 iotAlarmData = builderAlarm(sensorValue, field, express, iotSensor);
             }
@@ -396,7 +405,7 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
 
     private IotAlarmData builderAlarm(String sensorValue, IotAlarmSystemField field, IotAlarmRuleExpress express, IotSensor iotSensor) {
         IotAlarmData iotAlarmData = new IotAlarmData();
-        iotAlarmData.setAlarmValue(sensorValue + field.getUnit() == null ? "" : field.getUnit());
+        iotAlarmData.setAlarmValue(sensorValue + (field.getUnit() == null ? "" : field.getUnit()));
         iotAlarmData.setTime(LocalDateTime.now());
         iotAlarmData.setDeviceName(iotSensor.getDeviceName());
         iotAlarmData.setRuleId(express.getRuleId());