Selaa lähdekoodia

设备网络状态(监控主机、报警主机、动环主机)

xujie 1 vuosi sitten
vanhempi
commit
01354bc40e

+ 4 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/iot/service/IIotDeviceInfoService.java

@@ -1,7 +1,9 @@
 package com.xunmei.host.iot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.iot.domain.IotServerInfo;
 import com.xunmei.common.core.enums.iot.BaseDeviceTypeEnum;
+import com.xunmei.host.websocket.dto.DeviceStatusInfo;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
 
 import java.util.List;
@@ -74,4 +76,6 @@ public interface IIotDeviceInfoService extends IService<IotDeviceInfo> {
     List<IotDeviceInfo> selectAllDeviceByDeviceType(List<BaseDeviceTypeEnum> deviceType);
 
     IotDeviceInfo selectByTokenProductAndDeviceCode(String token, String productName, String deviceType);
+
+    void deviceStatusChange(List<DeviceStatusInfo> statusInfos, IotServerInfo serverInfo);
 }

+ 22 - 3
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/iot/service/impl/IotDeviceInfoServiceImpl.java

@@ -23,10 +23,12 @@ import com.xunmei.host.protection.service.IotAlarmSubsystemService;
 import com.xunmei.host.server.service.IotServerInfoService;
 import com.xunmei.host.video.service.IotDvrDiskService;
 import com.xunmei.host.websocket.constant.WebSocketConstants;
+import com.xunmei.host.websocket.dto.DeviceStatusInfo;
 import com.xunmei.host.websocket.dto.WebsocketExecuteReq;
 import com.xunmei.host.websocket.dto.dvs.DvsBaseInfo;
 import com.xunmei.host.websocket.dto.dvs.SubDeviceInfo;
 import com.xunmei.host.websocket.enums.DeviceCacheEnum;
+import com.xunmei.host.websocket.enums.DeviceNetStatusEnum;
 import com.xunmei.host.websocket.enums.ProductEnums;
 import com.xunmei.host.websocket.service.RouterService;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
@@ -255,6 +257,20 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     }
 
     @Override
+    public void deviceStatusChange(List<DeviceStatusInfo> statusInfos,IotServerInfo serverInfo) {
+        if (ObjectUtil.isEmpty(statusInfos)) {
+            return;
+        }
+        for (DeviceStatusInfo statusInfo : statusInfos){
+            LogUtils.WEBSOCKET_MSG.error("收到设备状态变更消息,根据token:{},productName:{},deviceName:{}未查询到设备信息", serverInfo.getIotCode(), statusInfo.getProductName(), statusInfo.getDeviceCode());
+            IotDeviceInfo deviceInfo = this.selectByTokenProductAndDeviceCode(serverInfo.getIotCode(), statusInfo.getProductName(), statusInfo.getDeviceCode());
+            deviceInfo.setNetStatus(DeviceNetStatusEnum.getValue(statusInfo.getDeviceStatus()));
+            deviceInfo.setUpdateTime(new Date());
+            baseMapper.updateById(deviceInfo);
+        }
+    }
+
+    @Override
     public ProductEnums product() {
         return ProductEnums.IOT_SERVER;
     }
@@ -286,16 +302,19 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         }
         String token = req.getToken();
         IotServerInfo serverInfo = iotServerInfoService.selectByToken(token);
-        List<DvsBaseInfo> dataList = dataArray.toJavaList(DvsBaseInfo.class);
-        String lockKey = LOCK_DEVICE_BASE_INFO + token;
-        String key = LOCK_ALARM_HOST_BASE_INFO + token;
         String event = req.getEvent();
         switch (event) {
             case WebSocketConstants.DEVICES_EVENT:
+                List<DvsBaseInfo> dataList = dataArray.toJavaList(DvsBaseInfo.class);
+                String lockKey = LOCK_DEVICE_BASE_INFO + token;
+                String key = LOCK_ALARM_HOST_BASE_INFO + token;
+
                 lockAndExecute(lockKey, () -> handleDvsAndFSUDeviceInfo(dataList, serverInfo));
                 lockAndExecute(key, () -> handleAlarmHostDeviceInfo(dataList, serverInfo));
                 break;
             case WebSocketConstants.DEVICES_STATUS_EVENT:
+                List<DeviceStatusInfo> statusInfos = dataArray.toJavaList(DeviceStatusInfo.class);
+                deviceStatusChange(statusInfos,serverInfo);
                 break;
             default:
                 break;

+ 21 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/dto/DeviceStatusInfo.java

@@ -0,0 +1,21 @@
+package com.xunmei.host.websocket.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceStatusInfo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String deviceCode;
+
+    private String productName;
+
+    private String deviceStatus;
+
+}