Browse Source

报警主机子系统及防区基础信息入库

xujie 1 year ago
parent
commit
dd57cbf27e

+ 5 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/protection/service/IotAlarmDefenceAreaService.java

@@ -2,6 +2,7 @@ package com.xunmei.mediator.api.protection.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystem;
 import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
 import com.xunmei.system.api.dto.protection.SensorDataDto;
 
@@ -28,4 +29,8 @@ public interface IotAlarmDefenceAreaService extends IService<IotAlarmDefenceArea
     void deleteByIotToken(String token);
 
     IotAlarmDefenceArea getBySubSystemCodeAndDeviceName(String iotToken,String deviceName,Integer subSystemId,Integer inputIndex);
+
+    void saveDefenceAreaInfos(List<IotAlarmDefenceArea> list);
+
+    void updateDefenceAreaInfos(List<IotAlarmDefenceArea> list);
 }

+ 6 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/protection/service/IotAlarmSubsystemService.java

@@ -8,6 +8,8 @@ import com.xunmei.system.api.dto.protection.DefenceAreaDto;
 import com.xunmei.system.api.dto.protection.ProtectionEditDto;
 import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
 
+import java.util.List;
+
 /**
  * <p>
  * 服务类
@@ -28,4 +30,8 @@ public interface IotAlarmSubsystemService extends IService<IotAlarmSubsystem> {
     void deleteByIotToken(String token);
 
     IotAlarmSubsystem getByDeviceNameAndSubSystemId(String iotToken,String deviceName,Integer subSystemId);
+
+    void saveSubSystemInfos(List<IotAlarmSubsystem> list);
+
+    void updateSubSystemInfos(List<IotAlarmSubsystem> list);
 }

+ 28 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/protection/service/impl/IotAlarmDefenceAreaServiceImpl.java

@@ -270,10 +270,37 @@ public class IotAlarmDefenceAreaServiceImpl extends ServiceImpl<IotAlarmDefenceA
         if (info == null){
             IotAlarmDefenceArea defenceArea = iotAlarmDefenceAreaMapper.getBySubSystemCodeAndDeviceName(iotToken, deviceName, String.valueOf(subSystemId),inputIndex);
             if (defenceArea != null){
-                RedisUtils.setCacheObject(key, defenceArea, Duration.ofMillis(1000 * 60 * 60));
+                updateDefenceAreaCache(defenceArea);
                 return defenceArea;
             }
         }
         return info;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveDefenceAreaInfos(List<IotAlarmDefenceArea> list) {
+        if (!list.isEmpty()){
+            saveBatch(list);
+            for (IotAlarmDefenceArea data : list) {
+                updateDefenceAreaCache(data);
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateDefenceAreaInfos(List<IotAlarmDefenceArea> list) {
+        if (!list.isEmpty()){
+            updateBatchById(list);
+            for (IotAlarmDefenceArea data : list) {
+                updateDefenceAreaCache(data);
+            }
+        }
+    }
+
+    private void updateDefenceAreaCache(IotAlarmDefenceArea defenceArea){
+        String key = DeviceCacheEnum.IOT_DEFENCE_AREA.getCode() + defenceArea.getIotToken() + "_" + defenceArea.getAlarmHostCode() + "_" + defenceArea.getSubSystemCode() + "_" + defenceArea.getDefenceAreaIndex();
+        RedisUtils.setCacheObject(key, defenceArea, Duration.ofMillis(1000 * 60 * 60));
+    }
 }

+ 28 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/protection/service/impl/IotAlarmSubSystemServiceImpl.java

@@ -262,13 +262,40 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         if (info == null){
             IotAlarmSubsystem subsystem = iotAlarmSubsystemMapper.getByDeviceNameAndSubSystemId(iotToken, deviceName, String.valueOf(subSystemId));
             if (subsystem != null){
-                RedisUtils.setCacheObject(key, subsystem, Duration.ofMillis(1000 * 60 * 60));
+                updateSubSystemCache(subsystem);
                 return subsystem;
             }
         }
         return info;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveSubSystemInfos(List<IotAlarmSubsystem> list) {
+        if (!list.isEmpty()){
+            saveBatch(list);
+            for (IotAlarmSubsystem data : list) {
+                updateSubSystemCache(data);
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateSubSystemInfos(List<IotAlarmSubsystem> list) {
+        if (!list.isEmpty()){
+            updateBatchById(list);
+            for (IotAlarmSubsystem data : list) {
+                updateSubSystemCache(data);
+            }
+        }
+    }
+
+    private void updateSubSystemCache(IotAlarmSubsystem subsystem){
+        String key = DeviceCacheEnum.IOT_SUB_SYSTEM.getCode() + subsystem.getIotToken() + "_" + subsystem.getAlarmHostCode() + "_" + subsystem.getCode();
+        RedisUtils.setCacheObject(key, subsystem, Duration.ofMillis(1000 * 60 * 60));
+    }
+
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
     public void saveAndUpdate(List<DefenceAreaDto> defenceareaList, String msgId) {
         //查询报警主机主机设备列表

+ 20 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/service/impl/WebsocketServiceImpl.java

@@ -286,9 +286,10 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                 processSubSystem(alarmHostBaseInfo.getSubsystems(),serverInfo,token,addSubSystemList,updateSubSystemList);
                 processDefenceArea(alarmHostBaseInfo.getInputs(),serverInfo,token,addDefenceAreaList,updateDefenceAreaList);
 
+                saveOrUpdateSubSystemAndDefenceAreaBatches(addSubSystemList,updateSubSystemList,addDefenceAreaList,updateDefenceAreaList);
 
             } catch (Exception var8) {
-                log.error("同步报警主机基础信息过程中出现异常", var8);
+                log.error("同步报警主机子系统和防区信息过程中出现异常", var8);
             }
         });
     }
@@ -624,7 +625,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         info.setDeviceProduct(alarmHostInfos.getProductName());
         info.setDeviceModel(alarmHostInfos.getModel());
         info.setDeviceType(DeviceTypeEnum.ALARM_HOST.getCode());
-        //info.setNetStatus("0");
+        info.setNetStatus("0");
         info.setIotToken(serverInfo.getIotCode());
         info.setDeviceName(alarmHostInfos.getDisplayName());
         info.setOrgName(serverInfo.getOrgName());
@@ -776,6 +777,23 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         info.setUpdateTime(LocalDateTime.now());
     }
 
+    private void saveOrUpdateSubSystemAndDefenceAreaBatches(List<IotAlarmSubsystem> addSubSystemInfos,List<IotAlarmSubsystem> updateSubSystemInfos,List<IotAlarmDefenceArea> addDefenceAreaInfos,List<IotAlarmDefenceArea> updateDefenceAreaInfos){
+        if (!addSubSystemInfos.isEmpty()) {
+            iotAlarmSubsystemService.saveSubSystemInfos(addSubSystemInfos);
+        }
+        if (!updateSubSystemInfos.isEmpty()) {
+            iotAlarmSubsystemService.updateSubSystemInfos(updateSubSystemInfos);
+        }
+        if (!addDefenceAreaInfos.isEmpty()) {
+            iotAlarmDefenceAreaService.saveDefenceAreaInfos(addDefenceAreaInfos);
+        }
+        if (!updateDefenceAreaInfos.isEmpty()) {
+            iotAlarmDefenceAreaService.updateDefenceAreaInfos(updateDefenceAreaInfos);
+        }
+    }
+
+
+
 
     @Override
     public ProductEnums product() {