|  | @@ -173,10 +173,10 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
 | 
	
		
			
				|  |  |      private void updateCache(IotDeviceInfo info, int type) {
 | 
	
		
			
				|  |  |          String key = "";
 | 
	
		
			
				|  |  |          if (type == 1) {
 | 
	
		
			
				|  |  | -            key = DeviceCacheEnum.IOT_BASE_DEVICE_INFO.getCode() + info.getIotToken() + "_" + info.getDeviceType() + "_" + info.getDeviceCode();
 | 
	
		
			
				|  |  | +            key = DeviceCacheEnum.IOT_BASE_DEVICE_INFO.getCode() + info.getIotToken() + "_" + info.getDeviceType() + "_" + info.getDeviceType() + "_" + info.getDeviceCode();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (type == 2) {
 | 
	
		
			
				|  |  | -            key = DeviceCacheEnum.IOT_CHANNEL_INFO.getCode() + info.getIotToken() + "_" + info.getHostCode() + "_" + info.getDeviceCode();
 | 
	
		
			
				|  |  | +            key = DeviceCacheEnum.IOT_CHANNEL_INFO.getCode() + info.getIotToken() + "_" + info.getHostCode() + "_" + info.getDeviceType() + "_" + info.getDeviceCode();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          RedisUtils.setCacheObject(key, info, Duration.ofMillis(1000 * 60 * 60));
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -257,11 +257,11 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public void deviceStatusChange(List<DeviceStatusInfo> statusInfos,IotServerInfo serverInfo) {
 | 
	
		
			
				|  |  | +    public void deviceStatusChange(List<DeviceStatusInfo> statusInfos, IotServerInfo serverInfo) {
 | 
	
		
			
				|  |  |          if (ObjectUtil.isEmpty(statusInfos)) {
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        for (DeviceStatusInfo statusInfo : statusInfos){
 | 
	
		
			
				|  |  | +        for (DeviceStatusInfo statusInfo : statusInfos) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              IotDeviceInfo deviceInfo = this.selectByTokenProductAndDeviceCode(serverInfo.getIotCode(), statusInfo.getProductName(), statusInfo.getDeviceCode());
 | 
	
		
			
				|  |  |              if (ObjectUtil.isEmpty(deviceInfo)) {
 | 
	
	
		
			
				|  | @@ -303,7 +303,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
 | 
	
		
			
				|  |  |          Object data = req.getData();
 | 
	
		
			
				|  |  |          JSONArray dataArray = (JSONArray) data;
 | 
	
		
			
				|  |  |          if (ObjectUtil.isEmpty(dataArray)) {
 | 
	
		
			
				|  |  | -            return WebsocketResult.replySuccess(req.getTopic(),req.getId(), req.getProductName(), req.getDeviceName());
 | 
	
		
			
				|  |  | +            return WebsocketResult.replySuccess(req.getTopic(), req.getId(), req.getProductName(), req.getDeviceName());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          String token = req.getToken();
 | 
	
		
			
				|  |  |          IotServerInfo serverInfo = iotServerInfoService.selectByToken(token);
 | 
	
	
		
			
				|  | @@ -322,15 +322,19 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
 | 
	
		
			
				|  |  |                  handleAlarmHostDeviceInfo(dataList, serverInfo);
 | 
	
		
			
				|  |  |                  /*lockAndExecute(lockKey, () -> handleDvsAndFSUDeviceInfo(dataList, serverInfo));
 | 
	
		
			
				|  |  |                  lockAndExecute(key, () -> handleAlarmHostDeviceInfo(dataList, serverInfo));*/
 | 
	
		
			
				|  |  | -                return WebsocketResult.replySuccess(req.getTopic(),req.getId(), req.getProductName(), req.getDeviceName());
 | 
	
		
			
				|  |  | +                return WebsocketResult.replySuccess(req.getTopic(), req.getId(), req.getProductName(), req.getDeviceName());
 | 
	
		
			
				|  |  |              case WebSocketConstants.DEVICES_STATUS_EVENT:
 | 
	
		
			
				|  |  |                  List<DeviceStatusInfo> statusInfos = dataArray.toJavaList(DeviceStatusInfo.class);
 | 
	
		
			
				|  |  | -                deviceStatusChange(statusInfos,serverInfo);
 | 
	
		
			
				|  |  | +                deviceStatusChange(statusInfos, serverInfo);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |              default:
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        /*final RedissonClient client = RedisUtils.getClient();
 | 
	
		
			
				|  |  | +        final boolean lock = client.getLock(event + req.getToken()).tryLock();
 | 
	
		
			
				|  |  | +        if (lock) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        }*/
 | 
	
		
			
				|  |  |          return null;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -505,7 +509,8 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              //处理通道或者动环传感器信息
 | 
	
		
			
				|  |  |              for (SubDeviceInfo subDeviceInfo : subDeviceList) {
 | 
	
		
			
				|  |  | -                IotDeviceInfo channelInfo = selectByTypeAndHostAndCode(serverInfo.getIotCode(), subDeviceInfo.getParentCode(), dvsBaseInfo.getProductName(), subDeviceInfo.getDeviceCode());
 | 
	
		
			
				|  |  | +                String productName = Arrays.asList(ProductEnums.FSU_GATEWAY.getProductName()).contains(dvsBaseInfo.getProductName()) ? subDeviceInfo.getType() : dvsBaseInfo.getProductName();
 | 
	
		
			
				|  |  | +                IotDeviceInfo channelInfo = selectByTypeAndHostAndCode(serverInfo.getIotCode(), subDeviceInfo.getParentCode(), productName, subDeviceInfo.getDeviceCode());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (ObjectUtil.isNull(channelInfo)) {
 | 
	
		
			
				|  |  |                      IotDeviceInfo channel = createChannelInfo(subDeviceInfo, serverInfo, hostInfo);
 |