From e9c66dce803984d9eb0c026df8f50ad196fd0650 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 22 七月 2025 16:20:25 +0800
Subject: [PATCH] 1.将原来的设置CassetteType更新到EFEM的功能,修改为本地保存,因为EFEM不需要这些数据; 2.配置是否需要比较map的一致性; 3.收到EFEM的PortStarus,INUSE状态时,弹出配置对话框;打勾选择要加工的产品;

---
 SourceCode/Bond/Servo/PortConfigurationDlg.cpp |  108 ++++++++++++++++++++++-------------------------------
 1 files changed, 45 insertions(+), 63 deletions(-)

diff --git a/SourceCode/Bond/Servo/PortConfigurationDlg.cpp b/SourceCode/Bond/Servo/PortConfigurationDlg.cpp
index b941707..891aaac 100644
--- a/SourceCode/Bond/Servo/PortConfigurationDlg.cpp
+++ b/SourceCode/Bond/Servo/PortConfigurationDlg.cpp
@@ -24,10 +24,16 @@
     m_pPort[1] = dynamic_cast<SERVO::CLoadPort*>(theApp.m_model.m_master.getEquipment(EQ_ID_LOADPORT2));
     m_pPort[2] = dynamic_cast<SERVO::CLoadPort*>(theApp.m_model.m_master.getEquipment(EQ_ID_LOADPORT3));
     m_pPort[3] = dynamic_cast<SERVO::CLoadPort*>(theApp.m_model.m_master.getEquipment(EQ_ID_LOADPORT4));
+    m_nCurSelPort = -1;
 }
 
 CPortConfigurationDlg::~CPortConfigurationDlg()
 {
+}
+
+void CPortConfigurationDlg::setCurSelPort(int sel)
+{
+    m_nCurSelPort = sel;
 }
 
 int CPortConfigurationDlg::GetLoadPortEqID(const std::string& strPortName)
@@ -57,19 +63,21 @@
             continue;
         }
 
-        SERVO::CGlass* pGlass = dynamic_cast<SERVO::CGlass*>(pSlot->getContext());
-        int nRow = i + 1;
 
         // 璁剧疆 Panel ID 鍜屽嬀閫夋
