From 867888458abdc029cbf31b6058edfefe30a20722 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期四, 12 二月 2026 16:38:24 +0800
Subject: [PATCH] 1.修复重启后,由于PJ不是列队中,导致无法创建调度任务的问题。 2.修复CPjPage2点Port2的物料类型,Port1也跟着变的问题。
---
SourceCode/Bond/Servo/CMaster.cpp | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 62a6733..cbdcc22 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -3769,6 +3769,33 @@
}
m_pControlJob->setPJs(tempPjs);
+ // 閲嶅缓杩愯鎬佺紦瀛橈紝閬垮厤閲嶅惎鍚庝粎渚濊禆 Queued 閫夋嫨瀵艰嚧鎵句笉鍒板綋鍓� PJ銆�
+ m_inProcesJobs.clear();
+ m_completeProcessJobs.clear();
+ m_queueGlasses.clear();
+ m_inProcesGlasses.clear();
+ m_completeGlasses.clear();
+ for (auto pj : tempPjs) {
+ if (pj == nullptr) continue;
+ switch (pj->state()) {
+ case PJState::InProcess:
+ case PJState::Paused:
+ m_inProcesJobs.push_back(pj);
+ break;
+ case PJState::Completed:
+ case PJState::Aborted:
+ case PJState::Failed:
+ m_completeProcessJobs.push_back(pj);
+ break;
+ default:
+ break;
+ }
+ }
+ LOGI("<Master>loadState: ProcessJob rebuild done. total=%d, inProcess=%d, complete=%d",
+ (int)tempPjs.size(),
+ (int)m_inProcesJobs.size(),
+ (int)m_completeProcessJobs.size());
+
// 鏇存柊contexts
auto pjs = m_pControlJob->getPjs();
@@ -3801,14 +3828,25 @@
CProcessJob* CMaster::acquireNextProcessJob()
{
+ if (m_pControlJob == nullptr) return nullptr;
auto& pjs = m_pControlJob->getPjs();
for (const auto pj : pjs) {
if (pj->state() == PJState::Queued) {
+ LOGI("<Master>acquireNextProcessJob: start queued PJ(%s)", pj->id().c_str());
pj->start();
return pj;
}
}
+ // 鑻ユ病鏈� Queued锛岀户缁鐢ㄥ凡缁忓湪鍒�/鏆傚仠鐨� PJ锛堜緥濡� loadState 鎭㈠鍚庣殑鍦烘櫙锛夈��
+ for (const auto pj : pjs) {
+ if (pj->state() == PJState::InProcess || pj->state() == PJState::Paused) {
+ LOGI("<Master>acquireNextProcessJob: reuse PJ(%s), state=%d",
+ pj->id().c_str(), (int)pj->state());
+ return pj;
+ }
+ }
+
return nullptr;
}
--
Gitblit v1.9.3