Ver Fonte

报警主机扩展信息同步修改

xujie há 1 ano atrás
pai
commit
a055bcee71

+ 2 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/iot/mapper/IotDeviceInfoExtendMapper.java

@@ -8,4 +8,6 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface IotDeviceInfoExtendMapper extends BaseMapper<IotDeviceInfoExtend> {
     IotDeviceInfoExtend selectByProductDeviceNameAndToken(@Param("token") String token, @Param("deviceTypeCode") String deviceTypeCode, @Param("deviceName") String deviceName);
+
+    void deleteDeviceExtendByTokenAndDeviceType(@Param("token") String token,@Param("deviceType") String deviceType);
 }

+ 2 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/iot/service/IIotDeviceInfoExtendService.java

@@ -35,6 +35,8 @@ public interface IIotDeviceInfoExtendService extends IService<IotDeviceInfoExten
      */
     void deleteDeviceExtendByToken(String token);
 
+    void deleteDeviceExtendByTokenAndDeviceType(String token,String deviceType);
+
     IotDeviceInfoExtend selectByProductDeviceNameAndToken(String token, String deviceTypeCode, String deviceName);
 
 }

+ 6 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/iot/service/impl/IotDeviceInfoExtendServiceImpl.java

@@ -82,6 +82,12 @@ public class IotDeviceInfoExtendServiceImpl extends ServiceImpl<IotDeviceInfoExt
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteDeviceExtendByTokenAndDeviceType(String token, String deviceType) {
+        baseMapper.deleteDeviceExtendByTokenAndDeviceType(token,deviceType);
+    }
+
+    @Override
     public IotDeviceInfoExtend selectByProductDeviceNameAndToken(String token, String deviceTypeCode, String deviceName) {
         return baseMapper.selectByProductDeviceNameAndToken(token,deviceTypeCode,deviceName);
     }

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

@@ -215,8 +215,8 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                 List<IotDvrDisk> updateDiskList = new ArrayList<>();
                 //逻辑删除视频设备
                 iIotDeviceInfoService.deleteDeviceByToken(token);