-        CGridCellCheck* pCheck = static_cast<CGridCellCheck*>(m_wndGrid.GetCell(nRow, 1));
-        if (pCheck && pGlass) {
-            pCheck->SetCheck(pSlot->isEnable() ? TRUE : FALSE);
-            pCheck->SetText(pGlass ? pGlass->getID().c_str() : _T(""));
+        SERVO::CGlass* pGlass = dynamic_cast<SERVO::CGlass*>(pSlot->getContext());
+        int nRow = i + 1;
+        if (pGlass != nullptr) {
+            m_wndGrid.SetItemState(nRow, 0, GVIS_READONLY);
+            m_wndGrid.SetItemText(nRow, 0, pSlot->getName().c_str());
+            m_wndGrid.SetCellType(nRow, 1, RUNTIME_CLASS(CGridCellCheck));
+            CGridCellCheck* pCheck = dynamic_cast<CGridCellCheck*>(m_wndGrid.GetCell(nRow, 1));
+            ASSERT(pCheck);
+            pCheck->SetCheck(pGlass->isScheduledForProcessing());
+            pCheck->SetText(pGlass->getID().c_str());
         }
-		else {
-			pCheck->SetCheck(FALSE);
-			pCheck->SetText(_T(""));
-		}
+        m_wndGrid.SetItemData(nRow, 0, (LPARAM)pGlass);
+
 
         // 鍥炲~ Job 淇℃伅锛堝彧鍙栫涓�涓湁鏁� Glass锛�
         if (!bJobInfoSet && pGlass) {
@@ -138,33 +146,6 @@
     for (int i = 0; i < nRows; ++i) {
         m_wndGrid.SetRowHeight(i, nEachRowHeight);
     }
-
-    FillGrid();
-}
-
-void CPortConfigurationDlg::FillGrid()
-{
-    //CStringArray recipeOptions;
-    //recipeOptions.Add(_T("Recipe A"));
-    //recipeOptions.Add(_T("Recipe B"));
-    //recipeOptions.Add(_T("Recipe C"));
-
-    for (int i = 1; i < 9; ++i) {
-        CString strIndex;
-        strIndex.Format(_T("%d"), i);
-        m_wndGrid.SetItemText(i, 0, strIndex);
-        m_wndGrid.SetItemState(i, 0, GVIS_READONLY);
-
-        // Checkbox
-        m_wndGrid.SetCellType(i, 1, RUNTIME_CLASS(CGridCellCheck));
-        CGridCellCheck* pCheck = static_cast<CGridCellCheck*>(m_wndGrid.GetCell(i, 1));
-        if (pCheck) {
-            pCheck->SetCheck(FALSE);
-        }
-    }
-
-    m_wndGrid.Invalidate();
-    m_wndGrid.UpdateWindow();
 }
 
 void CPortConfigurationDlg::DoDataExchange(CDataExchange* pDX)
@@ -195,7 +176,13 @@
     for (const auto& item : ports) {
         m_comboPort.AddString(item);
     }
-    m_comboPort.SetCurSel(0); // 榛樿閫夋嫨绗竴涓鍙�
+    if (0 <= m_nCurSelPort && m_nCurSelPort <= 3) {
+        m_comboPort.SetCurSel(m_nCurSelPort);
+        m_comboPort.EnableWindow(FALSE);
+    }
+    else {
+        m_comboPort.SetCurSel(0);
+    }
 
     // 鍒濆鍖栭厤鏂逛笅鎷夋鍐呭
     std::vector<std::string> vecRecipe = RecipeManager::getInstance().getAllPPID();
@@ -216,7 +203,15 @@
 	LoadPortConfigToUI(m_pPort[0]);     // 榛樿鍔犺浇绗竴涓鍙g殑閰嶇疆
 
 	// 璁剧疆瀵硅瘽妗嗘爣棰�
-	SetWindowText(_T("Port Configuration"));
+    if (0 <= m_nCurSelPort && m_nCurSelPort <= 3) {
+        CString strTitle;
+        strTitle.Format(_T("%s Configuration"), ports[m_nCurSelPort]);
+        SetWindowText(strTitle);
+    }
+    else {
+        SetWindowText(_T("Port Configuration"));
+    }
+
 
 	return TRUE;  // return TRUE unless you set the focus to a control
 	// 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
@@ -290,34 +285,21 @@
 
     // 鑾峰彇 Grid 琛ㄦ牸涓� Slot 鐘舵�侊紙绗�1~8琛岋級
     for (int i = 1; i <= 8; ++i) {
-        SERVO::SlotConfig slot;
-        slot.nSlotID = i;
+        SERVO::CGlass* pGlass = (SERVO::CGlass*)m_wndGrid.GetItemData(i, 0);
+        if (pGlass != nullptr) {
+            CGridCellCheck* pCheck = dynamic_cast<CGridCellCheck*>(m_wndGrid.GetCell(i, 1));
+            ASSERT(pCheck);
+            pGlass->setScheduledForProcessing(pCheck->GetCheck());
+            pGlass->setType(static_cast<SERVO::MaterialsType>(config.nMaterialType));
 
-        CGridCellCheck* pCheck = static_cast<CGridCellCheck*>(m_wndGrid.GetCell(i, 1));
-        if (pCheck) {
-            slot.isEnabled = pCheck->GetCheck();
+            SERVO::CJobDataS* pJobDataS = pGlass->getJobDataS();
+            pJobDataS->setLotId(config.strLotID.c_str());
+            pJobDataS->setProductId(config.strProductID.c_str());
+            pJobDataS->setOperationId(config.strOperationID.c_str());
+            pJobDataS->setMaterialsType(config.nMaterialType);
         }
-
-        config.vecSlot.push_back(slot);
     }
 
-    int nEqID = GetLoadPortEqID(config.strPortName);
-    if (nEqID < 0) {
-        AfxMessageBox(_T("鏈煡鐨勭鍙e悕绉帮紒"));
-        return;
-    }
-
-    SERVO::CLoadPort* pPort = dynamic_cast<SERVO::CLoadPort*>(theApp.m_model.m_master.getEquipment(nEqID));
-    if (!pPort) {
-        AfxMessageBox(_T("鎵句笉鍒板搴旂殑 LoadPort 璁惧锛�"));
-        return;
-    }
-
-    // 搴旂敤閰嶇疆锛堜緥濡傛祴璇曠敓鎴愮幓鐠冿級
-    if (pPort->testGenerateGlassListFromConfig(config) < 0) {
-		AfxMessageBox(_T("Failed to generate glass list from configuration!"));
-        return;
-	}
 
     OnOK();
 }
\ No newline at end of file

--
Gitblit v1.9.3