From bfe14e41fa5b07771d78af4511ba18d706bc23cc Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 28 七月 2025 17:07:52 +0800
Subject: [PATCH] 1.Spooling Config功能EAP模拟测试;

---
 SourceCode/Bond/Servo/AlarmManager.h |   41 ++++++++++++++++++++++++++++++++---------
 1 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/SourceCode/Bond/Servo/AlarmManager.h b/SourceCode/Bond/Servo/AlarmManager.h
index 523ca3f..cbe1bb9 100644
--- a/SourceCode/Bond/Servo/AlarmManager.h
+++ b/SourceCode/Bond/Servo/AlarmManager.h
@@ -29,7 +29,8 @@
     std::string strEndTime;        // 结束时间
 };
 
-using AlarmMap = std::unordered_map<int, AlarmInfo>;
+using AlarmInfoMap = std::unordered_map<int, AlarmInfo>;
+using AlarmDataMap = std::unordered_map<int, AlarmData>;
 
 class AlarmManager {
 public:
@@ -38,12 +39,6 @@
      * @return AlarmManager实例的引用
      */
     static AlarmManager& getInstance();
-
-    /**
-     * 设置数据库连接
-     * @param db 数据库连接的指针
-     */
-    void setDatabase(BL::Database* db);
 
     /**
      * 初始化报警表
@@ -70,9 +65,10 @@
     /**
      * 添加报警
      * @param alarmData 报警数据的结构体
+     * @param alarmEventId 最近插入的 alarm_event_id
      * @return 成功返回true,失败返回false
      */
-    bool addAlarm(const AlarmData& alarmData);
+    bool addAlarm(const AlarmData& alarmData, int& alarmEventId);
 
     /**
      * 查询所有报警数据
@@ -206,6 +202,32 @@
     */
     std::string getUnitNameById(int deviceId, int unitId);
 
+    /**
+    * 获取最近插入的 alarm_event_id
+    * @return 失败返回-1,成功返回最近插入的 alarm_event_id
+    */
+    int getLastInsertId();
+
+    /**
+    * 通过事件id解除报警(更新结束时间)
+    * @param alarmEventId 事件ID
+    * @param endTime 结束时间
+    * @return 成功返回true,失败返回false
+    */
+    bool clearAlarmByEventId(int alarmEventId, const std::string& endTime);
+
+    /**
+    * 通过多个属性查找并解除报警(更新结束时间)
+    * @param nId 报警ID
+    * @param nSeverityLevel 报警等级
+    * @param nDeviceId 设备ID
+    * @param nUnitId 单元ID
+    * @param strDescription 描述
+    * @param endTime 结束时间
+    * @return 成功返回true,失败返回false
+    */
+    bool clearAlarmByAttributes(int nId, int nDeviceId, int nUnitId, const std::string& endTime);
+
 	/**
 	 * 读取报警文件
 	 * @param filename 文件名
@@ -243,7 +265,8 @@
     AlarmManager& operator=(const AlarmManager&) = delete;
 
     BL::Database* m_pDB;
-    AlarmMap m_mapAlarm;
+    AlarmInfoMap m_mapAlarm;
+    AlarmDataMap m_mapCache;
     static std::mutex m_mutex;
 };
 

--
Gitblit v1.9.3