feat(wave): 更新波形分析服务以支持新的线路ID获取逻辑

- 添加 CsDeviceRegistryFeignClient 和 CsLineFeignClient 依赖注入
- 实现通过 nDid 和 clDid 查询设备注册信息的逻辑
- 添加当设备注册信息为空时通过线路查询的备选方案
- 移除旧的线路ID拼接方式并替换为从设备注册表或线路表获取
- 在统计服务中更新云前置设备线路ID获取方式为从Redis缓存获取
This commit is contained in:
xy
2026-06-26 19:11:02 +08:00
parent f439a4f2c8
commit 47d58e589b
2 changed files with 25 additions and 2 deletions

View File

@@ -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<CsLinePO> 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<AppEventMessage.DataArray> 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<String> fileList = Arrays.stream(fileName.split(",")).collect(Collectors.toList());
//获取到录波文件,将文件信息存储起来