From 47d58e589b7db7c28fa211e0c647b306a2f07ee2 Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Fri, 26 Jun 2026 19:11:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(wave):=20=E6=9B=B4=E6=96=B0=E6=B3=A2?= =?UTF-8?q?=E5=BD=A2=E5=88=86=E6=9E=90=E6=9C=8D=E5=8A=A1=E4=BB=A5=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=96=B0=E7=9A=84=E7=BA=BF=E8=B7=AFID=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 CsDeviceRegistryFeignClient 和 CsLineFeignClient 依赖注入 - 实现通过 nDid 和 clDid 查询设备注册信息的逻辑 - 添加当设备注册信息为空时通过线路查询的备选方案 - 移除旧的线路ID拼接方式并替换为从设备注册表或线路表获取 - 在统计服务中更新云前置设备线路ID获取方式为从Redis缓存获取 --- .../stat/service/impl/StatServiceImpl.java | 2 +- .../impl/CsWaveAnalysisServiceImpl.java | 25 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/iot-analysis/analysis-stat/stat-boot/src/main/java/com/njcn/stat/service/impl/StatServiceImpl.java b/iot-analysis/analysis-stat/stat-boot/src/main/java/com/njcn/stat/service/impl/StatServiceImpl.java index 0db4edd..516ae86 100644 --- a/iot-analysis/analysis-stat/stat-boot/src/main/java/com/njcn/stat/service/impl/StatServiceImpl.java +++ b/iot-analysis/analysis-stat/stat-boot/src/main/java/com/njcn/stat/service/impl/StatServiceImpl.java @@ -219,7 +219,7 @@ public class StatServiceImpl implements IStatService { } //云前置设备 else if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),code)) { - lineId = appAutoDataMessage.getId() + appAutoDataMessage.getMsg().getClDid(); + lineId = new Gson().fromJson(String.valueOf(redisUtil.getObjectByKey(AppRedisKey.LINE_POSITION+appAutoDataMessage.getId())), Map.class).get(appAutoDataMessage.getMsg().getClDid().toString()).toString(); } //获取当前设备信息 diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsWaveAnalysisServiceImpl.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsWaveAnalysisServiceImpl.java index 0a3c2fb..1ca025c 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsWaveAnalysisServiceImpl.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsWaveAnalysisServiceImpl.java @@ -5,10 +5,14 @@ import com.njcn.access.utils.ChannelObjectUtil; import com.njcn.access.utils.FileCommonUtils; import com.njcn.access.utils.MqttUtil; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.csdevice.api.CsDeviceRegistryFeignClient; +import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.api.DeviceMessageFeignClient; import com.njcn.csdevice.api.EquipmentFeignClient; import com.njcn.csdevice.enums.AlgorithmResponseEnum; import com.njcn.csdevice.param.LineInfoParam; +import com.njcn.csdevice.pojo.po.CsDeviceRegistry; +import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.mq.message.AppEventMessage; import com.njcn.redis.pojo.enums.AppRedisKey; import com.njcn.redis.utils.RedisUtil; @@ -45,6 +49,8 @@ public class CsWaveAnalysisServiceImpl implements ICsWaveAnalysisService { private final FileCommonUtils fileCommonUtils; private final DeviceMessageFeignClient deviceMessageFeignClient; private static Integer mid = 1; + private final CsDeviceRegistryFeignClient csDeviceRegistryFeignClient; + private final CsLineFeignClient csLineFeignClient; @Override public void analysis(AppEventMessage appEventMessage) { @@ -58,6 +64,24 @@ public class CsWaveAnalysisServiceImpl implements ICsWaveAnalysisService { } //获取装置id String deviceId = equipmentFeignClient.findDevByNDid(appEventMessage.getId()).getData().getId(); + //获取监测点id + String nDid = appEventMessage.getId(); + Integer clDid = appEventMessage.getMsg().getClDid(); + CsDeviceRegistry csDeviceRegistry = csDeviceRegistryFeignClient.queryByCurrentNdidAndClDid(nDid, clDid).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(),clDid)).findFirst().orElse(null); + if (Objects.isNull(line)) { + throw new BusinessException("通过逻辑子设备ID获取监测点信息失败"); + } + lineId = line.getLineId(); + } else { + lineId = csDeviceRegistry.getId(); + } //获取波形文件名称 List dataArrayList = appEventMessage.getMsg().getDataArray(); if (CollectionUtil.isNotEmpty(dataArrayList)){ @@ -66,7 +90,6 @@ public class CsWaveAnalysisServiceImpl implements ICsWaveAnalysisService { Object object = paramList.stream().filter(item2 -> ZlConstant.WAVE_NAME.equals(item2.getName())).findFirst().map(AppEventMessage.Param::getData).orElse(null); Object object2 = paramList.stream().filter(item2 -> ZlConstant.WAVE_PARAM_RCDKEEPTIME.equals(item2.getName())).findFirst().map(AppEventMessage.Param::getData).orElse(null); Object object3 = paramList.stream().filter(item2->ZlConstant.WAVE_POSITION.equals(item2.getName())).findFirst().map(AppEventMessage.Param::getData).orElse(null); - String lineId = appEventMessage.getId() + appEventMessage.getMsg().getClDid(); String fileName = object.toString().replaceAll("\\[","").replaceAll("]",""); List fileList = Arrays.stream(fileName.split(",")).collect(Collectors.toList()); //获取到录波文件,将文件信息存储起来