From fec3ff7b0bb0a4e53c2f9ff26cd06659a0c8aff9 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 07 一月 2025 11:08:34 +0800
Subject: [PATCH] 1.工具条; 2.左侧PLC列表;

---
 SourceCode/Bond/BondEq/AlarmMonitor.cpp |   68 ++++++++++-----------------------
 1 files changed, 21 insertions(+), 47 deletions(-)

diff --git a/SourceCode/Bond/BondEq/AlarmMonitor.cpp b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
index 4e23b8d..de5d6e7 100644
--- a/SourceCode/Bond/BondEq/AlarmMonitor.cpp
+++ b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
@@ -9,8 +9,8 @@
 
 CAlarmMonitor::CAlarmMonitor()
 {
-	m_pRawData = new char[200];
-	memset(m_pRawData, 0, 200);
+	m_pRawData = new char[512];
+	memset(m_pRawData, 0, 512);
 }
 
 
@@ -30,11 +30,6 @@
 		item.second->release();
 	}
 	m_mapAlarming.clear();
-
-	for (auto item : m_alarms) {
-		item->release();
-	}
-	m_alarms.clear();
 }
 
 std::string& CAlarmMonitor::getClassName()
@@ -54,7 +49,7 @@
 	if (MONITOR_ID_ALARM != id) {
 		return;
 	}
-	
+
 	// 比较有没有变化
 	if (compareData(m_pRawData, (const char*)pData, size)) {
 		return;
@@ -166,28 +161,9 @@
 
 void CAlarmMonitor::Serialize(CArchive& ar)
 {
-	if (ar.IsStoring())
-	{
-		Lock();
-		int count = (int)m_alarms.size();
-		ar << count;
-		for (auto item : m_alarms) {
-			item->Serialize(ar);
-		}
-		Unlock();
+	if (ar.IsStoring()) {
 	}
-	else
-	{
-		Lock();
-		int count;
-		ar >> count;
-		for (int i = 0; i < count; i++) {
-			CAlarm* pAlarm = new CAlarm();
-			pAlarm->Serialize(ar);
-			addAlarmToHistoryRecord(pAlarm);
-			LOGE("历史警告:%s", pAlarm->toString().c_str());
-		}
-		Unlock();
+	else {
 	}
 }
 
@@ -215,18 +191,6 @@
 	Unlock();
 
 	return iter->second;
-}
-
-std::list< CAlarm*>& CAlarmMonitor::getAlarmRecords()
-{
-	return m_alarms;
-}
-
-void CAlarmMonitor::getAlarmRecords(std::list< CAlarm*>& list)
-{
-	Lock();
-	list = m_alarms;
-	Unlock();
 }
 
 BOOL CAlarmMonitor::compareData(const char* pScrData, const char* pTarData, int len)
@@ -270,11 +234,21 @@
 
 void CAlarmMonitor::addAlarmToHistoryRecord(CAlarm* pAlarm)
 {
+	// 加入数据库
+	AlarmManager::getInstance().addAlarm(
+		std::to_string(pAlarm->getId()).c_str(),
+		getAlarmText(pAlarm->getId()),
+		CToolUnits::timeToString2(pAlarm->getOnTime()).c_str(),
+		CToolUnits::timeToString2(pAlarm->getOffTime()).c_str());
+}
+
+BOOL CAlarmMonitor::addAlarming(CAlarm* pAlarm)
+{
+	auto iter = m_mapAlarming.find(pAlarm->getId());
+	if (iter != m_mapAlarming.end()) return FALSE;
+
 	pAlarm->addRef();
-	m_alarms.push_back(pAlarm);
-	if (m_alarms.size() > 1000) {
-		CAlarm* pTemp = m_alarms.front();
-		pTemp->release();
-		m_alarms.pop_front();
-	}
+	m_mapAlarming[pAlarm->getId()] = pAlarm;
+
+	return TRUE;
 }
\ No newline at end of file

--
Gitblit v1.9.3