From 8685b679a6dc509ba583898624405fe2b5e8e874 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Mon, 29 Jun 2026 17:23:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E9=87=8D=E5=A4=8D=E5=91=8A?= =?UTF-8?q?=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sender/dao/DashboardAlertDao.java | 41 +++++++++++++++++++ .../sender/entitiy/AlertHistoryDTO.java | 1 + 2 files changed, 42 insertions(+) diff --git a/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java b/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java index 7b112e0..49e8e48 100644 --- a/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java +++ b/src/main/java/com/techsor/datacenter/sender/dao/DashboardAlertDao.java @@ -151,7 +151,44 @@ public class DashboardAlertDao { }); } + /** + * 检查是否需要合并告警。如果最新告警记录的 merge_alarm_flag = 1, + * 则插入 alert_handle_history 并返回 true。 + */ + private boolean tryMergeAlert(String deviceId) { + String queryLatestSql = "SELECT id, merge_alarm_flag FROM alert_history WHERE device_id = ? ORDER BY id DESC LIMIT 1"; + List latestList = jdbcTemplate.query(queryLatestSql, + (rs, rowNum) -> { + AlertHistoryDTO dto = new AlertHistoryDTO(); + dto.setId(rs.getLong("id")); + dto.setMergeAlarmFlag(rs.getInt("merge_alarm_flag")); + return dto; + }, + deviceId + ); + + if (!latestList.isEmpty() && latestList.get(0).getMergeAlarmFlag() == 1) { + AlertHistoryDTO latest = latestList.get(0); + String insertHandleSql = "INSERT INTO alert_handle_history (" + + "alert_history_id, device_id, alert_status, handle_at, detail_title, detail_content" + + ") VALUES (?, ?, 0, ?, ?, ?)"; + jdbcTemplate.update(insertHandleSql, + latest.getId(), + deviceId, + System.currentTimeMillis(), + "重複アラーム", + "重複アラーム" + ); + return true; + } + return false; + } + public void insertAlertHistory(DynamodbEntity entity) { + if (tryMergeAlert(entity.getDeviceId())) { + return; + } + String sql = "INSERT INTO alert_history (" + "device_id, receive_ts, retain_alert, block_flag " + ") VALUES (?, ?, ?, ?)"; @@ -166,6 +203,10 @@ public class DashboardAlertDao { public Long insertAlertHistory(DynamodbEntity entity, int sourceType) { + if (tryMergeAlert(entity.getDeviceId())) { + return null; + } + String sql = "INSERT INTO alert_history (" + "device_id, receive_ts, source_type, block_flag " + ") VALUES (?, ?, ?, ?)"; diff --git a/src/main/java/com/techsor/datacenter/sender/entitiy/AlertHistoryDTO.java b/src/main/java/com/techsor/datacenter/sender/entitiy/AlertHistoryDTO.java index a3a8c3d..3c681c2 100644 --- a/src/main/java/com/techsor/datacenter/sender/entitiy/AlertHistoryDTO.java +++ b/src/main/java/com/techsor/datacenter/sender/entitiy/AlertHistoryDTO.java @@ -11,5 +11,6 @@ public class AlertHistoryDTO { private Integer handleStatus; private Integer alertStatus; private Integer retainAlert; + private Integer mergeAlarmFlag; }