From e51c6d1360f9679dd8e4dd3379ce0db1886badbf Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 28 七月 2025 17:36:57 +0800
Subject: [PATCH] Merge branch 'EAPSimulator' into clh

---
 SourceCode/Bond/EAPSimulator/CDefineReportsDlg.cpp |  193 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 193 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/EAPSimulator/CDefineReportsDlg.cpp b/SourceCode/Bond/EAPSimulator/CDefineReportsDlg.cpp
new file mode 100644
index 0000000..5ff5f39
--- /dev/null
+++ b/SourceCode/Bond/EAPSimulator/CDefineReportsDlg.cpp
@@ -0,0 +1,193 @@
+锘�// CDefineReportsDlg.cpp: 瀹炵幇鏂囦欢
+//
+
+#include "pch.h"
+#include "EAPSimulator.h"
+#include "CDefineReportsDlg.h"
+#include "afxdialogex.h"
+#include "CAddIDSDlg.h"
+
+
+// CDefineReportsDlg 瀵硅瘽妗�
+
+IMPLEMENT_DYNAMIC(CDefineReportsDlg, CDialogEx)
+
+CDefineReportsDlg::CDefineReportsDlg(CWnd* pParent /*=nullptr*/)
+	: CDialogEx(IDD_DIALOG_DEFINE_REPORTS, pParent)
+{
+
+}
+
+CDefineReportsDlg::~CDefineReportsDlg()
+{
+}
+
+void CDefineReportsDlg::DoDataExchange(CDataExchange* pDX)
+{
+	CDialogEx::DoDataExchange(pDX);
+}
+
+
+BEGIN_MESSAGE_MAP(CDefineReportsDlg, CDialogEx)
+	ON_BN_CLICKED(IDC_BUTTON_ADD_RPTID, &CDefineReportsDlg::OnBnClickedButtonAddRptid)
+	ON_LBN_SELCHANGE(IDC_LIST1, &CDefineReportsDlg::OnLbnSelchangeList1)
+	ON_BN_CLICKED(IDC_BUTTON_DEL_REPORT, &CDefineReportsDlg::OnBnClickedButtonDelReport)
+	ON_BN_CLICKED(IDC_BUTTON_ADD_VID, &CDefineReportsDlg::OnBnClickedButtonAddVid)
+	ON_LBN_SELCHANGE(IDC_LIST2, &CDefineReportsDlg::OnLbnSelchangeList2)
+	ON_BN_CLICKED(IDC_BUTTON_DEL_VID, &CDefineReportsDlg::OnBnClickedButtonDelVid)
+	ON_BN_CLICKED(IDC_BUTTON_SEND, &CDefineReportsDlg::OnBnClickedButtonSend)
+END_MESSAGE_MAP()
+
+
+// CDefineReportsDlg 娑堟伅澶勭悊绋嬪簭
+void CDefineReportsDlg::OnBnClickedButtonAddRptid()
+{
+	CAddIDSDlg dlg;
+	dlg.SetTitle("RPTID");
+	dlg.DoModal();
+	int PRTID = dlg.GetId();
+	addReport(PRTID);
+}
+
+void CDefineReportsDlg::OnBnClickedButtonAddVid()
+{
+	CString strReportId;
+	CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
+	int nSel = pListBox->GetCurSel();
+	if (nSel >= 0) {
+		pListBox->GetText(nSel, strReportId);
+		int RPTID = atoi(strReportId);
+
+		CAddIDSDlg dlg;
+		dlg.SetTitle("RPTID");
+		dlg.DoModal();
+		unsigned int VID = dlg.GetId();;
+		addVid(RPTID, VID);
+	}
+
+
+}
+
+void CDefineReportsDlg::OnLbnSelchangeList1()
+{
+	CString strReportId;
+	int RPTID = -1;
+	CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
+	int nSel = pListBox->GetCurSel();
+	if (nSel >= 0) {
+		pListBox->GetText(nSel, strReportId);
+		RPTID = atoi(strReportId);
+	}
+
+	GetDlgItem(IDC_BUTTON_DEL_REPORT)->EnableWindow(nSel >= 0);
+	GetDlgItem(IDC_BUTTON_ADD_VID)->EnableWindow(nSel >= 0);
+
+	CListBox* pListBox2 = (CListBox*)GetDlgItem(IDC_LIST2);
+	pListBox2->ResetContent();
+	auto iter = m_mapReport.find(RPTID);
+	if (iter != m_mapReport.end()) {
+		auto& vids = m_mapReport[RPTID];
+		for (auto item : vids) {
+			pListBox2->AddString(std::to_string(item).c_str());
+		}
+	}
+}
+
+void CDefineReportsDlg::OnBnClickedButtonDelReport()
+{
+	CString strReportId;
+	CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
+	int nSel = pListBox->GetCurSel();
+	if (nSel >= 0) {
+		pListBox->GetText(nSel, strReportId);
+		int RPTID = atoi(strReportId);
+		delReport(RPTID);
+		pListBox->DeleteString(nSel);
+		((CListBox*)GetDlgItem(IDC_LIST2))->ResetContent();
+	}
+
+	nSel = pListBox->GetCurSel();
+	GetDlgItem(IDC_BUTTON_DEL_REPORT)->EnableWindow(nSel >= 0);
+	GetDlgItem(IDC_BUTTON_ADD_VID)->EnableWindow(nSel >= 0);
+}
+
+void CDefineReportsDlg::OnLbnSelchangeList2()
+{
+	CListBox* pListBox2 = (CListBox*)GetDlgItem(IDC_LIST2);
+	int nSel = pListBox2->GetCurSel();
+	GetDlgItem(IDC_BUTTON_DEL_VID)->EnableWindow(nSel >= 0);
+}
+
+void CDefineReportsDlg::OnBnClickedButtonDelVid()
+{
+	CString strRPTID, strVID;
+	CListBox* pListBox1 = (CListBox*)GetDlgItem(IDC_LIST1);
+	CListBox* pListBox2 = (CListBox*)GetDlgItem(IDC_LIST2);
+	int nSel1 = pListBox1->GetCurSel();
+	int nSel2 = pListBox2->GetCurSel();
+	if (nSel1 >= 0 && nSel2 >= 0) {
+		pListBox1->GetText(nSel1, strRPTID);
+		pListBox2->GetText(nSel2, strVID);
+		int RPTID = atoi(strRPTID);
+		int VID = atoi(strVID);
+		delVid(RPTID, VID);
+		pListBox2->DeleteString(nSel2);
+	}
+
+	nSel2 = pListBox2->GetCurSel();
+	GetDlgItem(IDC_BUTTON_DEL_VID)->EnableWindow(nSel2 >= 0);
+}
+
+void CDefineReportsDlg::addReport(int RPTID)
+{
+	auto iter = m_mapReport.find(RPTID);
+	if (iter == m_mapReport.end()) {
+		std::vector<unsigned int> vids;
+		m_mapReport[RPTID] = vids;
+	}
+
+	CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
+	pListBox->AddString(std::to_string(RPTID).c_str());
+}
+
+bool CDefineReportsDlg::addVid(unsigned int RPTID, unsigned int vid)
+{
+	auto iter = m_mapReport.find(RPTID);
+	if (iter == m_mapReport.end()) {
+		return false;
+	}
+
+	auto& vids = m_mapReport[RPTID];
+	vids.push_back(vid);
+	CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST2);
+	pListBox->AddString(std::to_string(vid).c_str());
+
+	return true;
+}
+
+void CDefineReportsDlg::delReport(int RPTID)
+{
+	auto iter = m_mapReport.find(RPTID);
+	if (iter != m_mapReport.end()) {
+		m_mapReport.erase(iter);
+	}
+}
+
+void CDefineReportsDlg::delVid(int RPTID, int VID)
+{
+	auto iter = m_mapReport.find(RPTID);
+	if (iter != m_mapReport.end()) {
+		auto& vids = iter->second;
+		for (auto iter2 = vids.begin(); iter2 != vids.end(); iter2++) {
+			if ((*iter2) == VID) {
+				vids.erase(iter2);
+				break;
+			}
+		}
+	}
+}
+
+void CDefineReportsDlg::OnBnClickedButtonSend()
+{
+	theApp.m_model.m_pHsmsActive->hsmsDefineReports(m_mapReport);
+}

--
Gitblit v1.9.3