From 7203ac92219156addaa0d4b6e6a9d81b5ffe8a13 Mon Sep 17 00:00:00 2001
From: Darker <mr.darker@163.com>
Date: 星期三, 26 二月 2025 09:56:59 +0800
Subject: [PATCH] 1. 添加报警对话框的按钮 2. 接受报警消息,并获取数据添加到数据库和显示在界面列表

---
 SourceCode/Bond/Servo/AlarmDlg.cpp |   71 +++++++++++++++++++++++++++++------
 1 files changed, 59 insertions(+), 12 deletions(-)

diff --git a/SourceCode/Bond/Servo/AlarmDlg.cpp b/SourceCode/Bond/Servo/AlarmDlg.cpp
index 4da1912..121451a 100644
--- a/SourceCode/Bond/Servo/AlarmDlg.cpp
+++ b/SourceCode/Bond/Servo/AlarmDlg.cpp
@@ -6,6 +6,7 @@
 #include "afxdialogex.h"
 #include "AlarmDlg.h"
 #include "AlarmManager.h"
+#include "Common.h"
 
 #define PAGE_SIZE						10
 #define PAGE_BACKGROUND_COLOR			RGB(252, 252, 255)
@@ -48,18 +49,41 @@
 			// onNext
 			pAny->addRef();
 			int code = pAny->getCode();
-			//if (RX_CODE_ALARM_ON == code) {
-			//	CAlarm* pAlarm;
-			//	if (pAny->getObject("obj", (IRxObject*&)pAlarm)) {
-			//		AddAlarm(nullptr, pAlarm);
-			//	}
-			//}
-			//else if (RX_CODE_ALARM_OFF == code) {
-			//	CAlarm* pAlarm;
-			//	if (pAny->getObject("obj", (IRxObject*&)pAlarm)) {
-			//		UpdateAlarm(nullptr, pAlarm);
-			//	}
-			//}
+
+			if (RX_CODE_STEP_EVENT_READDATA == code) {
+				LOGI("<CAlarmDlg> Accept RX_CODE_STEP_EVENT_READDATA successfully!");
+				// 閫氱煡璁惧鐘舵��
+				SERVO::CEqAlarmStep* pStep = nullptr;
+				if (pAny->getPtrValue("ptr", (void*&)pStep)) {
+					if (pStep != nullptr) {
+						// 鑾峰彇 AlarmManager 鍗曚緥
+						AlarmManager& alarmManager = AlarmManager::getInstance();
+
+						// 浠� pStep 鑾峰彇闇�瑕佺殑鍙傛暟锛屽亣璁捐繖浜涘�兼槸浠� pStep 涓幏鍙栫殑
+						std::string id = std::to_string(pStep->getAlarmId());
+						std::string deviceName = std::to_string(pStep->getUnitId());
+						std::string description = pStep->getText();
+						std::string startTime = "2025-02-25 10:00";
+						std::string endTime = "2025-02-25 12:00";
+
+						// 鎻掑叆鍒楄〃鎺т欢
+						CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_ALARM);
+						if (pListCtrl != nullptr) {
+							InsertAlarmData(pListCtrl, id.c_str(), deviceName.c_str(), description.c_str(), startTime.c_str(), endTime.c_str());
+						}
+
+						// 璋冪敤 addAlarm 娣诲姞鏂扮殑 Alarm
+						bool result = alarmManager.addAlarm(id, deviceName, description, startTime, endTime);
+						if (result) {
+							LOGI("<CAlarmDlg> Alarm added successfully!");
+						}
+						else {
+							LOGI("<CAlarmDlg> Failed to add alarm.");
+						}
+					}
+				}
+			}
+
 
 		pAny->release();
 		}, [&]() -> void {
@@ -174,6 +198,29 @@
 	}
 }
 
+void CAlarmDlg::InsertAlarmData(CListCtrl* pListCtrl, const CString& alarmId, const CString& deviceName, const CString& description, const CString& startTime, const CString& endTime)
+{
+	int nRowCount = pListCtrl->GetItemCount();
+	if (nRowCount >= PAGE_SIZE) {
+		pListCtrl->DeleteItem(nRowCount - 1);
+	}
+
+	int nNewItem = pListCtrl->InsertItem(0, _T(""));
+	pListCtrl->SetItemText(nNewItem, 1, alarmId);       // 璀﹀憡ID
+	pListCtrl->SetItemText(nNewItem, 2, deviceName);    // 璁惧鍚嶇О
+	pListCtrl->SetItemText(nNewItem, 3, description);   // 鎻忚堪
+	pListCtrl->SetItemText(nNewItem, 4, startTime);     // 鍙戠敓鏃堕棿
+	pListCtrl->SetItemText(nNewItem, 5, endTime);       // 瑙i櫎鏃堕棿
+
+	// 閲嶆柊璋冩暣鍒楀
+	pListCtrl->SetColumnWidth(0, LVSCW_AUTOSIZE);
+	pListCtrl->SetColumnWidth(1, LVSCW_AUTOSIZE);
+	pListCtrl->SetColumnWidth(2, LVSCW_AUTOSIZE);
+	pListCtrl->SetColumnWidth(3, LVSCW_AUTOSIZE);
+	pListCtrl->SetColumnWidth(4, LVSCW_AUTOSIZE);
+	pListCtrl->SetColumnWidth(5, LVSCW_AUTOSIZE);
+}
+
 void CAlarmDlg::DoDataExchange(CDataExchange* pDX)
 {
 	DDX_Control(pDX, IDC_DATETIMEPICKER_START, m_dateTimeStart);

--
Gitblit v1.9.3