From e8a27bb203fe2aff70390a5eca002d7438da9b0f Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 22 十月 2025 14:24:34 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang

---
 SourceCode/Bond/Servo/ProcessJob.h |   37 ++++++++++++++++++++++++++++++++++---
 1 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/SourceCode/Bond/Servo/ProcessJob.h b/SourceCode/Bond/Servo/ProcessJob.h
index 1300b46..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 {
@@ -90,6 +100,7 @@
         explicit CProcessJob(std::string pjId);
 
         const std::string& id() const noexcept { return m_pjId; }
+        void setId(std::string& id);
         const std::string& parentCjId() const noexcept { return m_parentCjId; }
         PJState state() const noexcept { return m_state; }
         StartPolicy startPolicy() const noexcept { return m_startPolicy; }
@@ -121,7 +132,7 @@
         };
         // 返回问题清单(空=通过)
         bool validate(const IResourceView& rv);
-        const std::vector<ValidationIssue>& issues();
+        const std::vector<ValidationIssue>& issues() const;
 
         // —— 状态机(带守卫)——
         bool queue();           // NoState -> Queued
@@ -130,7 +141,7 @@
         bool pause();           // InProcess -> Paused
         bool resume();          // Paused -> InProcess
         bool complete();        // InProcess -> Completed
-        bool abort();           // Any (未终态) -> Aborted
+        bool abort(std::string reason);           // Any (未终态) -> Aborted
         bool fail(std::string reason); // 任意态 -> Failed(记录失败原因)
 
         // —— 访问器(用于上报/查询)——
@@ -153,9 +164,13 @@
         // 追加一个载具
         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(std::string& strId);
+        CarrierSlotInfo* getCarrier(const std::string& strId);
 
         // 判定是否“按载具/卡位”方式
         bool usesCarrierSlots() const noexcept { return !m_carriers.empty(); }
@@ -210,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