feat(event): 添加事件参数处理和严重度计算功能

- 移除未使用的通知服务依赖注入
- 添加DecimalFormat用于数值格式化
- 新增相别、暂降源、瞬态有效值和电压变化常量定义
- 实现暂降事件严重度计算方法getYzd
- 添加暂降源转换方法getSagSource
- 在事件处理中新增SagSource和Rms字段解析
- 完善暂降事件严重度计算逻辑并修复空指针风险
This commit is contained in:
xy
2026-06-10 10:53:10 +08:00
parent b2b055c44c
commit 73fc8805d8
2 changed files with 79 additions and 8 deletions

View File

@@ -37,10 +37,8 @@ import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.pojo.dto.EpdDTO;
import com.njcn.system.pojo.po.DictData;
import com.njcn.zlevent.pojo.constant.ZlConstant;
//import com.njcn.zlevent.service.AppNotificationService;
import com.njcn.zlevent.service.ICsEventService;
import com.njcn.zlevent.service.IEventService;
//import com.njcn.zlevent.service.SmsNotificationService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.influxdb.InfluxDB;
@@ -51,6 +49,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
@@ -83,8 +82,6 @@ public class EventServiceImpl implements IEventService {
private final WlRmpEventDetailMapper wlRmpEventDetailMapper;
private final DictTreeFeignClient dictTreeFeignClient;
private final DeviceMessageFeignClient deviceMessageFeignClient;
// private final AppNotificationService appNotificationService;
// private final SmsNotificationService smsNotificationService;
private final EventAnalysisService eventAnalysisService;
private final MsgSendFeignClient msgSendFeignClient;
@@ -179,9 +176,18 @@ public class EventServiceImpl implements IEventService {
if (Objects.equals(param.getName(),ZlConstant.EVT_PARAM_VVADEPTH)) {
csEvent.setAmplitude(Double.parseDouble(param.getData().toString()));
}
if (Objects.equals(param.getName(),"Evt_Param_Phase")) {
if (Objects.equals(param.getName(),ZlConstant.EVT_PARAM_PHASE)) {
csEvent.setPhase(param.getData().toString());
}
if (Objects.equals(param.getName(),ZlConstant.SAG_SOURCE)) {
csEvent.setSagSource(param.getData().toString());
}
if (Objects.equals(param.getName(),ZlConstant.EVT_PARAM_RMS)) {
csEvent.setRms(Double.parseDouble(param.getData().toString()));
}
if (Objects.equals(param.getName(),ZlConstant.EVT_PARAM_UCHG)) {
csEvent.setUchg(Double.parseDouble(param.getData().toString()));
}
fields.put(param.getName(),param.getData());
}
//只有治理型号的设备有监测位置
@@ -194,7 +200,13 @@ public class EventServiceImpl implements IEventService {
csEvent.setLocation("load");
}
}
String dropZone = eventAnalysisService.determineDropZone(String.valueOf(csEvent.getAmplitude()),String.valueOf(csEvent.getPersistTime()));
String dropZone = null;
if (!Objects.isNull(csEvent.getAmplitude()) && !Objects.isNull(csEvent.getPersistTime())) {
dropZone = eventAnalysisService.determineDropZone(String.valueOf(csEvent.getAmplitude()),String.valueOf(csEvent.getPersistTime()));
if (Objects.equals(tag,"Evt_Sys_DipStr")) {
csEvent.setSeverity(Double.valueOf(getYzd(csEvent.getPersistTime()*1000,csEvent.getAmplitude()/100)));
}
}
csEvent.setLandPoint(dropZone);
AppEventMessage.Param param = new AppEventMessage.Param();
param.setName("Evt_Param_DropZone");
@@ -252,7 +264,6 @@ public class EventServiceImpl implements IEventService {
msgSendParam.setAmplitude(amplitude);
msgSendParam.setPersistTime(persistTime);
msgSendParam.setDropZone(dropZone);
// appNotificationService.sendAppNotification(1, item.getType(), po.getId(), item.getName(), eventTime, id, po.getNdid(),amplitude,persistTime,dropZone);
msgSendFeignClient.appMsgSend(msgSendParam);
//如果是暂降事件,则异步发送短信
if (Objects.equals(item.getName(), "Evt_Sys_DipStr")) {
@@ -263,7 +274,6 @@ public class EventServiceImpl implements IEventService {
msgSendParam2.setPersistTime(persistTime);
msgSendParam2.setDropZone(dropZone);
msgSendFeignClient.smsMsgSend(msgSendParam2);
// smsNotificationService.sendSmsForDipEvent(po.getId(), eventTime,amplitude,persistTime,dropZone);
}
}
}
@@ -272,6 +282,30 @@ public class EventServiceImpl implements IEventService {
}
}
/**
* 获取该事件的严重度
*
* @param persistTime 持续时间 ms单位
* @param eventValue 暂降、暂升幅值
*/
public String getYzd(Double persistTime, Double eventValue) {
Double yzd;
// 格式化小数
DecimalFormat df = new DecimalFormat("0.000");
if (persistTime <= 20) {
yzd = 1.0 - eventValue;
} else if (persistTime > 20 && persistTime <= 200) {
yzd = 2.0 * (1 - eventValue);
} else if (persistTime > 200 && persistTime <= 500) {
yzd = 3.3 * (1 - eventValue);
} else if (persistTime > 500 && persistTime <= 10000) {
yzd = 5.0 * (1 - eventValue);
} else {
yzd = 10.0 * (1 - eventValue);
}
return df.format(yzd);
}
public void insertEvent(CsEventPO item) {
RmpEventDetailPO rmpEventDetailPo = new RmpEventDetailPO();
rmpEventDetailPo.setEventId(item.getId());
@@ -284,9 +318,26 @@ public class EventServiceImpl implements IEventService {
rmpEventDetailPo.setDealFlag(0);
rmpEventDetailPo.setFileFlag(0);
rmpEventDetailPo.setPhase(item.getPhase());
rmpEventDetailPo.setSagsource(getSagSource(item.getSagSource()));
rmpEventDetailPo.setSeverity(item.getSeverity());
wlRmpEventDetailMapper.insert(rmpEventDetailPo);
}
public String getSagSource(String tag) {
switch (tag) {
case "1":
tag = "Upper";
break;
case "2":
tag = "Lower";
break;
default:
tag = "Unknown";
break;
}
return tag;
}
public String getEventType(String tag) {
switch (tag) {
case "Evt_Sys_DipStr":