From c928b27306747319c3692879ab30d2508ca00ffc Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期五, 14 十一月 2025 11:35:22 +0800
Subject: [PATCH] 1.修复Job完成后未转移导致不能进行下一job的问题;
---
SourceCode/Bond/Servo/ProcessJob.cpp | 94 ++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 85 insertions(+), 9 deletions(-)
diff --git a/SourceCode/Bond/Servo/ProcessJob.cpp b/SourceCode/Bond/Servo/ProcessJob.cpp
index b672e27..184b298 100644
--- a/SourceCode/Bond/Servo/ProcessJob.cpp
+++ b/SourceCode/Bond/Servo/ProcessJob.cpp
@@ -7,9 +7,12 @@
namespace SERVO {
static inline std::string trimCopy(std::string s) {
- auto notspace = [](int ch) { return !std::isspace(ch); };
- s.erase(s.begin(), std::find_if(s.begin(), s.end(), notspace));
- s.erase(std::find_if(s.rbegin(), s.rend(), notspace).base(), s.end());
+ s.erase(s.begin(),
+ std::find_if(s.begin(), s.end(),
+ [](char c) { return !std::isspace(static_cast<unsigned char>(c)); }));
+ s.erase(std::find_if(s.rbegin(), s.rend(),
+ [](char c) { return !std::isspace(static_cast<unsigned char>(c)); }).base(),
+ s.end());
return s;
}
@@ -21,6 +24,12 @@
CProcessJob::CProcessJob(std::string pjId)
: m_pjId(trimCopy(pjId))
{
+ clampString(m_pjId, MAX_ID_LEN);
+ }
+
+ void CProcessJob::setId(std::string& id)
+ {
+ m_pjId = trimCopy(id);
clampString(m_pjId, MAX_ID_LEN);
}
@@ -61,7 +70,7 @@
m_pauseEvents.erase(std::unique(m_pauseEvents.begin(), m_pauseEvents.end()), m_pauseEvents.end());
}
- const std::vector<CProcessJob::ValidationIssue>& CProcessJob::issues()
+ const std::vector<CProcessJob::ValidationIssue>& CProcessJob::issues() const
{
return m_issues;
}
@@ -177,9 +186,11 @@
return true;
}
- bool CProcessJob::abort() {
+ bool CProcessJob::abort(std::string reason) {
if (m_state == PJState::Completed || m_state == PJState::Aborted || m_state == PJState::Failed)
return false;
+ m_failReason = trimCopy(reason);
+ clampString(m_failReason, 128);
m_state = PJState::Aborted;
markEnd();
return true;
@@ -266,6 +277,31 @@
}
}
+ bool CProcessJob::setCarrierSlotsAndContexts(std::string carrierId, std::vector<uint8_t> slots, std::vector<void*> contexts)
+ {
+ for (auto& c : m_carriers) {
+ if (c.carrierId.compare(carrierId) == 0) {
+ c.slots = std::move(slots);
+ c.contexts = std::move(contexts);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ bool CProcessJob::setCarrierContexts(std::string carrierId, std::vector<void*> contexts)
+ {
+ for (auto& c : m_carriers) {
+ if (c.carrierId.compare(carrierId) == 0) {
+ c.contexts = std::move(contexts);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
// --------- 核心:serialize/deserialize ---------
void CProcessJob::serialize(std::ostream& os) const {
// 头
@@ -278,7 +314,7 @@
// 配方
uint8_t recipeType = static_cast<uint8_t>(m_recipeMethod);
- write_pod(os, m_recipeMethod);
+ write_pod(os, recipeType);
write_string(os, m_recipeSpec);
// 物料(多 Carrier & Slot)
@@ -399,13 +435,13 @@
return "InProcess";
break;
case SERVO::PJState::Paused:
- return "Queued";
+ return "Paused";
break;
case SERVO::PJState::Aborting:
return "Aborting";
break;
case SERVO::PJState::Completed:
- return "Queued";
+ return "Completed";
break;
case SERVO::PJState::Aborted:
return "Aborted";
@@ -420,7 +456,7 @@
return "";
}
- CarrierSlotInfo* CProcessJob::getCarrier(std::string& strId)
+ CarrierSlotInfo* CProcessJob::getCarrier(const std::string& strId)
{
for (auto& item : m_carriers) {
if (item.carrierId.compare(strId) == 0) {
@@ -430,4 +466,44 @@
return nullptr;
}
+
+ void CProcessJob::setLotId(std::string strLotId)
+ {
+ m_strLotId = strLotId;
+ }
+
+ std::string& CProcessJob::getLotId()
+ {
+ return m_strLotId;
+ }
+
+ void CProcessJob::setProductId(std::string strProductId)
+ {
+ m_strProductId = strProductId;
+ }
+
+ std::string& CProcessJob::getProductId()
+ {
+ return m_strProductId;
+ }
+
+ void CProcessJob::setOperationId(std::string strOperationId)
+ {
+ m_strOperationId = strOperationId;
+ }
+
+ std::string& CProcessJob::getOperationId()
+ {
+ return m_strOperationId;
+ }
+
+ void CProcessJob::setPjWarp(PJWarp pjWarp)
+ {
+ m_pjWarp = pjWarp;
+ }
+
+ PJWarp& CProcessJob::getPjWarp()
+ {
+ return m_pjWarp;
+ }
}
--
Gitblit v1.9.3