From 549e14363badd7e33f497897ea5a2454e1a1f7a1 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期六, 20 九月 2025 16:16:16 +0800
Subject: [PATCH] 1.续费完善批工艺;

---
 SourceCode/Bond/Servo/CMaster.cpp |   41 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 7b2da65..d6831e5 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -1481,7 +1481,7 @@
 									m_listener.onCjEnd(this, pJob);
 								}
 
-								completeControlJob("工艺正常完成");
+								completeControlJob();
 							}
 						}
 					}
@@ -1535,6 +1535,7 @@
 				for (auto pj : pjs) {
 					auto carrier = pj->getCarrier(pPort->getCassetteId());
 					if (carrier != nullptr) {
+						carrier->contexts.clear();
 						for (auto slot : carrier->slots) {
 							CGlass* pGlass = pPort->getGlassFromSlot(slot);
 							carrier->contexts.push_back((void*)pGlass);
@@ -2781,7 +2782,43 @@
 	}
 
 
-	bool CMaster::completeControlJob(std::string description)
+	bool CMaster::completeControlJob()
+	{
+		if (m_pControlJob == nullptr) {
+			return false;
+		}
+		for (auto item : m_processJobs) {
+			if (item->state() != PJState::Completed) return false;
+		}
+		if (m_pControlJob->state() != CJState::Completed)
+			return false;
+
+
+
+		// 释放Job相关
+		for (auto item : m_processJobs) {
+			delete item;
+		}
+		m_processJobs.clear();
+		if (m_pControlJob != nullptr) {
+			delete m_pControlJob;
+			m_pControlJob = nullptr;
+		}
+
+		// 注意要释放引用
+		m_inProcesJobs.clear();
+		m_completeProcessJobs.clear();
+		m_queueGlasses.clear();
+		m_inProcesGlasses.clear();
+		m_completeGlasses.clear();
+
+
+		saveState();
+
+		return true;
+	}
+
+	bool CMaster::forceCompleteControlJob(std::string description)
 	{
 		if (m_pControlJob == nullptr || m_state != SERVO::MASTERSTATE::READY) {
 			return false;

--
Gitblit v1.9.3