Explorar el Código

DVS基础信息同步修改

jingyuanchao hace 1 año
padre
commit
38125de82d

+ 2 - 3
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/iot/service/IIotDeviceInfoService.java

@@ -2,7 +2,6 @@ package com.xunmei.mediator.iot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
-import com.xunmei.system.api.domain.iot.IotDeviceInfoExtend;
 
 import java.util.List;
 
@@ -60,13 +59,13 @@ public interface IIotDeviceInfoService extends IService<IotDeviceInfo> {
      * 保存报警主机设备,并更新缓存
      * @param data
      */
-    void saveAlarmHostDevice(List<IotDeviceInfo> data);
+    void saveHostDevice(List<IotDeviceInfo> data);
 
     /**
      * 更新报警主机设备,并更新缓存
      * @param data
      */
-    void updateAlarmHostDevice(List<IotDeviceInfo> data);
+    void updateHostDevice(List<IotDeviceInfo> data);
 
     void deleteAlarmHostDeviceByToken(String token);
 

+ 17 - 29
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/iot/service/impl/IotDeviceInfoServiceImpl.java

@@ -1,27 +1,22 @@
 package com.xunmei.mediator.iot.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.mediator.iot.mapper.IotDeviceInfoMapper;
 import com.xunmei.mediator.iot.service.IIotDeviceInfoService;
 import com.xunmei.mediator.websocket.enums.DeviceCacheEnum;
 import com.xunmei.mediator.websocket.enums.DeviceTypeEnum;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
-
-import java.time.Duration;
-import java.util.List;
-
 import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.Duration;
+import java.util.List;
+
 @Service
 @Slf4j
 public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, IotDeviceInfo> implements IIotDeviceInfoService {
@@ -38,12 +33,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         /**
          * RedisUtils,加入缓存机制
          */
-        String key;
-        if (ObjectUtil.equal(DeviceTypeEnum.ALARM_HOST.getCode(),deviceType)){
-            key = DeviceCacheEnum.IOT_AlARM_HOST_INFO.getCode() + token + "_" + deviceType + "_" + deviceCode;
-        }else {
-            key = DeviceCacheEnum.IOT_DVS_INFO.getCode() + token + "_" + deviceType + "_" + deviceCode;
-        }
+        String key = DeviceCacheEnum.IOT_BASE_DEVICE_INFO.getCode() + token + "_" + deviceType + "_" + deviceCode;
         IotDeviceInfo info = RedisUtils.getCacheObject(key);
         if (info == null) {
             QueryWrapper<IotDeviceInfo> qw = new QueryWrapper();
@@ -91,7 +81,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         if (ObjectUtil.isNotEmpty(data)) {
             updateBatchById(data);
             for (IotDeviceInfo info : data) {
-                updateCache(info,1);
+                updateCache(info, 1);
             }
         }
     }
@@ -102,7 +92,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         if (ObjectUtil.isNotEmpty(channels)) {
             updateBatchById(channels);
             for (IotDeviceInfo info : channels) {
-                updateCache(info,2);
+                updateCache(info, 2);
             }
         }
     }
@@ -110,10 +100,10 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveDvsDevice(List<IotDeviceInfo> data) {
-        if(ObjectUtil.isNotEmpty(data)){
+        if (ObjectUtil.isNotEmpty(data)) {
             saveBatch(data);
             for (IotDeviceInfo info : data) {
-                updateCache(info,1);
+                updateCache(info, 1);
             }
         }
     }
@@ -121,10 +111,10 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveChannelDevice(List<IotDeviceInfo> data) {
-        if(ObjectUtil.isNotEmpty(data)){
+        if (ObjectUtil.isNotEmpty(data)) {
             saveBatch(data);
             for (IotDeviceInfo info : data) {
-                updateCache(info,2);
+                updateCache(info, 2);
             }
         }
     }
@@ -132,20 +122,18 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
 
     /**
      * 更新缓存
+     *
      * @param info
      * @param type
      */
     private void updateCache(IotDeviceInfo info, int type) {
         String key = "";
         if (type == 1) {
-            key = DeviceCacheEnum.IOT_DVS_INFO.getCode() + info.getIotToken() + "_" + info.getDeviceType() + "_" + info.getDeviceCode();
+            key = DeviceCacheEnum.IOT_BASE_DEVICE_INFO.getCode() + info.getIotToken() + "_" + info.getDeviceType() + "_" + info.getDeviceCode();
         }
         if (type == 2) {
             key = DeviceCacheEnum.IOT_CHANNEL_INFO.getCode() + info.getIotToken() + "_" + info.getHostCode() + "_" + info.getDeviceCode();
         }
-        if (type == 3) {
-            key = DeviceCacheEnum.IOT_AlARM_HOST_INFO.getCode() + info.getIotToken() + "_" + info.getDeviceType() + "_" + info.getDeviceCode();
-        }
         RedisUtils.setCacheObject(key, info, Duration.ofMillis(1000 * 60 * 60));
     }
 
@@ -162,22 +150,22 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveAlarmHostDevice(List<IotDeviceInfo> data) {
-        if(ObjectUtil.isNotEmpty(data)){
+    public void saveHostDevice(List<IotDeviceInfo> data) {
+        if (ObjectUtil.isNotEmpty(data)) {
             saveBatch(data);
             for (IotDeviceInfo info : data) {
-                updateCache(info,3);
+                updateCache(info, 1);
             }
         }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateAlarmHostDevice(List<IotDeviceInfo> data) {
+    public void updateHostDevice(List<IotDeviceInfo> data) {
         if (ObjectUtil.isNotEmpty(data)) {
             updateBatchById(data);
             for (IotDeviceInfo info : data) {
-                updateCache(info,3);
+                updateCache(info, 1);
             }
         }
     }

+ 4 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/constant/WebSocketConstants.java

@@ -119,4 +119,8 @@ public interface WebSocketConstants {
     String STATUS_CODE="statusCode";
 
     String STATUS_DESCRIPTION="statusDescription";
+
+    String DVS="DVS";
+
+    String ALARM_HOST="AlarmHost";
 }

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/dto/DeviceBaseInfo.java

@@ -12,7 +12,7 @@ import java.io.Serializable;
 public class DeviceBaseInfo implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    private String[] categories;
+    private String categories;
 
     private String productName;
 

+ 1 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/enums/DeviceCacheEnum.java

@@ -1,9 +1,8 @@
 package com.xunmei.mediator.websocket.enums;
 
 public enum DeviceCacheEnum {
-    IOT_DVS_INFO("device:iot_dvs_info_","dvs"),
+    IOT_BASE_DEVICE_INFO("device:iot_dvs_info_","dvs"),
     IOT_CHANNEL_INFO("device:iot_channel_info_","通道"),
-    IOT_AlARM_HOST_INFO("device:iot_alarm_host_info_","报警主机"),
     IOT_SUB_SYSTEM("device:iot_sub_system_info_","报警主机子系统"),
     IOT_DEFENCE_AREA("device:iot_defence_area_info_","报警主机防区(传感器)"),
     ;

+ 4 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/service/WebsocketService.java

@@ -3,7 +3,6 @@ package com.xunmei.mediator.websocket.service;
 
 import com.xunmei.mediator.websocket.dto.DeviceBaseInfo;
 import com.xunmei.mediator.websocket.dto.alarmHost.AlarmHostBaseInfo;
-import com.xunmei.mediator.websocket.dto.alarmHost.AlarmHostInfo;
 import com.xunmei.mediator.websocket.dto.dvs.DvsBaseInfo;
 
 import java.util.List;
@@ -16,10 +15,13 @@ public interface WebsocketService {
 
     void dealDvsBaseInfo(DvsBaseInfo info, String token) throws Exception;
 
-    void dealAlarmHostInfo(List<AlarmHostInfo> info, String token) throws Exception;
+    void dealBaseDeviceInfo(List<DeviceBaseInfo> info, String token) throws Exception;
 
     void invokeBaseDeviceInfoForSchedule();
 
 
     void dealSubSystemAndInput(AlarmHostBaseInfo alarmHostBaseInfo, String token) throws Exception;
+
+
+
 }

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

@@ -7,6 +7,7 @@ import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
 import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystem;
 import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
 import com.xunmei.common.core.domain.iot.domain.IotServerInfo;
+import com.xunmei.common.core.utils.JacksonUtils;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.mediator.api.protection.service.IotAlarmDefenceAreaService;
@@ -18,8 +19,8 @@ import com.xunmei.mediator.iot.service.IIotDeviceInfoService;
 import com.xunmei.mediator.websocket.constant.WebSocketConstants;
 import com.xunmei.mediator.websocket.dto.DeviceBaseInfo;
 import com.xunmei.mediator.websocket.dto.WebsocketExecuteReq;
+import com.xunmei.mediator.websocket.dto.WebsocketResult;
 import com.xunmei.mediator.websocket.dto.alarmHost.AlarmHostBaseInfo;
-import com.xunmei.mediator.websocket.dto.alarmHost.AlarmHostInfo;
 import com.xunmei.mediator.websocket.dto.alarmHost.AlarmInputInfo;
 import com.xunmei.mediator.websocket.dto.alarmHost.SubSystemInfo;
 import com.xunmei.mediator.websocket.dto.dvs.ChannelInfo;
@@ -28,15 +29,13 @@ import com.xunmei.mediator.websocket.dto.dvs.DvsBaseInfo;
 import com.xunmei.mediator.websocket.dto.dvs.DvsInfo;
 import com.xunmei.mediator.websocket.enums.DeviceTypeEnum;
 import com.xunmei.mediator.websocket.enums.ProductEnums;
+import com.xunmei.mediator.websocket.holder.WebSocketSessionHolder;
 import com.xunmei.mediator.websocket.redis.WebsocketPublisher;
 import com.xunmei.mediator.websocket.service.RouterService;
 import com.xunmei.mediator.websocket.service.WebsocketService;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
 import com.xunmei.system.api.domain.iot.IotDeviceInfoExtend;
 import com.xunmei.system.api.domain.websocket.RedisWebsocketMsg;
-import java.time.LocalDateTime;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
 import org.redisson.api.RKeys;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
@@ -71,7 +70,6 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
     private IotAlarmSubsystemService iotAlarmSubsystemService;
 
 
-
     private static final String LOCK_DVS_ACCPET_KEY_PREFIX = "websocket:lock:base_info_dvs_";
 
     private static final String LOCK_ALARM_HOST_ACCPET_KEY_PREFIX = "websocket:lock:base_info_alarm_host_";
@@ -82,6 +80,18 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
     @Override
     public void invokeBaseDeviceInfoForSchedule() {
 
+        WebsocketResult websocketResult = new WebsocketResult();
+        websocketResult.setId(UUID.randomUUID().toString());
+        websocketResult.setTimestamp(new Date());
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put(WebSocketConstants.SERVICE, WebSocketConstants.GET_DEVICE_BASE_INFOS);
+        JSONObject object = new JSONObject();
+        object.put("categories", Arrays.asList(WebSocketConstants.DVS, WebSocketConstants.ALARM_HOST));
+        hashMap.put(WebSocketConstants.ARGS, object);
+        websocketResult.setPayload(hashMap);
+        WebSocketSessionHolder.sendAll(JacksonUtils.toJSONString(websocketResult));
+
+
     }
 
     /**
@@ -190,12 +200,11 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                  */
                 processDvsDevices(dvsBaseInfo.getDvsInfos(), serverInfo, token, addDvsList, updateDvsList, addListExtend, updateListExtend);
                 processChannelDevices(dvsBaseInfo.getChannelInfos(), serverInfo, token, addChnnelList, updateChnnelList);
-                processDiskDevices(dvsBaseInfo.getDiskInfos(), serverInfo, token,addDiskList,updateDiskList);
-
+                processDiskDevices(dvsBaseInfo.getDiskInfos(), serverInfo, token, addDiskList, updateDiskList);
 
 
                 // 批量保存和更新设备信息
-                saveOrUpdateDeviceBatches(addDvsList, updateDvsList,addChnnelList,updateChnnelList, addListExtend, updateListExtend, addDiskList,updateDiskList);
+                saveOrUpdateDeviceBatches(addDvsList, updateDvsList, addChnnelList, updateChnnelList, addListExtend, updateListExtend, addDiskList, updateDiskList);
 
 
             } catch (Exception var8) {
@@ -208,37 +217,37 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void dealAlarmHostInfo(List<AlarmHostInfo> alarmHostInfos, String token) throws Exception {
+    public void dealBaseDeviceInfo(List<DeviceBaseInfo> alarmHostInfos, String token) throws Exception {
         //添加分布式锁
         String lockKey = LOCK_ALARM_HOST_ACCPET_KEY_PREFIX + token;
         lockAndExecute(lockKey, () -> {
             if (StringUtils.isEmpty(token) || alarmHostInfos.isEmpty()) {
-                log.error("同步报警主机基础信息失败。原因:token或alarmHostInfos为空");
+                log.error("同步主机基础信息失败。原因:token或alarmHostInfos为空");
                 return;
             }
             try {
                 if (StringUtils.isEmpty(token)) {
-                    log.error("同步报警主机基础信息,token为null,同步数据失败!");
+                    log.error("同步主机基础信息,token为null,同步数据失败!");
                     return;
                 }
 
                 IotServerInfo serverInfo = iotServerInfoService.selectByToken(token);
                 if (ObjectUtil.isEmpty(serverInfo)) {
-                    log.error("同步报警主机基础信息,token:{},获取机构信息未空,结束同步!", token);
+                    log.error("同步主机基础信息,token:{},获取机构信息未空,结束同步!", token);
                     return;
                 }
 
-                //逻辑删除报警主机
-                iIotDeviceInfoService.deleteAlarmHostDeviceByToken(token);
+                //逻辑删除主机
+                iIotDeviceInfoService.deleteAlarmHostAndDvsByToken(token);
 
                 //添加报警主机集合
-                List<IotDeviceInfo> addAlarmHostList = new ArrayList();
+                List<IotDeviceInfo> addHostList = new ArrayList();
                 //更新报警主机集合
-                List<IotDeviceInfo> updateAlarmHostList = new ArrayList();
+                List<IotDeviceInfo> updateHostList = new ArrayList();
 
-                processAlarmHostDevices(alarmHostInfos,serverInfo,token,addAlarmHostList,updateAlarmHostList,null,null);
+                processHostDevices(alarmHostInfos, serverInfo, token, addHostList, updateHostList);
 
-                saveOrUpdateAlarmHostBatches(addAlarmHostList,updateAlarmHostList,null,null);
+                saveOrUpdateHostBatches(addHostList, updateHostList);
 
 
             } catch (Exception var8) {
@@ -283,10 +292,10 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                 //更新子系统集合
                 List<IotAlarmDefenceArea> updateDefenceAreaList = new ArrayList();
 
-                processSubSystem(alarmHostBaseInfo.getSubsystems(),serverInfo,token,addSubSystemList,updateSubSystemList);
-                processDefenceArea(alarmHostBaseInfo.getInputs(),serverInfo,token,addDefenceAreaList,updateDefenceAreaList);
+                processSubSystem(alarmHostBaseInfo.getSubsystems(), serverInfo, token, addSubSystemList, updateSubSystemList);
+                processDefenceArea(alarmHostBaseInfo.getInputs(), serverInfo, token, addDefenceAreaList, updateDefenceAreaList);
 
-                saveOrUpdateSubSystemAndDefenceAreaBatches(addSubSystemList,updateSubSystemList,addDefenceAreaList,updateDefenceAreaList);
+                saveOrUpdateSubSystemAndDefenceAreaBatches(addSubSystemList, updateSubSystemList, addDefenceAreaList, updateDefenceAreaList);
 
             } catch (Exception var8) {
                 log.error("同步报警主机子系统和防区信息过程中出现异常", var8);
@@ -296,6 +305,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     /**
      * 批量保存和更新设备信息
+     *
      * @param addList
      * @param updateList
      * @param addChnnelList
@@ -303,8 +313,8 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
      * @param addListExtend
      * @param updateListExtend
      */
-    private void saveOrUpdateDeviceBatches(List<IotDeviceInfo> addList, List<IotDeviceInfo> updateList,List<IotDeviceInfo> addChnnelList, List<IotDeviceInfo> updateChnnelList,
-                                           List<IotDeviceInfoExtend> addListExtend, List<IotDeviceInfoExtend> updateListExtend,List<IotDvrDisk> addDiskList,List<IotDvrDisk> updateDiskList) {
+    private void saveOrUpdateDeviceBatches(List<IotDeviceInfo> addList, List<IotDeviceInfo> updateList, List<IotDeviceInfo> addChnnelList, List<IotDeviceInfo> updateChnnelList,
+                                           List<IotDeviceInfoExtend> addListExtend, List<IotDeviceInfoExtend> updateListExtend, List<IotDvrDisk> addDiskList, List<IotDvrDisk> updateDiskList) {
         if (!addList.isEmpty()) {
             iIotDeviceInfoService.saveDvsDevice(addList);
         }
@@ -312,11 +322,11 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
             iIotDeviceInfoService.updateDvsDevice(updateList);
         }
 
-        if(!addChnnelList.isEmpty()){
+        if (!addChnnelList.isEmpty()) {
             iIotDeviceInfoService.saveChannelDevice(addChnnelList);
         }
 
-        if(!updateChnnelList.isEmpty()){
+        if (!updateChnnelList.isEmpty()) {
             iIotDeviceInfoService.updateChannelDevice(updateChnnelList);
         }
 
@@ -329,11 +339,11 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
             iIotDeviceInfoExtendService.updateIotDeviceExtends(updateListExtend);
         }
 
-        if(!addDiskList.isEmpty()){
+        if (!addDiskList.isEmpty()) {
             iIotDvrDiskService.saveBatchDisks(addDiskList);
         }
 
-        if(!updateDiskList.isEmpty()){
+        if (!updateDiskList.isEmpty()) {
             iIotDvrDiskService.updateBatchDisks(updateDiskList);
         }
     }
@@ -358,9 +368,9 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                 if (info == null) {
                     info = createIotDeviceInfo(dvsInfo, serverInfo);
                     addList.add(info);
-                    addListExtend.add(createIotDeviceInfoExtend(dvsInfo, info.getId(),token));
+                    addListExtend.add(createIotDeviceInfoExtend(dvsInfo, info.getId(), token));
                 } else {
-                    dealDvsInfo(dvsInfo, info,serverInfo);
+                    dealDvsInfo(dvsInfo, info, serverInfo);
                     updateList.add(info);
                     IotDeviceInfoExtend extend = iIotDeviceInfoExtendService.selectByDeviceId(info.getId());
                     dealDvsExtend(dvsInfo, extend);
@@ -370,7 +380,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         }
     }
 
-    private void dealDvsExtend(DvsInfo dvsInfo, IotDeviceInfoExtend extend){
+    private void dealDvsExtend(DvsInfo dvsInfo, IotDeviceInfoExtend extend) {
         extend.setDeleted(0);
         extend.setPort(dvsInfo.getPort());
         extend.setPassword(dvsInfo.getPassword());
@@ -382,6 +392,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     /**
      * 更新数据
+     *
      * @param dvsInfo
      * @param info
      */
@@ -398,11 +409,12 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     /**
      * 构建扩展信息数据
+     *
      * @param dvsInfo
      * @param deviceId
      * @return
      */
-    private IotDeviceInfoExtend createIotDeviceInfoExtend(DvsInfo dvsInfo,Long deviceId,String token) {
+    private IotDeviceInfoExtend createIotDeviceInfoExtend(DvsInfo dvsInfo, Long deviceId, String token) {
         IotDeviceInfoExtend extend = new IotDeviceInfoExtend();
         extend.setDeviceId(deviceId);
         extend.setPort(dvsInfo.getPort());
@@ -417,13 +429,15 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         extend.setUpdateTime(new Date());
         return extend;
     }
+
     /**
      * 构造设备信息
+     *
      * @param dvsInfo
      * @param serverInfo
      * @return
      */
-    private IotDeviceInfo createIotDeviceInfo(DvsInfo dvsInfo, IotServerInfo serverInfo){
+    private IotDeviceInfo createIotDeviceInfo(DvsInfo dvsInfo, IotServerInfo serverInfo) {
         IotDeviceInfo info = new IotDeviceInfo();
         long id = IdWorker.getId(info);
         info.setDeleted(0);
@@ -447,6 +461,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     /**
      * 处理通道类设备
+     *
      * @param channelInfos
      * @param serverInfo
      * @param token
@@ -463,7 +478,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                     info = createChannelInfo(channelInfo, serverInfo);
                     addList.add(info);
                 } else {
-                    dealChannelDevice(channelInfo, info,serverInfo);
+                    dealChannelDevice(channelInfo, info, serverInfo);
                     updateList.add(info);
                 }
             }
@@ -472,10 +487,11 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     /**
      * 处理通道类设备更新
+     *
      * @param channelInfo
      * @param info
      */
-    private void dealChannelDevice(ChannelInfo channelInfo, IotDeviceInfo info, IotServerInfo serverInfo){
+    private void dealChannelDevice(ChannelInfo channelInfo, IotDeviceInfo info, IotServerInfo serverInfo) {
         info.setDeleted(0);
         info.setDeviceCode(channelInfo.getChannelIndex());
         info.setDeviceName(channelInfo.getChannelName());
@@ -490,6 +506,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     /**
      * 处理通道类设备新增
+     *
      * @param channelInfo
      * @param serverInfo
      * @return
@@ -514,7 +531,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         return info;
     }
 
-    private void processDiskDevices(List<DiskInfo> diskInfos, IotServerInfo serverInfo, String token,List<IotDvrDisk> addDiskList,List<IotDvrDisk> updateDiskList) {
+    private void processDiskDevices(List<DiskInfo> diskInfos, IotServerInfo serverInfo, String token, List<IotDvrDisk> addDiskList, List<IotDvrDisk> updateDiskList) {
         if (ObjectUtil.isEmpty(diskInfos)) {
             log.error("同步视频类基础信息,获取硬盘信息为空");
         } else {
@@ -527,17 +544,17 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                 diskInfo.setFreeMb(convertToMB(diskInfo.getFreeBytes()));
                 IotDvrDisk info = iIotDvrDiskService.selectByTokenAndDiskIndex(token, diskInfo.getDeviceName(), diskInfo.getDiskSerialNum());
                 if (info == null) {
-                    info = createDiskInfo(diskInfo,serverInfo);
+                    info = createDiskInfo(diskInfo, serverInfo);
                     addDiskList.add(info);
                 } else {
-                    dealDiskDevice(diskInfo, info,serverInfo);
+                    dealDiskDevice(diskInfo, info, serverInfo);
                     updateDiskList.add(info);
                 }
             }
         }
     }
 
-    private void dealDiskDevice(DiskInfo diskInfo,IotDvrDisk info, IotServerInfo serverInfo) {
+    private void dealDiskDevice(DiskInfo diskInfo, IotDvrDisk info, IotServerInfo serverInfo) {
         info.setDeleted(0);
         info.setHostCode(diskInfo.getDeviceName());
         info.setDiskIndex(diskInfo.getDiskSerialNum());
@@ -553,6 +570,7 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     /**
      * 构建磁盘类数据
+     *
      * @param diskInfo
      * @param serverInfo
      * @return
@@ -582,7 +600,6 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
     }
 
 
-
     /**
      * 处理报警主机数据
      *
@@ -591,20 +608,18 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
      * @param token
      * @param addList
      * @param updateList
-     * @param addListExtend
-     * @param updateListExtend
      */
-    private void processAlarmHostDevices(List<AlarmHostInfo> alarmHostInfos, IotServerInfo serverInfo, String token, List<IotDeviceInfo> addList, List<IotDeviceInfo> updateList, List<IotDeviceInfoExtend> addListExtend, List<IotDeviceInfoExtend> updateListExtend) {
+    private void processHostDevices(List<DeviceBaseInfo> alarmHostInfos, IotServerInfo serverInfo, String token, List<IotDeviceInfo> addList, List<IotDeviceInfo> updateList) {
         if (ObjectUtil.isEmpty(alarmHostInfos)) {
-            log.error("同步报警主机基础信息,获取报警主机信息为空");
+            log.error("同步主机基础信息,获取主机信息为空");
         } else {
-            for (AlarmHostInfo alarmHostInfo : alarmHostInfos) {
-                IotDeviceInfo info = iIotDeviceInfoService.selectByTypeAndCode(token, DeviceTypeEnum.ALARM_HOST.getCode(), alarmHostInfo.getDeviceName());
+            for (DeviceBaseInfo alarmHostInfo : alarmHostInfos) {
+                IotDeviceInfo info = iIotDeviceInfoService.selectByTypeAndCode(token, getDeviceType(alarmHostInfo.getCategories()), alarmHostInfo.getDeviceName());
                 if (info == null) {
-                    info = createAlarmHostInfo(alarmHostInfo, serverInfo);
+                    info = createHostInfo(alarmHostInfo, serverInfo);
                     addList.add(info);
                 } else {
-                    dealAlarmHostInfo(alarmHostInfo, info,serverInfo);
+                    dealHostInfo(alarmHostInfo, info, serverInfo);
                     updateList.add(info);
                 }
             }
@@ -613,21 +628,22 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     /**
      * 转换报警主机设备数据(新增数据)
-     * @param alarmHostInfos
+     *
+     * @param baseInfo
      * @param serverInfo
      * @return
      */
-    private IotDeviceInfo createAlarmHostInfo(AlarmHostInfo alarmHostInfos, IotServerInfo serverInfo){
+    private IotDeviceInfo createHostInfo(DeviceBaseInfo baseInfo, IotServerInfo serverInfo) {
         IotDeviceInfo info = new IotDeviceInfo();
         long id = IdWorker.getId(info);
         info.setDeleted(0);
-        info.setDeviceCode(alarmHostInfos.getDeviceName());
-        info.setDeviceProduct(alarmHostInfos.getProductName());
-        info.setDeviceModel(alarmHostInfos.getModel());
-        info.setDeviceType(DeviceTypeEnum.ALARM_HOST.getCode());
+        info.setDeviceCode(baseInfo.getDeviceName());
+        info.setDeviceProduct(baseInfo.getProductName());
+        //info.setDeviceModel(alarmHostInfos.getModel());
+        info.setDeviceType(getDeviceType(baseInfo.getCategories()));
         info.setNetStatus("0");
         info.setIotToken(serverInfo.getIotCode());
-        info.setDeviceName(alarmHostInfos.getDisplayName());
+        info.setDeviceName(baseInfo.getDisplayName());
         info.setOrgName(serverInfo.getOrgName());
         info.setOrgId(serverInfo.getOrgId());
         info.setOrgPath(serverInfo.getOrgPath());
@@ -635,16 +651,32 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         return info;
     }
 
+
+    private String getDeviceType(String categories) {
+        if (ObjectUtil.isEmpty(categories)) {
+            return null;
+        }
+        String string = categories.split(":")[0];
+        if (WebSocketConstants.DVS.equals(string)) {
+            return DeviceTypeEnum.DVS.getCode();
+        }
+        if (WebSocketConstants.ALARM_HOST.equals(string)) {
+            return DeviceTypeEnum.ALARM_HOST.getCode();
+        }
+        return null;
+    }
+
     /**
      * 更新数据
-     * @param alarmHostInfos
+     *
+     * @param baseInfo
      * @param info
      * @param serverInfo
      */
-    private void dealAlarmHostInfo(AlarmHostInfo alarmHostInfos, IotDeviceInfo info, IotServerInfo serverInfo) {
+    private void dealHostInfo(DeviceBaseInfo baseInfo, IotDeviceInfo info, IotServerInfo serverInfo) {
         info.setDeleted(0);
-        info.setDeviceName(alarmHostInfos.getDisplayName());
-        info.setDeviceModel(alarmHostInfos.getModel());
+        info.setDeviceName(baseInfo.getDisplayName());
+        //info.setDeviceModel(alarmHostInfos.getModel());
         info.setOrgId(serverInfo.getOrgId());
         info.setOrgName(serverInfo.getOrgName());
         info.setOrgPath(serverInfo.getOrgPath());
@@ -652,24 +684,25 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
         info.setUpdateTime(new Date());
     }
 
-    private void saveOrUpdateAlarmHostBatches(List<IotDeviceInfo> addAlarmHostInfos,List<IotDeviceInfo> updateAlarmHostInfos,List<IotDeviceInfoExtend> addAlarmHostExtendInfos,List<IotDeviceInfoExtend> updateAlarmHostExtendInfos){
-        if (!addAlarmHostInfos.isEmpty()) {
-            iIotDeviceInfoService.saveAlarmHostDevice(addAlarmHostInfos);
+    private void saveOrUpdateHostBatches(List<IotDeviceInfo> addHostInfos, List<IotDeviceInfo> updateHostInfos) {
+        if (!addHostInfos.isEmpty()) {
+            iIotDeviceInfoService.saveHostDevice(addHostInfos);
         }
-        if (!updateAlarmHostInfos.isEmpty()) {
-            iIotDeviceInfoService.updateAlarmHostDevice(updateAlarmHostInfos);
+        if (!updateHostInfos.isEmpty()) {
+            iIotDeviceInfoService.updateHostDevice(updateHostInfos);
         }
     }
 
     /**
      * 处理报警主机子系统数据
+     *
      * @param subSystemInfos
      * @param serverInfo
      * @param token
      * @param addList
      * @param updateList
      */
-    private void processSubSystem(List<SubSystemInfo> subSystemInfos, IotServerInfo serverInfo , String token , List<IotAlarmSubsystem> addList , List<IotAlarmSubsystem> updateList){
+    private void processSubSystem(List<SubSystemInfo> subSystemInfos, IotServerInfo serverInfo, String token, List<IotAlarmSubsystem> addList, List<IotAlarmSubsystem> updateList) {
         if (ObjectUtil.isEmpty(subSystemInfos)) {
             log.error("同步报警主机子系统信息,获取报警主机子系统信息为空");
         } else {
@@ -679,14 +712,14 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
                     info = createAlarmSubSystem(subSystemInfo, serverInfo);
                     addList.add(info);
                 } else {
-                    dealAlarmSubSystem(subSystemInfo, info,serverInfo);
+                    dealAlarmSubSystem(subSystemInfo, info, serverInfo);
                     updateList.add(info);
                 }
             }
         }
     }
 
-    private IotAlarmSubsystem createAlarmSubSystem(SubSystemInfo subSystemInfo, IotServerInfo serverInfo){
+    private IotAlarmSubsystem createAlarmSubSystem(SubSystemInfo subSystemInfo, IotServerInfo serverInfo) {
         IotAlarmSubsystem info = new IotAlarmSubsystem();
         long id = IdWorker.getId(info);
         info.setDeleted(0);
@@ -721,30 +754,31 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
 
     /**
      * 处理报警主机防区数据
+     *
      * @param alarmInputInfos
      * @param serverInfo
      * @param token
      * @param addList
      * @param updateList
      */
-    private void processDefenceArea(List<AlarmInputInfo> alarmInputInfos, IotServerInfo serverInfo , String token , List<IotAlarmDefenceArea> addList, List<IotAlarmDefenceArea> updateList){
+    private void processDefenceArea(List<AlarmInputInfo> alarmInputInfos, IotServerInfo serverInfo, String token, List<IotAlarmDefenceArea> addList, List<IotAlarmDefenceArea> updateList) {
         if (ObjectUtil.isEmpty(alarmInputInfos)) {
             log.error("同步报警主机防区信息,获取报警主机防区信息为空");
         } else {
             for (AlarmInputInfo alarmInputInfo : alarmInputInfos) {
-                IotAlarmDefenceArea info = iotAlarmDefenceAreaService.getBySubSystemCodeAndDeviceName(token,alarmInputInfo.getDeviceName(),alarmInputInfo.getSubsystemId(),alarmInputInfo.getInputIndex());
+                IotAlarmDefenceArea info = iotAlarmDefenceAreaService.getBySubSystemCodeAndDeviceName(token, alarmInputInfo.getDeviceName(), alarmInputInfo.getSubsystemId(), alarmInputInfo.getInputIndex());
                 if (info == null) {
                     info = createDefenceArea(alarmInputInfo, serverInfo);
                     addList.add(info);
                 } else {
-                    dealDefenceArea(alarmInputInfo, info,serverInfo);
+                    dealDefenceArea(alarmInputInfo, info, serverInfo);
                     updateList.add(info);
                 }
             }
         }
     }
 
-    private IotAlarmDefenceArea createDefenceArea(AlarmInputInfo alarmInputInfo, IotServerInfo serverInfo){
+    private IotAlarmDefenceArea createDefenceArea(AlarmInputInfo alarmInputInfo, IotServerInfo serverInfo) {
         IotAlarmDefenceArea info = new IotAlarmDefenceArea();
         long id = IdWorker.getId(info);
         info.setDeleted(0);
@@ -777,7 +811,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 saveOrUpdateSubSystemAndDefenceAreaBatches(List<IotAlarmSubsystem> addSubSystemInfos, List<IotAlarmSubsystem> updateSubSystemInfos, List<IotAlarmDefenceArea> addDefenceAreaInfos, List<IotAlarmDefenceArea> updateDefenceAreaInfos) {
         if (!addSubSystemInfos.isEmpty()) {
             iotAlarmSubsystemService.saveSubSystemInfos(addSubSystemInfos);
         }
@@ -793,8 +827,6 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
     }
 
 
-
-
     @Override
     public ProductEnums product() {
         return ProductEnums.IOT_SERVER;
@@ -811,22 +843,22 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
     @Override
     public Object execute(WebsocketExecuteReq req) {
         try {
-            if (WebSocketConstants.GET_DEVICE_BASE_INFOS.equals(req.getEvent())){
+            if (WebSocketConstants.GET_DEVICE_BASE_INFOS.equals(req.getEvent())) {
                 JSONObject object = (JSONObject) req.getData();
-                if (object != null){
+                if (object != null) {
                     List<DeviceBaseInfo> deviceBaseInfos = (List<DeviceBaseInfo>) object.get("deviceBaseInfos");
                     chooseMethod(deviceBaseInfos);
                 }
-            }else if(WebSocketConstants.GET_ALARM_HOST_DEVICE_INFOS.equals(req.getEvent())){
-                dealSubSystemAndInput((AlarmHostBaseInfo) req.getData(),req.getToken());
+            } else if (WebSocketConstants.GET_ALARM_HOST_DEVICE_INFOS.equals(req.getEvent())) {
+                dealSubSystemAndInput((AlarmHostBaseInfo) req.getData(), req.getToken());
             }
-        }catch (Exception e){
+        } catch (Exception e) {
 
         }
         return null;
     }
 
-    private void chooseMethod(List<DeviceBaseInfo> deviceBaseInfos){
+    private void chooseMethod(List<DeviceBaseInfo> deviceBaseInfos) {
         //new HashMap<String,List>()
     }
 }