-                //逻辑删除扩展信息
-                iIotDeviceInfoExtendService.deleteDeviceExtendByToken(token);
+                //逻辑删除Dvs扩展信息
+                iIotDeviceInfoExtendService.deleteDeviceExtendByTokenAndDeviceType(token,DeviceTypeEnum.DVS.getCode());
                 //逻辑删除所有硬盘信息
                 iIotDvrDiskService.deleteByToken(token);
                 /**
@@ -277,7 +277,6 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
                 saveOrUpdateHostBatches(addHostList, updateHostList);
 
-
             } catch (Exception var8) {
                 log.error("同步主机基础信息过程中出现异常", var8);
             }
@@ -317,6 +316,12 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                 //逻辑删除子系统和防区
                 iotAlarmSubsystemService.deleteByIotToken(token);
                 iotAlarmDefenceAreaService.deleteByIotToken(token);
+                iIotDeviceInfoExtendService.deleteDeviceExtendByTokenAndDeviceType(token,DeviceTypeEnum.ALARM_HOST.getCode());
+
+                //添加报警主机扩展信息
+                List<IotDeviceInfoExtend> addExtendList = new ArrayList();
+                //修改报警主机扩展信息
+                List<IotDeviceInfoExtend> updateExtendList = new ArrayList();
 
                 //添加子系统集合
                 List<IotAlarmSubsystem> addSubSystemList = new ArrayList();
@@ -328,10 +333,11 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                 //更新子系统集合
                 List<IotAlarmDefenceArea> updateDefenceAreaList = new ArrayList();
 
+                processAlarmHostExtend(alarmHostBaseInfo.getCommunicationParameters(),serverInfo, token, addExtendList, updateExtendList);
                 processSubSystem(alarmHostBaseInfo.getSubsystems(), serverInfo, token, addSubSystemList, updateSubSystemList);
                 processDefenceArea(alarmHostBaseInfo.getInputs(), serverInfo, token, addDefenceAreaList, updateDefenceAreaList);
 
-                saveOrUpdateSubSystemAndDefenceAreaBatches(addSubSystemList, updateSubSystemList, addDefenceAreaList, updateDefenceAreaList);
+                saveOrUpdateBatches(addSubSystemList, updateSubSystemList, addDefenceAreaList, updateDefenceAreaList, addExtendList, updateExtendList);
 
             } catch (Exception var8) {
                 log.error("同步报警主机子系统和防区信息过程中出现异常", var8);
@@ -739,6 +745,54 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         }
     }
 
+    private void processAlarmHostExtend(List<CommunicationParameter> communicationParameters, IotServerInfo serverInfo, String token, List<IotDeviceInfoExtend> addExtendList, List<IotDeviceInfoExtend> updateExtendList) {
+        if (ObjectUtil.isEmpty(communicationParameters)) {
+            log.error("同步报警主机子系统信息,获取报警主机扩展信息为空");
+        } else {
+            for (CommunicationParameter parameter : communicationParameters) {
+                IotDeviceInfo info = iIotDeviceInfoService.selectByTypeAndCode(token, DeviceTypeEnum.ALARM_HOST.getCode(), parameter.getProductName(), parameter.getDeviceName());
+                if (info == null){
+                    continue;
+                }
+                IotDeviceInfoExtend extend = iIotDeviceInfoExtendService.selectByProductDeviceNameAndToken(token, DeviceTypeEnum.ALARM_HOST.getCode(), parameter.getDeviceName());
+
+                if (extend == null) {
+                    extend = createAlarmHostInfoExtend(parameter, info.getId(),serverInfo);
+                    addExtendList.add(extend);
+                } else {
+                    dealAlarmHostInfoExtend(parameter, extend);
+                    updateExtendList.add(extend);
+                }
+            }
+        }
+    }
+
+    private IotDeviceInfoExtend createAlarmHostInfoExtend(CommunicationParameter parameter, Long deviceId,IotServerInfo serverInfo) {
+        IotDeviceInfoExtend extend = new IotDeviceInfoExtend();
+        extend.setDeviceId(deviceId);
+        extend.setPort(parameter.getDevicePort());
+        extend.setPassword(parameter.getDevicePassword());
+        extend.setUserName(parameter.getDeviceAccount());
+        extend.setNetAddress(parameter.getDeviceAddress());
+        extend.setIotToken(serverInfo.getIotCode());
+        extend.setDeleted(0);
+        extend.setCreateBy("system");
+        extend.setCreateTime(new Date());
+        return extend;
+    }
+
+    private void dealAlarmHostInfoExtend(CommunicationParameter parameter, IotDeviceInfoExtend extend) {
+        extend.setPort(parameter.getDevicePort());
+        extend.setPassword(parameter.getDevicePassword());
+        extend.setUserName(parameter.getDeviceAccount());
+        extend.setNetAddress(parameter.getDeviceAddress());
+        extend.setDeleted(0);
+        extend.setUpdateBy("system");
+        extend.setUpdateTime(new Date());
+    }
+
+
+
     /**
      * 处理报警主机子系统数据
      *
@@ -781,6 +835,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         info.setInBook(0);
         info.setIotToken(serverInfo.getIotCode());
         info.setUpdateTime(LocalDateTime.now());
+        info.setCreateBy("system");
         info.setCreateTime(LocalDateTime.now());
         //设备来源:0:设备登记;1:iot推送
         info.setSource(1);
@@ -842,6 +897,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         info.setOrgName(serverInfo.getOrgName());
         info.setOrgPath(serverInfo.getOrgPath());
         info.setUpdateTime(LocalDateTime.now());
+        info.setCreateBy("system");
         info.setCreateTime(LocalDateTime.now());
         info.setId(id);
         return info;
@@ -859,7 +915,7 @@ 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) {
+    private void saveOrUpdateBatches(List<IotAlarmSubsystem> addSubSystemInfos, List<IotAlarmSubsystem> updateSubSystemInfos, List<IotAlarmDefenceArea> addDefenceAreaInfos, List<IotAlarmDefenceArea> updateDefenceAreaInfos,List<IotDeviceInfoExtend> addExtendList, List<IotDeviceInfoExtend> updateExtendList) {
         if (!addSubSystemInfos.isEmpty()) {
             iotAlarmSubsystemService.saveSubSystemInfos(addSubSystemInfos);
         }
@@ -872,6 +928,12 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         if (!updateDefenceAreaInfos.isEmpty()) {
             iotAlarmDefenceAreaService.updateDefenceAreaInfos(updateDefenceAreaInfos);
         }
+        if (!addExtendList.isEmpty()) {
+            iIotDeviceInfoExtendService.saveIotDeviceExtends(addExtendList);
+        }
+        if (!updateExtendList.isEmpty()) {
+            iIotDeviceInfoExtendService.updateIotDeviceExtends(updateExtendList);
+        }
     }
 
 

+ 14 - 1
soc-modules/soc-modules-mediator/src/main/resources/mapper/IotDeviceInfoExtendmapper.xml

@@ -2,9 +2,22 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xunmei.mediator.iot.mapper.IotDeviceInfoExtendMapper">
 
-
     <select id="selectByProductDeviceNameAndToken" resultType="com.xunmei.system.api.domain.iot.IotDeviceInfoExtend">
         select e.* from iot_device_info i inner join iot_device_info_extend e on i.id=e.device_id
         where i.iot_token=#{token} and i.device_code=#{deviceName} and i.device_type=#{deviceTypeCode} limit 1
     </select>
+
+    <update id="deleteDeviceExtendByTokenAndDeviceType">
+        UPDATE iot_device_info_extend e
+        SET e.is_delete = 1
+        WHERE
+            e.device_id IN (
+                SELECT
+                    id
+                FROM
+                    iot_device_info
+                WHERE
+                    iot_token = #{token} and device_type = #{deviceType}
+            )
+    </update>
 </mapper>