|
|
@@ -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;
|