From 9e9e63ef44ff672989d7b78bf37afb2054267671 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 22 九月 2025 15:47:04 +0800
Subject: [PATCH] 1.完善工艺批次逻辑; 2.PortType保存到本地,不再同步到efem

---
 SourceCode/Bond/Servo/CMaster.cpp |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index d6831e5..960294c 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -1541,12 +1541,52 @@
 							carrier->contexts.push_back((void*)pGlass);
 							if (pGlass != nullptr) {
 								pGlass->setProcessJob(pj);
+
+								PJWarp& jpWarp = pj->getPjWarp();
+								int nRecipeID = RecipeManager::getInstance().getIdByPPID(pj->recipeSpec());
+								RecipeInfo stRecipeInfo = RecipeManager::getInstance().getRecipeByPPID(pj->recipeSpec());
+								std::vector<DeviceRecipe> vecRecipeInfo = stRecipeInfo.vecDeviceList;
+
+								pGlass->setScheduledForProcessing(jpWarp.checkSlot[slot-1]);
+								pGlass->setType(static_cast<SERVO::MaterialsType>(jpWarp.material[slot-1]));
+
+								SERVO::CJobDataS* pJobDataS = pGlass->getJobDataS();
+								if (pJobDataS != nullptr) {
+									SERVO::CJobDataS* pJobDataS = pGlass->getJobDataS();
+									pJobDataS->setLotId(pj->getLotId().c_str());
+									pJobDataS->setProductId(pj->getProductId().c_str());
+									pJobDataS->setOperationId(pj->getOperationId().c_str());
+									pJobDataS->setMaterialsType(jpWarp.material[slot - 1]);
+									pJobDataS->setMasterRecipe(nRecipeID);
+									for (const auto& info : vecRecipeInfo) {
+										const std::string& name = info.strDeviceName;
+										short nRecipeID = (short)info.nRecipeID;
+
+										if (name == EQ_NAME_EFEM) {
+											pJobDataS->setDeviceRecipeId(0, nRecipeID);
+										}
+										else if (name == EQ_NAME_BONDER1) {
+											pJobDataS->setDeviceRecipeId(1, nRecipeID);
+										}
+										else if (name == EQ_NAME_BONDER2) {
+											pJobDataS->setDeviceRecipeId(2, nRecipeID);
+										}
+										else if (name == EQ_NAME_BAKE_COOLING) {
+											pJobDataS->setDeviceRecipeId(3, nRecipeID);
+										}
+										else if (name == EQ_NAME_VACUUMBAKE) {
+											pJobDataS->setDeviceRecipeId(4, nRecipeID);
+										}
+										else if (name == EQ_NAME_MEASUREMENT) {
+											pJobDataS->setDeviceRecipeId(5, nRecipeID);
+										}
+									}
+
+								}
 							}
 						}
 					}
 				}
-
-
 			}
 			
 			if (m_listener.onLoadPortStatusChanged != nullptr) {
@@ -2271,12 +2311,20 @@
 		return 0;
 	}
 
-	void CMaster::setPortType(unsigned int index, BOOL enable, int type, int mode,
-		int cassetteType, int transferMode, BOOL autoChangeEnable)
+	void CMaster::setPortType(unsigned int index, int type)
 	{
 		ASSERT(index < 4);
 		int eqid[] = { EQ_ID_LOADPORT1, EQ_ID_LOADPORT2, EQ_ID_LOADPORT3, EQ_ID_LOADPORT4};
 		CLoadPort* pPort = (CLoadPort*)getEquipment(eqid[index]);
+		pPort->localSetPortType((SERVO::PortType)type);
+	}
+
+	void CMaster::setPortTypeEx(unsigned int index, BOOL enable, int type, int mode,
+		int cassetteType, int transferMode, BOOL autoChangeEnable)
+	{
+		ASSERT(index < 4);
+		int eqid[] = { EQ_ID_LOADPORT1, EQ_ID_LOADPORT2, EQ_ID_LOADPORT3, EQ_ID_LOADPORT4 };
+		CLoadPort* pPort = (CLoadPort*)getEquipment(eqid[index]);
 		pPort->localEanblePort(enable);
 		pPort->localSetPortType((SERVO::PortType)type);
 		pPort->localSetPortMode((SERVO::PortMode)mode);

--
Gitblit v1.9.3