diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/handler/MqttMessageHandler.java b/iot-access/access-boot/src/main/java/com/njcn/access/handler/MqttMessageHandler.java index 2fe796b..aaec036 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/handler/MqttMessageHandler.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/handler/MqttMessageHandler.java @@ -439,7 +439,22 @@ public class MqttMessageHandler { logDto.setOperate("系统端收到装置端"+nDid+"询问项目列表报文,code = " + res.getCode()); logDto.setResult(1); List projectInfoList = JSON.parseArray(JSON.toJSONString(rspDataDto.getDataArray()), RspDataDto.ProjectInfo.class); - String key3 = AppRedisKey.PROJECT_INFO + nDid + rspDataDto.getClDid(); + CsDeviceRegistry csDeviceRegistry = csDeviceRegistryFeignClient.queryByCurrentNdidAndClDid(nDid, rspDataDto.getClDid()).getData(); + String lineId; + if (Objects.isNull(csDeviceRegistry)) { + List lines = csLineFeignClient.findByNdid(nDid).getData(); + if (CollectionUtil.isEmpty(lines)) { + throw new BusinessException("通过装置NDID获取监测点信息失败"); + } + CsLinePO line = lines.stream().filter(item->Objects.equals(item.getClDid(),rspDataDto.getClDid())).findFirst().orElse(null); + if (Objects.isNull(line)) { + throw new BusinessException("通过逻辑子设备ID获取监测点信息失败"); + } + lineId = line.getLineId(); + } else { + lineId = csDeviceRegistry.getId(); + } + String key3 = AppRedisKey.PROJECT_INFO + lineId; redisUtil.saveByKeyWithExpire(key3,projectInfoList,60L); logMessageTemplate.sendMember(logDto); break; @@ -477,7 +492,15 @@ public class MqttMessageHandler { CsDeviceRegistry csDeviceRegistry = csDeviceRegistryFeignClient.queryByCurrentNdidAndClDid(nDid, item.getClDid()).getData(); String lineId; if (Objects.isNull(csDeviceRegistry)) { - lineId = nDid + item.getClDid(); + List lines = csLineFeignClient.findByNdid(nDid).getData(); + if (CollectionUtil.isEmpty(lines)) { + throw new BusinessException("通过装置NDID获取监测点信息失败"); + } + CsLinePO line = lines.stream().filter(item2->Objects.equals(item2.getClDid(),item.getClDid())).findFirst().orElse(null); + if (Objects.isNull(line)) { + throw new BusinessException("通过逻辑子设备ID获取监测点信息失败"); + } + lineId = line.getLineId(); } else { lineId = csDeviceRegistry.getId(); }