From 216225f0cbc645c08091650334706717b4bf0425 Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Thu, 21 May 2026 19:57:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(event):=20=E6=9B=B4=E6=96=B0=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E6=9C=8D=E5=8A=A1=E4=BB=A5=E6=94=AF=E6=8C=81=E6=9A=82?= =?UTF-8?q?=E9=99=8D=E4=BA=8B=E4=BB=B6=E5=8E=9F=E5=9B=A0=E5=92=8C=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 CsEventServiceImpl 类,添加字典数据客户端依赖注入 - 将 updateCsEvent 方法返回值从 List 改为 List - 新增 updateEventCauseAndType 方法用于更新暂降事件的原因和类型 - 在 FileServiceImpl 中添加事件原因分析客户端和服务调用逻辑 - 在波形文件处理流程中集成暂降事件类型和原因分析功能 - 更新相关方法签名以返回完整事件对象而非仅ID列表 --- .../njcn/zlevent/service/ICsEventService.java | 10 +++- .../service/impl/CsEventServiceImpl.java | 46 ++++++++++++++----- .../zlevent/service/impl/FileServiceImpl.java | 36 +++++++++++---- 3 files changed, 71 insertions(+), 21 deletions(-) diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/ICsEventService.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/ICsEventService.java index 5996df2..0167526 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/ICsEventService.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/ICsEventService.java @@ -19,6 +19,14 @@ public interface ICsEventService extends IService { /** * 事件添加波形文件地址 */ - List updateCsEvent(CsEventParam csEventParam); + List updateCsEvent(CsEventParam csEventParam); + + /** + * 暂降事件添加原因和类型 + * 暂降原因(0:未知 1:短路故障 2:电压调节器 3:感动电机 4:电压跌落) + * 暂降类型(0:BC相间故障 1:C相接地故障 2:AC相间故障 3:A相接地故障 4:AB相间故障 + * 5:B相接地故障 6:BC相间接地 7:AC相间接地 8:AB相间接地 9:三相故障 10:未知) + */ + void updateEventCauseAndType(String id, Integer cause, Integer type); } diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsEventServiceImpl.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsEventServiceImpl.java index 08b88ac..3d3a3f3 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsEventServiceImpl.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/CsEventServiceImpl.java @@ -1,9 +1,11 @@ package com.njcn.zlevent.service.impl; -import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.csharmonic.pojo.po.CsEventPO; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; import com.njcn.zlevent.mapper.CsEventMapper; import com.njcn.zlevent.param.CsEventParam; import com.njcn.zlevent.service.ICsEventService; @@ -11,11 +13,11 @@ import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; /** *

@@ -29,11 +31,11 @@ import java.util.stream.Collectors; @AllArgsConstructor public class CsEventServiceImpl extends ServiceImpl implements ICsEventService { + private final DicDataFeignClient dicDataFeignClient; + @Override @Transactional(rollbackFor = Exception.class) - public List updateCsEvent(CsEventParam csEventParam) { - List eventList = new ArrayList<>(); - + public List updateCsEvent(CsEventParam csEventParam) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS"); LocalDateTime dateTime = LocalDateTime.parse(csEventParam.getStartTime(), formatter); // 减去1毫秒 @@ -50,10 +52,30 @@ public class CsEventServiceImpl extends ServiceImpl im lambdaUpdateWrapper.eq(CsEventPO::getLocation, csEventParam.getLocation()); } this.update(lambdaUpdateWrapper); - List list = this.baseMapper.selectList(lambdaUpdateWrapper); - if (CollectionUtil.isNotEmpty(list)){ - eventList = list.stream().map(CsEventPO::getId).collect(Collectors.toList()); - } - return eventList; + return this.baseMapper.selectList(lambdaUpdateWrapper); } + + @Override + public void updateEventCauseAndType(String id, Integer cause, Integer type) { + List list1 = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_REASON.getCode()).getData(); + String id1 = list1.stream() + .filter(item -> Objects.equals(item.getAlgoDescribe(), cause)) + .map(DictData::getId) + .findFirst() + .orElse(null); + + List list2 = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_TYPE.getCode()).getData(); + String id2 = list2.stream() + .filter(item -> Objects.equals(item.getAlgoDescribe(), type)) + .map(DictData::getId) + .findFirst() + .orElse(null); + + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.set(CsEventPO::getAdvanceReason,id1) + .set(CsEventPO::getAdvanceType,id2) + .eq(CsEventPO::getId,id); + this.update(lambdaUpdateWrapper); + } + } diff --git a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/FileServiceImpl.java b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/FileServiceImpl.java index 65ad0e1..d83c549 100644 --- a/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/FileServiceImpl.java +++ b/iot-analysis/analysis-zl-event/zl-event-boot/src/main/java/com/njcn/zlevent/service/impl/FileServiceImpl.java @@ -14,6 +14,8 @@ import com.njcn.access.enums.TypeEnum; import com.njcn.access.pojo.dto.ReqAndResDto; import com.njcn.access.pojo.dto.file.FileDto; import com.njcn.access.utils.*; +import com.njcn.advance.api.EventCauseFeignClient; +import com.njcn.advance.pojo.dto.EventAnalysisDTO; import com.njcn.common.config.GeneralInfo; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.csdevice.api.DeviceFtpFeignClient; @@ -24,6 +26,7 @@ import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO; import com.njcn.csharmonic.api.WavePicFeignClient; import com.njcn.csharmonic.enums.CsHarmonicResponseEnum; import com.njcn.csharmonic.pojo.dto.DownloadMakeUpDto; +import com.njcn.csharmonic.pojo.po.CsEventPO; import com.njcn.middle.rocket.domain.BaseMessage; import com.njcn.mq.message.AppFileMessage; import com.njcn.oss.constant.GeneralConstant; @@ -85,6 +88,7 @@ public class FileServiceImpl implements IFileService { private final FileCommonUtils fileCommonUtils; private final DeviceFtpFeignClient deviceFtpFeignClient; private final PortableOffLogFeignClient portableOffLogFeignClient; + private final EventCauseFeignClient eventCauseFeignClient; private final CommonProducer commonProducer; private final SendMessageUtil sendMessageUtil; @@ -302,13 +306,21 @@ public class FileServiceImpl implements IFileService { csWaveService.updateCsWave(fileName); //波形文件关联事件 filePath = filePath.replaceAll(GeneralConstant.CFG,"").replaceAll(GeneralConstant.DAT,""); - List eventList = correlateEvents(fileInfoDto,filePath,fileName); + List eventList = correlateEvents(fileInfoDto,filePath,fileName); if (CollectionUtil.isNotEmpty(eventList) && devModel){ + String finalFilePath = filePath; eventList.forEach(item -> { //波形文件解析成图片 - wavePicFeignClient.getWavePics(item); + wavePicFeignClient.getWavePics(item.getId()); + //如果是暂降则计算暂降类型和暂降原因 + if (Objects.equals(item.getTag(),"Evt_Sys_DipStr")) { + EventAnalysisDTO var1 = new EventAnalysisDTO(); + var1.setWlFilePath(finalFilePath); + EventAnalysisDTO dto = eventCauseFeignClient.analysisCauseAndType(var1).getData(); + csEventService.updateEventCauseAndType(item.getId(),dto.getCause(),dto.getType()); + } //同步更新r_mp_event_detail,将波形路径录入 - wavePicFeignClient.updateEventById(item); + wavePicFeignClient.updateEventById(item.getId()); }); } } @@ -354,13 +366,21 @@ public class FileServiceImpl implements IFileService { csWaveService.updateCsWave(fileName); //波形文件关联事件 filePath = filePath.replaceAll(GeneralConstant.CFG, "").replaceAll(GeneralConstant.DAT, ""); - List eventList = correlateEvents(fileInfoDto, filePath, fileName); + List eventList = correlateEvents(fileInfoDto, filePath, fileName); if (CollectionUtil.isNotEmpty(eventList) && devModel){ + String finalFilePath = filePath; eventList.forEach(item -> { //波形文件解析成图片 - wavePicFeignClient.getWavePics(item); + wavePicFeignClient.getWavePics(item.getId()); + //如果是暂降则计算暂降类型和暂降原因 + if (Objects.equals(item.getTag(),"Evt_Sys_DipStr")) { + EventAnalysisDTO var1 = new EventAnalysisDTO(); + var1.setWlFilePath(finalFilePath); + EventAnalysisDTO dto2 = eventCauseFeignClient.analysisCauseAndType(var1).getData(); + csEventService.updateEventCauseAndType(item.getId(),dto2.getCause(),dto2.getType()); + } //同步更新r_mp_event_detail,将波形路径录入 - wavePicFeignClient.updateEventById(item); + wavePicFeignClient.updateEventById(item.getId()); }); } } @@ -941,8 +961,8 @@ public class FileServiceImpl implements IFileService { /** * 波形文件关联事件 */ - public List correlateEvents(FileInfoDto fileInfoDto, String path, String fileName) { - List list = new ArrayList<>(); + public List correlateEvents(FileInfoDto fileInfoDto, String path, String fileName) { + List list = new ArrayList<>(); String[] parts = fileName.split(StrUtil.SLASH); fileName = parts[parts.length - 1].split("\\.")[0]; boolean result = csWaveService.findCountByName(fileName);