From 5171d3f59b89389bf75293afd210cfa6de4ccff7 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 10 四月 2026 23:03:49 +0800
Subject: [PATCH] feat: 添加堆垛机相关常量类并重构代码使用常量

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs |   72 +++++++++++++++++++++++++++++-------
 1 files changed, 58 insertions(+), 14 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
index f696a30..5556a62 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
@@ -1,5 +1,7 @@
+using Microsoft.Extensions.Logging;
 using WIDESEA_Core;
 using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_Core.LogHelper;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
@@ -58,22 +60,30 @@
         private readonly IRobotTaskService _robotTaskService;
 
         /// <summary>
+        /// 鏃ュ織璁板綍鍣�
+        /// </summary>
+        private readonly ILogger _logger;
+
+        /// <summary>
         /// 鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="stateManager">鐘舵�佺鐞嗗櫒</param>
         /// <param name="clientManager">瀹㈡埛绔鐞嗗櫒</param>
         /// <param name="taskProcessor">浠诲姟澶勭悊鍣�</param>
         /// <param name="robotTaskService">浠诲姟鏈嶅姟</param>
+        /// <param name="logger">鏃ュ織璁板綍鍣�</param>
         public RobotWorkflowOrchestrator(
             RobotStateManager stateManager,
             RobotClientManager clientManager,
             RobotTaskProcessor taskProcessor,
-            IRobotTaskService robotTaskService)
+            IRobotTaskService robotTaskService,
+            ILogger logger)
         {
             _stateManager = stateManager;
             _clientManager = clientManager;
             _taskProcessor = taskProcessor;
             _robotTaskService = robotTaskService;
+            _logger = logger;
         }
 
         /// <summary>
@@ -100,8 +110,8 @@
             // 妫�鏌ユ槸鍚︽弧瓒宠嚜鍔ㄦ帶鍒舵潯浠讹細
             // 1. 杩愯妯″紡涓鸿嚜鍔紙2锛�
             // 2. 鎺у埗妯″紡涓哄鎴风鎺у埗锛�1锛�
