Ver Fonte

告警中心web功能优化

humingshi-7@163.com há 1 ano atrás
pai
commit
2748e783ba

+ 3 - 3
project_data/sql/0.1.1/soc/soc.sql

@@ -1094,7 +1094,7 @@ INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `s
 INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (133, 41885, '燃气', '41885', '可燃气体告警', 'alarm', '{\"0\": \"正常\",\"1\": \"告警\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', '', 1, NULL, NULL, NULL, NULL);
 INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (134, 4188, '门磁', '4188', '门磁开关状态', 'alarm', '{\"0\":\"门已打开\",\"1\":\"门已关闭\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', '', 1, NULL, NULL, NULL, NULL);
 INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (135, 4181, '红外', '4181', '红外告警', 'alarm', '{\"0\": \"正常\",\"1\": \"告警\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', '', 1, NULL, NULL, NULL, NULL);
-INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (136, 41881, '盗情', '41881', '被盗告警', 'alarm', '{\"0\": \"正常\",\"1\": \"告警\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);
+INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (136, 41881, '防盗', '41881', '防盗告警', 'alarm', '{\"0\": \"正常\",\"1\": \"告警\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);
 INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (137, 415, '空调', '415_1', '电流', 'current', '{}', '{}', 'FLOAT', '浮点型', 'A', 1, NULL, NULL, NULL, NULL);
 INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (138, 415, '空调', '415_2', '电压', 'voltage', '{}', '{}', 'FLOAT', '浮点型', 'V', 1, NULL, NULL, NULL, NULL);
 INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (139, 415, '空调', '415_3', '回风温度', 'returnAirTemperature', '{}', '{}', 'FLOAT', '浮点型', '°C', 1, NULL, NULL, NULL, NULL);
@@ -1121,8 +1121,8 @@ INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `s
 INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (160, 408, 'UPS', '408_6', '电池电压低告警', 'lowBatteryVoltageAlarm', '{\"0\": \"正常\",\"1\": \"告警\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);
 INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (161, 4186, '回路', '4186', '回路通电状态', 'status', '{\"0\": \"断电\",\"1\": \"通电\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);
 INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (162, 41861, 'DO8小时控电箱按钮', '41861', 'DO8小时控电箱按钮', 'status', '{\"0\": \"弹起\",\"1\": \"按下\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);
-INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (163, 41860001, '8小时回路通电状态', '41860001', '8小时回路通电状态', 'status', '{\"0\": \"断电\",\"1\": \"通电\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);
-INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (164, 41860002, '24小时回路缺相状态', '41860002', '24小时回路缺相状态', 'status', '{\"0\": \"缺相\",\"1\": \"通电\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);
+INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (163, 41860001, '8小时回路', '41860001', '8小时回路通电状态', 'status', '{\"0\": \"断电\",\"1\": \"通电\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);
+INSERT INTO  `iot_alarm_system_field`(`id`, `source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (164, 41860002, '24小时回路', '41860002', '24小时回路缺相状态', 'status', '{\"0\": \"缺相\",\"1\": \"通电\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);
 
 -- 报警主机传感器 --
 INSERT INTO  `iot_alarm_system_field`(`source_type`, `source_type_des`, `sys_field_code`, `name`, `property_name`, `specs`, `operators`, `type`, `type_des`, `unit`, `enable`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (501, '湿度传感器', 'Humidity', '湿度', 'status', '{\"alarm\": \"报警\",\"bypassAlarm\": \"旁路报警\",\"bypass\": \"旁路\",\"normal\": \"正常\",\"activity\": \"活动\",\"unknow\": \"未知\"}', '{\"EQUALS\": \"等于\"}', 'ENUM', '枚举', NULL, 1, NULL, NULL, NULL, NULL);

+ 2 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/enums/AlarmDataTypeEnum.java

@@ -13,7 +13,8 @@ import lombok.NoArgsConstructor;
 public enum AlarmDataTypeEnum {
 
     IOT_ALARM(0),
-    HOST_ALARM(1);
+    HOST_ALARM(1),
+    ALARM_ALARM(2);
 
     private int value;
 }

+ 1 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/protection/service/impl/IotAlarmHostServiceImpl.java

@@ -594,7 +594,7 @@ public class IotAlarmHostServiceImpl implements IIotAlarmHostService, RouterServ
         iotAlarmData.setContent(deviceName + "触发" + productName + "告警");
         iotAlarmData.setOrgId(iotDeviceStatus.getOrgId());
 
-        iotAlarmData.setDataType(AlarmDataTypeEnum.HOST_ALARM.getValue());//报警主机类传感器
+        iotAlarmData.setDataType(AlarmDataTypeEnum.ALARM_ALARM.getValue());//报警主机类传感器
         iotAlarmData.setSmsType(false);
         //todo:
         iotAlarmData.setDeviceId(String.valueOf(iotDeviceStatus.getDeviceId()));

+ 9 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmDataController.java

@@ -6,9 +6,11 @@ import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
+import com.xunmei.iot.vo.alarmData.AlarmTypeSelectedVO;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import java.util.List;
 
 @RestController
 @RequestMapping("/iot_alarm_data")
@@ -37,4 +39,11 @@ public class IotAlarmDataController {
         return AjaxResult.success(this.iotAlarmDataService.dealAlarm(requestDto));
     }
 
+    @ApiOperation("获取告警类型下拉列表数据")
+    @GetMapping({"/deviceTypeList"})
+    List<AlarmTypeSelectedVO> deviceTypeList(@RequestParam(value = "type" ,defaultValue = "") String type) {
+
+        return this.iotAlarmDataService.getDeviceTypeList(type);
+    }
+
 }

+ 35 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/enums/AlarmVideoTypeEnum.java

@@ -0,0 +1,35 @@
+package com.xunmei.iot.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+public enum AlarmVideoTypeEnum {
+
+    SIGNALLOST(1001,"信号丢失"),
+    OCCLUDE(1002,"遮挡"),
+    BRIGHTNESS(1003,"亮度"),
+    COLORCAST(1004,"偏色"),
+    SNOWFLAKE(1005,"雪花"),
+    STRIPE(1006,"条纹"),
+    CONTRAST(1007,"对比度"),
+    BLURRY(1008,"模糊"),
+    DVRDISK(1009,"硬盘");
+
+    private int value;
+
+    private String text;
+
+    public static String getTextByValue(int property) {
+        for (AlarmVideoTypeEnum obj : values()) {
+            if (obj.getValue() == property) {
+                return obj.getText();
+            }
+        }
+
+        throw new IllegalArgumentException("Invalid property.");
+    }
+}

+ 3 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmDataMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
+import com.xunmei.iot.vo.alarmData.AlarmTypeSelectedVO;
 import com.xunmei.iot.vo.alarmData.DeviceTypeCountVo;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
@@ -31,4 +32,6 @@ public interface IotAlarmDataMapper extends BaseMapper<IotAlarmData> {
     Page<IotAlarmDataVo> selectSensorAlarmPageList(@Param("page") Page<IotAlarmDataVo> page, @Param("param")AppAlarmPageDto requestDto);
 
     List<Map<String,String>> selectAlarmCount(@Param("orgPath") String orgPath, @Param("beginTime") Date beginTime);
+
+    List<AlarmTypeSelectedVO> selectAlarmTypeList(@Param("excludeTypes") List<String> excludeTypes,@Param("mixTypes") List<String> mixTypes, @Param("category")String category);
 }

+ 3 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmDataService.java

@@ -6,6 +6,7 @@ import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
 import com.xunmei.iot.dto.alarmData.dealAlarmDto;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
+import com.xunmei.iot.vo.alarmData.AlarmTypeSelectedVO;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 import com.xunmei.iot.vo.alarmData.SensorAlarmCountVo;
 
@@ -41,4 +42,6 @@ public interface IotAlarmDataService extends IService<IotAlarmData> {
 
     List<Map<String,String>> selectAlarmCount(String orgPath);
     void deleteData(Long orgId);
+
+    List<AlarmTypeSelectedVO> getDeviceTypeList(String type);
 }

+ 73 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmDataServiceImpl.java

@@ -4,18 +4,22 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
+import com.xunmei.common.core.enums.iot.SensorType;
+import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.iot.dto.alarmData.AppAlarmPageDto;
 import com.xunmei.iot.dto.alarmData.dealAlarmDto;
+import com.xunmei.iot.enums.AlarmVideoTypeEnum;
 import com.xunmei.iot.mapper.IotAlarmDataMapper;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.vo.alarm.IotAlarmDataVo;
+import com.xunmei.iot.vo.alarmData.AlarmTypeSelectedVO;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 import com.xunmei.iot.vo.alarmData.DeviceTypeCountVo;
 import com.xunmei.iot.vo.alarmData.SensorAlarmCountVo;
@@ -243,4 +247,72 @@ public class IotAlarmDataServiceImpl extends ServiceImpl<IotAlarmDataMapper, Iot
     public void deleteData(Long orgId) {
         baseMapper.delete(new LambdaQueryWrapper<IotAlarmData>().eq(IotAlarmData::getOrgId, orgId));
     }
+
+    @Override
+    public List<AlarmTypeSelectedVO> getDeviceTypeList(String type) {
+        List<AlarmTypeSelectedVO> list = Lists.newArrayList();
+        AlarmTypeSelectedVO bean;
+        String suffix = "告警";
+        List<String> excludeTypes = Lists.newArrayList("415","4186","41861","501","502","503","504","505","506");
+        List<String> mixTypes = Lists.newArrayList(
+                String.valueOf(SensorType.INFRARED_SENSOR.getCode()),
+                String.valueOf(SensorType.SMOKE_SENSOR.getCode()),
+                String.valueOf(SensorType.HUMIDITY_TEMPERATURE_SENSOR.getCode()),
+                String.valueOf(SensorType.WATER_INTRUSION.getCode()),
+                String.valueOf(SensorType.DOOR_MAGNETIC_SENSOR.getCode())
+        );
+        if(StringUtils.isEmpty(type)){
+            List<AlarmTypeSelectedVO> types0=baseMapper.selectAlarmTypeList(excludeTypes,null,type);
+            for(AlarmTypeSelectedVO vo:types0){
+                vo.setLabel(vo.getLabel()+suffix);
+
+                //两种告警分类都包含的告警类型合并
+                boolean isMix =false;
+                for(String mix :mixTypes){
+                    if(mix.equals(vo.getValue())){
+                        isMix =true;
+                        break;
+                    }
+                }
+                if(isMix){
+                    vo.setType("0_2");
+                }else{
+                    vo.setType(vo.getValue().startsWith("4") ? "0" : "2");
+                }
+            }
+            list.addAll(types0);
+
+            List<AlarmTypeSelectedVO> types1 = Lists.newArrayList();
+            for(AlarmVideoTypeEnum enums:AlarmVideoTypeEnum.values()){
+                bean = new AlarmTypeSelectedVO();
+                String value = String.valueOf(enums.getValue());
+                bean.setValue(value);
+                bean.setLabel(enums.getText()+suffix);
+                bean.setType("1");
+                types1.add(bean);
+            }
+            list.addAll(types1);
+        }else if(type.equals("1")){
+            List<AlarmTypeSelectedVO> types1 = Lists.newArrayList();
+            for(AlarmVideoTypeEnum enums:AlarmVideoTypeEnum.values()){
+                bean = new AlarmTypeSelectedVO();
+                String value = String.valueOf(enums.getValue());
+                bean.setValue(value);
+                bean.setLabel(enums.getText()+suffix);
+                bean.setType(type);
+                types1.add(bean);
+            }
+            list.addAll(types1);
+        }else{
+            List<AlarmTypeSelectedVO> types0=baseMapper.selectAlarmTypeList(excludeTypes,mixTypes,type);
+            for(AlarmTypeSelectedVO vo:types0){
+                vo.setLabel(vo.getLabel()+suffix);
+                vo.setType(type);
+            }
+            list.addAll(types0);
+        }
+
+
+        return list;
+    }
 }

+ 10 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/alarmData/AlarmTypeSelectedVO.java

@@ -0,0 +1,10 @@
+package com.xunmei.iot.vo.alarmData;
+
+import lombok.Data;
+
+@Data
+public class AlarmTypeSelectedVO {
+    private String value;
+    private String label;
+    private String type;
+}

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

@@ -201,4 +201,32 @@
           and o.path like concat(#{orgPath}, '%') and d.source_type is not null
         group by d.source_type
     </select>
+
+    <select id="selectAlarmTypeList"  resultType="com.xunmei.iot.vo.alarmData.AlarmTypeSelectedVO">
+        select source_type as value,
+        replace(source_type_des,'传感器','') as label
+        from iot_alarm_system_field
+        where source_type not in
+        <foreach item="name" collection="excludeTypes" separator="," open="(" close=")">
+            #{name}
+        </foreach>
+        <choose>
+            <when test=" category == null or category =='' ">
+                and (source_type like '4%' or source_type like '5%')
+            </when>
+            <when test=" category == '0' ">
+                and source_type like '4%'
+            </when>
+            <when test=" category == '2'">
+                and (source_type like '5%' or source_type in
+                <foreach item="name" collection="mixTypes" separator="," open="(" close=")">
+                    #{name}
+                </foreach>
+                )
+            </when>
+            <otherwise>
+            </otherwise>
+        </choose>
+        group by source_type
+    </select>
 </mapper>