From da9df9d46ed3fc50e0c03497bd9f76b8aa1a4595 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期三, 14 一月 2026 15:37:48 +0800
Subject: [PATCH] 1.修复以下问题: 作业前置条件不足导致 PJ 验证失败:onPRJobMultiCreate 调 CMaster::setProcessJobs,CProcessJob::validate 要求“当前没有其它 PJ”(issue 1000),且 carrierPresent/slotUsable 必须为真。只要本地还有未结批的 PJ/CJ 或载具/槽位状态未就绪(ID 未绑、Slot 未使能),Host 发送的 CreateMultiPJ 会直接被丢弃(返回 size=0),但当前代码没有向 Host 回 ACK/NAK,Host 会误以为创建成功。

---
 SourceCode/Bond/Servo/ProcessJob.h |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/Servo/ProcessJob.h b/SourceCode/Bond/Servo/ProcessJob.h
index eb20b84..bbc8926 100644
--- a/SourceCode/Bond/Servo/ProcessJob.h
+++ b/SourceCode/Bond/Servo/ProcessJob.h
@@ -8,6 +8,16 @@
 #include <chrono>
 #include <optional>
 
+
+
+struct PJWarp {
+    BOOL addToCj;
+    void* pj;
+    int port;
+    BOOL checkSlot[8];
+    int material[8];
+};
+
 namespace SERVO {
     /// PJ 生命周期(贴近 E40 常见状态)
     enum class PJState : uint8_t {
@@ -154,6 +164,10 @@
         // 追加一个载具
         void addCarrier(std::string carrierId, std::vector<uint8_t> slots);
 
+        // 设置载具slots和contexts
+        bool setCarrierSlotsAndContexts(std::string carrierId, std::vector<uint8_t> slots, std::vector<void*> contexts);
+        bool setCarrierContexts(std::string carrierId, std::vector<void*> contexts);
+
         // 访问器
         const std::vector<CarrierSlotInfo>& carriers() const noexcept { return m_carriers; }
         CarrierSlotInfo* getCarrier(const std::string& strId);
@@ -211,6 +225,22 @@
 
         // 错误列表
         std::vector<ValidationIssue> m_issues;
+
+        // 新增
+        std::string m_strLotId;
+        std::string m_strProductId;
+        std::string m_strOperationId;
+        PJWarp m_pjWarp;
+
+    public:
+        void setLotId(std::string strLotId);
+        std::string& getLotId();
+        void setProductId(std::string strProductId);
+        std::string& getProductId();
+        void setOperationId(std::string strOperationId);
+        std::string& getOperationId();
+        void setPjWarp(PJWarp pjWarp);
+        PJWarp& getPjWarp();
     };
 }
 

--
Gitblit v1.9.3