From 19261d011387ec57d646decc945aadaf8913eeab Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 10 三月 2025 09:05:54 +0800
Subject: [PATCH] Merge branch 'clh'
---
SourceCode/Bond/Servo/AlarmManager.h | 63 ++++++++++++++++++++++++++++++-
1 files changed, 60 insertions(+), 3 deletions(-)
diff --git a/SourceCode/Bond/Servo/AlarmManager.h b/SourceCode/Bond/Servo/AlarmManager.h
index 523ca3f..1c41797 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:
@@ -70,9 +71,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 +208,60 @@
*/
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 nSeverityLevel, int nDeviceId, int nUnitId, const std::string& strDescription, const std::string& endTime);
+
+ /**
+ * 读取报警文件
+ * @param filename 文件名
+ * @return 成功返回true,失败返回false
+ */
+ bool readAlarmFile(const std::string& filename);
+
+ /**
+ * 保存报警文件
+ * @param filename 文件名
+ * @return 成功返回true,失败返回false
+ */
+ bool saveAlarmFile(const std::string& filename);
+
+ /**
+ * 通过报警ID查询报警信息
+ * @param nAlarmID 报警ID
+ * @return 报警信息的指针
+ */
+ const AlarmInfo* getAlarmInfoByID(int nAlarmID) const;
+
+ /**
+ * 通过多个报警ID查询对应的报警信息
+ * @param alarmIDs 多个报警ID
+ * @return 返回多个报警信息
+ */
+ std::vector<AlarmInfo> getAlarmsInfoByIDs(const std::vector<int>& alarmIDs) const;
+
/**
* 读取报警文件
* @param filename 文件名
@@ -243,7 +299,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