feat(alert): 优化告警消息处理逻辑

- 修改主键生成策略为 ASSIGN_ID
- 添加 JSON 序列化注解确保 ID 正确序列化
- 调整告警判断逻辑以支持 switch 类型属性
- 完善告警延续机制,避免重复创建告警消息
This commit is contained in:
2025-12-10 16:12:22 +08:00
parent ff98c71bda
commit 4701d10969
2 changed files with 6 additions and 2 deletions

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.jeelowcode.framework.utils.model.global.BaseTenantEntity; import com.jeelowcode.framework.utils.model.global.BaseTenantEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -23,7 +25,8 @@ public class LcPowerEnvAlertMessageEntity extends BaseTenantEntity {
/** /**
* 主键 * 主键
*/ */
@TableId(value = "ID", type = IdType.NONE) @TableId(value = "ID", type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
private Long id; private Long id;
/** /**

View File

@@ -47,7 +47,8 @@ public class LcPowerEnvMetricEventListener {
List<LcPowerEnvMonitorMetricEntity> recentData = metricService.getRecentData(metric.getDeviceUid(), metric.getPropertyCode(), metric.getCreateTime().minusMinutes(3)); List<LcPowerEnvMonitorMetricEntity> recentData = metricService.getRecentData(metric.getDeviceUid(), metric.getPropertyCode(), metric.getCreateTime().minusMinutes(3));
LcPowerEnvAlertMessageEntity alertMessage = alertService.getLatestAlertMessage(metric.getDeviceUid(), metric.getPropertyCode()); LcPowerEnvAlertMessageEntity alertMessage = alertService.getLatestAlertMessage(metric.getDeviceUid(), metric.getPropertyCode());
if (StrUtil.equals(metric.getMetricValue(), "true")) { if ((StrUtil.equals(metric.getMetricValue(), "true") && !StrUtil.equals(metric.getPropertyCode(), "switch")) ||
(StrUtil.equals(metric.getMetricValue(), "false") && StrUtil.equals(metric.getPropertyCode(), "switch"))) {
// 判断三分钟内是否有告警,如果有,则延续告警消息,延长告警消息时间,如果没有则创建新的告警消息 // 判断三分钟内是否有告警,如果有,则延续告警消息,延长告警消息时间,如果没有则创建新的告警消息
if (CollUtil.isNotEmpty(recentData) if (CollUtil.isNotEmpty(recentData)
&& StrUtil.equals(CollUtil.getFirst(recentData).getMetricValue(), "true")) { && StrUtil.equals(CollUtil.getFirst(recentData).getMetricValue(), "true")) {