feat(alarm): 更新告警系统以支持在线率和完整性监控

- 移除原有的中断计数功能,改为在线率和完整性告警判断
- 新增CsAlarmData类用于存储在线率和完整性详细数据
- 更新AlarmVO数据结构,替换interruptCounts为onlineRateIsWarn和integrityIsWarn字段
- 修改告警服务实现,从JSON解析List<List<String>>改为解析CsAlarmData对象
- 新增channelRunDataAlarm方法用于运行数据告警算法,处理在线率和完整性阈值判断
- 实现完整的告警数据构建逻辑,包括设备在线率计算和监测点完整性评估
- 更新统计服务中的数据去重逻辑,避免重复计算设备和监测点数据
This commit is contained in:
xy
2026-05-14 09:22:26 +08:00
parent 82e5d6c8e2
commit aa36c077f2
8 changed files with 348 additions and 55 deletions

View File

@@ -43,7 +43,7 @@ public class CsAlarm implements Serializable {
private String interruptEvent;
/**
* 中断事件描述
* 告警事件描述
*/
private String alarmEvent;

View File

@@ -0,0 +1,61 @@
package com.njcn.csharmonic.pojo.po;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author xy
*/
@Data
public class CsAlarmData implements Serializable {
//设备id
private String deviceId;
// 在线率异常记录
private OnlineRateAlarm onlineRate;
// 完整性异常记录
private IntegrityAlarm integrity;
/**
* 在线率异常信息
*/
@Data
public static class OnlineRateAlarm implements Serializable {
// 实际在线率值
private Double value;
// 阈值
private Double threshold;
// 是否异常
private Boolean isAbnormal;
}
/**
* 完整性异常信息
*/
@Data
public static class IntegrityAlarm implements Serializable {
// 阈值
private Double threshold;
// 各监测点的完整性数据
private List<MonitorPointIntegrity> monitorPoints;
/**
* 监测点完整性信息
*/
@Data
public static class MonitorPointIntegrity implements Serializable {
// 监测点ID
private String monitorPointId;
// 监测点名称
private String monitorName;
// 该监测点的完整性值
private Double value;
// 是否异常
private Boolean isAbnormal;
}
}
}

View File

@@ -1,11 +1,11 @@
package com.njcn.csharmonic.pojo.vo;
import com.njcn.csharmonic.pojo.po.CsAlarmData;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
@@ -24,8 +24,11 @@ public class AlarmVO implements Serializable {
@ApiModelProperty(value = "告警设备台数")
private Integer warnNums;
@ApiModelProperty(value = "通讯中断告警次数")
private Integer interruptCounts;
@ApiModelProperty(value = "在线率是否告警")
private Boolean onlineRateIsWarn;
@ApiModelProperty(value = "完整性是否告警")
private Boolean integrityIsWarn;
@ApiModelProperty(value = "终端告警次数")
private Integer warnCounts;
@@ -57,11 +60,8 @@ public class AlarmVO implements Serializable {
@ApiModelProperty(value = "告警详情")
private List<WarnDetail> warnDetails = new ArrayList<>();
@ApiModelProperty(value = "中断次数")
private Integer interruptCounts = 0;
@ApiModelProperty(value = "中断详情")
private List<String> interruptDetails = new ArrayList<>();
@ApiModelProperty(value = "在线率、完整性详情")
private CsAlarmData dataDetails;
@Data
public static class WarnDetail implements Serializable {