-            // 3. 杩愯鐘舵�佷笉鏄� Running锛堣鏄庡凡瀹屾垚褰撳墠鍔ㄤ綔锛�
-            if (latestState.RobotRunMode == 2 && latestState.RobotControlMode == 1 && latestState.OperStatus != "Running")
+            // 3. 杩愯鐘舵�佹槸 Running
+            if (latestState.RobotRunMode == 2 /*&& latestState.RobotControlMode == 1*/ && latestState.OperStatus == "Running" && latestState.Homed == "Homed")
             {
                 // ========== 鍙栬揣瀹屾垚鍚庣殑鏀捐揣澶勭悊 ==========
                 // 鏉′欢锛�
@@ -109,24 +119,28 @@
                 // - 鎵嬭噦涓婃湁鐗╂枡锛圧obotArmObject == 1锛�
                 // - 浠诲姟鐘舵�佷负 RobotPickFinish锛堝凡璁板綍鍙栬揣瀹屾垚锛�
                 if ((latestState.CurrentAction == "PickFinished" || latestState.CurrentAction == "AllPickFinished")
-                    && latestState.RobotArmObject == 1
+                    && latestState.RobotArmObject == 0
                     && task.RobotTaskState == TaskRobotStatusEnum.RobotPickFinish.GetHashCode())
                 {
+                    _logger.LogInformation("ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬪鐞嗗彇璐у畬鎴愶紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+                    QuartzLogger.Info($"ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬪鐞嗗彇璐у畬鎴�", latestState.RobotCrane?.DeviceName ?? ipAddress);
                     // 鍙戦�佹斁璐ф寚浠�
                     await HandlePickFinishedStateAsync(task, ipAddress);
                 }
-                // ========== 鏀捐揣瀹屾垚鍚庣殑鍙栬揣澶勭悊 ==========
+
+                // ========== 鍒濆鍖栨垨鑰呮斁璐у畬鎴愬悗鐨勫彇璐у鐞� ==========
                 // 鏉′欢锛�
                 // - 褰撳墠鍔ㄤ綔鏄� PutFinished銆丄llPutFinished 鎴� null锛堟斁璐у畬鎴愶級
                 // - 杩愯鐘舵�佷负 Homed锛堝凡褰掍綅锛�
                 // - 鎵嬭噦涓婃棤鐗╂枡锛圧obotArmObject == 0锛�
                 // - 浠诲姟鐘舵�佷负 RobotPutFinish 鎴栦笉鏄� RobotExecuting
-                else if ((latestState.CurrentAction == "PutFinished" || latestState.CurrentAction == "AllPutFinished" || latestState.CurrentAction == null)
-                    && latestState.OperStatus == "Homed"
+                else if ((latestState.CurrentAction == "PutFinished" || latestState.CurrentAction == "AllPutFinished" || latestState.CurrentAction.IsNullOrEmpty())
                     && latestState.RobotArmObject == 0
                     && (task.RobotTaskState == TaskRobotStatusEnum.RobotPutFinish.GetHashCode()
                     || task.RobotTaskState != TaskRobotStatusEnum.RobotExecuting.GetHashCode()))
                 {
+                    _logger.LogInformation("ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬪鐞嗘斁璐у畬鎴愶紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+                    QuartzLogger.Info($"ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬪鐞嗘斁璐у畬鎴�", latestState.RobotCrane?.DeviceName ?? ipAddress);
                     // 鍙戦�佸彇璐ф寚浠�
                     await HandlePutFinishedStateAsync(task, ipAddress);
                 }
@@ -155,8 +169,9 @@
 
             if (result)
             {
-                // 鍙戦�佹垚鍔燂紝璁板綍鏃ュ織
-                QuartzLogger.Info($"涓嬪彂鏀捐揣鎸囦护锛屾寚锟�?: {taskString}", task.RobotRoadway);
+                // 鍙戦�佹垚鍔燂紝璁板綍 Info 鏃ュ織
+                _logger.LogInformation("HandlePickFinishedStateAsync锛氫笅鍙戞斁璐ф寚浠ゆ垚鍔燂紝鎸囦护: {TaskString}锛屼换鍔″彿: {TaskNum}", taskString, task.RobotTaskNum);
+                QuartzLogger.Info($"涓嬪彂鏀捐揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}", task.RobotRoadway);
 
                 // 鏇存柊浠诲姟鐘舵�佷负"鏈哄櫒浜烘墽琛屼腑"
                 task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
@@ -174,6 +189,12 @@
                         await _robotTaskService.UpdateRobotTaskAsync(task);
                     }
                 }
+            }
+            else
+            {
+                // 鍙戦�佸け璐ワ紝璁板綍 Error 鏃ュ織
+                _logger.LogError("HandlePickFinishedStateAsync锛氫笅鍙戞斁璐ф寚浠ゅけ璐ワ紝鎸囦护: {TaskString}锛屼换鍔″彿: {TaskNum}", taskString, task.RobotTaskNum);
+                QuartzLogger.Error($"涓嬪彂鏀捐揣鎸囦护澶辫触锛屾寚浠�: {taskString}", task.RobotRoadway);
             }
         }
 
@@ -202,6 +223,8 @@
             var stateForUpdate = _stateManager.GetState(ipAddress);
             if (stateForUpdate == null)
             {
+                _logger.LogWarning("HandlePutFinishedStateAsync锛氳幏鍙栫姸鎬佸け璐ワ紝IP: {IpAddress}", ipAddress);
+                QuartzLogger.Warn($"HandlePutFinishedStateAsync锛氳幏鍙栫姸鎬佸け璐ワ紝IP: {ipAddress}", ipAddress);
                 return;
             }
 
@@ -227,16 +250,37 @@
                 // 濡傛灉鏉$爜鐢熸垚鎴愬姛
                 if (!string.IsNullOrEmpty(trayBarcode1) && !string.IsNullOrEmpty(trayBarcode2))
                 {
-                    // 灏嗘潯鐮佹坊鍔犲埌鐘舵�佷腑锛屼緵鍚庣画鏀捐揣鏃朵娇鐢�
-                    stateForUpdate.CellBarcode.Add(trayBarcode1);
-                    stateForUpdate.CellBarcode.Add(trayBarcode2);
+                    if(stateForUpdate.CellBarcode.Contains(trayBarcode1)|| stateForUpdate.CellBarcode.Contains(trayBarcode2))
+                    {
+                        _logger.LogError("HandlePutFinishedStateAsync锛氱敓鎴愮殑鎵樼洏鏉$爜宸插瓨鍦紝鍙兘瀛樺湪閲嶅锛屼换鍔″彿: {TaskNum}", task.RobotTaskNum);
+                        QuartzLogger.Error($"鐢熸垚鐨勬墭鐩樻潯鐮佸凡瀛樺湪锛屽彲鑳藉瓨鍦ㄩ噸澶�", stateForUpdate.RobotCrane.DeviceName);
 
-                    // 璁板綍鏃ュ織
-                    QuartzLogger.Info($"取锟斤拷锟斤拷锟斤拷锟叫撅拷牛锟斤拷锟叫�: {trayBarcode1}+{trayBarcode2}", stateForUpdate.RobotCrane.DeviceName);
+                        // 鏉$爜閲嶅锛岃褰曢敊璇棩蹇楀苟鍋滄鍚庣画鎿嶄綔(鍚庣画鏀捐揣鏃朵細鐢ㄥ埌杩欎簺鏉$爜淇℃伅锛屼緵鍚庣画鏀捐揣鏃朵娇鐢紝璋冭瘯鍚庡彲鑳戒細鍙栨秷姝ら�昏緫)
+                        return;
+                    }
+                    else
+                    {
+                        _logger.LogInformation("HandlePutFinishedStateAsync锛氱敓鎴愮殑鎵樼洏鏉$爜鍞竴锛岀户缁墽琛岋紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+                        QuartzLogger.Info($"鐢熸垚鐨勬墭鐩樻潯鐮佸敮涓�锛岀户缁墽琛�", stateForUpdate.RobotCrane.DeviceName);
+                        // 灏嗘潯鐮佹坊鍔犲埌鐘舵�佷腑锛屼緵鍚庣画鏀捐揣鏃朵娇鐢�
+                        stateForUpdate.CellBarcode.Add(trayBarcode1);
+                        stateForUpdate.CellBarcode.Add(trayBarcode2);
+                    }
+
+
+                    // 璁板綍鏃ュ織锛氱敓鎴愭墭鐩樻潯鐮佹垚鍔�
+                    _logger.LogInformation("HandlePutFinishedStateAsync锛氱敓鎴愭墭鐩樻潯鐮佹垚鍔�: {Barcode1}+{Barcode2}锛屼换鍔″彿: {TaskNum}", trayBarcode1, trayBarcode2, task.RobotTaskNum);
+                    QuartzLogger.Info($"鐢熸垚鎵樼洏鏉$爜鎴愬姛: {trayBarcode1}+{trayBarcode2}", stateForUpdate.RobotCrane.DeviceName);
 
                     // 鍙戦�佸彇璐ф寚浠�
                     await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate);
                 }
+                else
+                {
+                    // 鏉$爜鐢熸垚澶辫触锛岃褰曢敊璇棩蹇�
+                    _logger.LogError("HandlePutFinishedStateAsync锛氱敓鎴愭墭鐩樻潯鐮佸け璐ワ紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+                    QuartzLogger.Error($"鐢熸垚鎵樼洏鏉$爜澶辫触", stateForUpdate.RobotCrane.DeviceName);
+                }
             }
             else
             {

--
Gitblit v1.9.3