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