From 3e0ceaf4e569ea1f57a14de2f6135d1f1a50d080 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 27 八月 2025 13:47:31 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang

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

diff --git a/SourceCode/Bond/EAPSimulator/CPJsDlg.cpp b/SourceCode/Bond/EAPSimulator/CPJsDlg.cpp
new file mode 100644
index 0000000..212291f
--- /dev/null
+++ b/SourceCode/Bond/EAPSimulator/CPJsDlg.cpp
@@ -0,0 +1,161 @@
+锘�// CPJsDlg.cpp: 瀹炵幇鏂囦欢
+//
+
+#include "pch.h"
+#include "EAPSimulator.h"
+#include "CPJsDlg.h"
+#include "afxdialogex.h"
+
+
+// CPJsDlg 瀵硅瘽妗�
+
+IMPLEMENT_DYNAMIC(CPJsDlg, CDialogEx)
+
+CPJsDlg::CPJsDlg(CWnd* pParent /*=nullptr*/)
+	: CDialogEx(IDD_DIALOG_PJS, pParent)
+{
+
+}
+
+CPJsDlg::~CPJsDlg()
+{
+	for (auto item : m_pjs) {
+		delete item;
+	}
+	m_pjs.clear();
+}
+
+void CPJsDlg::DoDataExchange(CDataExchange* pDX)
+{
+	CDialogEx::DoDataExchange(pDX);
+}
+
+
+BEGIN_MESSAGE_MAP(CPJsDlg, CDialogEx)
+	ON_BN_CLICKED(IDC_BUTTON_ADD, &CPJsDlg::OnBnClickedButtonAdd)
+	ON_BN_CLICKED(IDC_BUTTON_DELETE, &CPJsDlg::OnBnClickedButtonDelete)
+	ON_BN_CLICKED(IDC_BUTTON_SEND, &CPJsDlg::OnBnClickedButtonSend)
+END_MESSAGE_MAP()
+
+
+// CPJsDlg 娑堟伅澶勭悊绋嬪簭
+
+
+void CPJsDlg::OnBnClickedButtonAdd()
+{
+	// TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜
+}
+
+void CPJsDlg::OnBnClickedButtonDelete()
+{
+	CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1);
+	int nSel = pListCtrl->GetNextItem(-1, LVNI_SELECTED);
+
+	if (nSel != -1) {
+		SERVO::CProcessJob* pj = (SERVO::CProcessJob*)pListCtrl->GetItemData(nSel);
+		for (auto iter = m_pjs.begin(); iter != m_pjs.end(); ++iter) {
+			if (*iter == pj) {
+				delete (*iter);
+				m_pjs.erase(iter);
+				break;
+			}
+		}
+	}
+
+	pListCtrl->DeleteItem(nSel);
+}
+
+void CPJsDlg::OnBnClickedButtonSend()
+{
+	theApp.m_model.m_pHsmsActive->hsmsPRJobMultiCreate(m_pjs);
+}
+
+BOOL CPJsDlg::OnInitDialog()
+{
+	CDialogEx::OnInitDialog();
+
+	
+	// 鎶ヨ〃鎺т欢
+	CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1);
+	DWORD dwStyle = pListCtrl->GetExtendedStyle();
+	dwStyle |= LVS_EX_FULLROWSELECT;
+	dwStyle |= LVS_EX_GRIDLINES;
+	pListCtrl->SetExtendedStyle(dwStyle);
+
+	HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1);
+	ListView_SetImageList(pListCtrl->GetSafeHwnd(), imageList, LVSIL_SMALL);
+	pListCtrl->InsertColumn(0, _T(""), LVCFMT_RIGHT, 0);
+	pListCtrl->InsertColumn(1, _T("PJ ID"), LVCFMT_LEFT, 100);
+	pListCtrl->InsertColumn(2, _T("Carrier1 & Slots"), LVCFMT_LEFT, 180);
+	pListCtrl->InsertColumn(3, _T("Carrier2 & Slots"), LVCFMT_LEFT, 180);
+	pListCtrl->InsertColumn(4, _T("Carrier3 & Slots"), LVCFMT_LEFT, 180);
+	pListCtrl->InsertColumn(5, _T("Carrier4 & Slots"), LVCFMT_LEFT, 180);
+	pListCtrl->InsertColumn(6, _T("PPID"), LVCFMT_LEFT, 180);
+
+
+
+	// 鍒涘缓鐢ㄤ簬娴嬭瘯鐨凱J
+	{
+		SERVO::CProcessJob* pj = new SERVO::CProcessJob("PJ0001");
+		std::vector<uint8_t> slots1{ 1, 2, 3 };
+		pj->addCarrier("CID1001", slots1);
+		pj->setRecipe(SERVO::RecipeMethod::NoTuning, "P1001");
+		m_pjs.push_back(pj);
+	}
+	{
+		SERVO::CProcessJob* pj = new SERVO::CProcessJob("PJ0002");
+		std::vector<uint8_t> slots1{ 1, 3 };
+		pj->addCarrier("CID1002", slots1);
+		std::vector<uint8_t> slots2{ 1};
+		pj->addCarrier("CID1003", slots2);
+		pj->setRecipe(SERVO::RecipeMethod::NoTuning, "R002");
+		m_pjs.push_back(pj);
+	}
+	{
+		SERVO::CProcessJob* pj = new SERVO::CProcessJob("PJ0003");
+		std::vector<uint8_t> slots1{ 1, 2, 3, 5 };
+		pj->addCarrier("CID1004", slots1);
+		pj->setRecipe(SERVO::RecipeMethod::NoTuning, "P1001");
+		m_pjs.push_back(pj);
+	}
+
+	// 鏄剧ず鍒版姤琛ㄤ腑
+	for (auto item : m_pjs) {
+		AddPjToListCtrl(item);
+	}
+
+
+	return TRUE;  // return TRUE unless you set the focus to a control
+				  // 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
+}
+
+void CPJsDlg::AddPjToListCtrl(SERVO::CProcessJob* pj)
+{
+	CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1);
+	pListCtrl->InsertItem(0, _T(""));
+	pListCtrl->SetItemData(0, (DWORD_PTR)pj);
+	pListCtrl->SetItemText(0, 1, pj->id().c_str());
+	pListCtrl->SetItemText(0, 6, pj->recipeSpec().c_str());
+
+	auto carries = pj->carriers();
+	for (int i = 0; i < min(4, carries.size()); i++) {
+		pListCtrl->SetItemText(0, 2 + i, GetFormatString(carries[i]));		;
+	}
+}
+
+CString CPJsDlg::GetFormatString(SERVO::CarrierSlotInfo& csi)
+{
+	CString strRet;
+	strRet.Append(csi.carrierId.c_str());
+	strRet.Append("<");
+	int size = min(8, csi.slots.size());
+	for (int i = 0; i < size; i++) {
+		strRet.Append(std::to_string(csi.slots[i]).c_str());
+		if (i != size - 1) {
+			strRet.Append(",");
+		}
+	}
+	strRet.Append(">");
+
+	return strRet;
+}
\ No newline at end of file

--
Gitblit v1.9.3