From 0f710285d9f02e3d4cea19557e17945e9ef9532b Mon Sep 17 00:00:00 2001
From: xiazhengtongxue <133085197+xiazhengtongxue@users.noreply.github.com>
Date: 星期五, 01 五月 2026 09:48:49 +0800
Subject: [PATCH] Merge branch 'dev' of http://115.159.85.185:8098/r/SuZhouGuanHong/ShanMeiXinNengYuan into dev

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs |   33 +++++++++++++++++++++------------
 1 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
index 1e5c562..7e4a4ea 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
@@ -9,7 +9,6 @@
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
-using WIDESEAWCS_QuartzJob.ConveyorLine.Enum;
 using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_QuartzJob.Service;
 
@@ -150,10 +149,12 @@
                 return selectedTask;
             }
 
-            // ===== TargetAddress 涓嶅彲鐢ㄦ椂锛屽厛灏濊瘯鍚� NextAddress 鐨勫叾浠栦换鍔� =====
+            // ===== TargetAddress 涓嶅彲鐢ㄦ椂锛屽厛灏濊瘯鍚� NextAddress涓嶅悓TargetAddress 鐨勫叾浠栦换鍔� =====
             var sameStationTasks = _taskService
                 .QueryStackerCraneOutTasks(deviceCode, new List<string> { candidateTask.NextAddress })
-                .Where(x => x.TaskId != candidateTask.TaskId)
+                .Where(x => x.TaskId != candidateTask.TaskId && x.TargetAddress != candidateTask.TargetAddress)
+                .GroupBy(x => x.TargetAddress)
+                .Select(g => g.FirstOrDefault())
                 .ToList();
 
             foreach (var sameStationTask in sameStationTasks)
@@ -168,13 +169,11 @@
 
             // ===== 鍚� NextAddress 鏃犲彲鐢ㄤ换鍔★紝灏濊瘯涓嶅悓 NextAddress 鐨勪换鍔� =====
             // 鏌ユ壘鍏朵粬鍙敤鐨勫嚭搴撶珯鍙�
-            var otherOutStationCodes = _routerService
-                .QueryNextRoutes(deviceCode, candidateTask.NextAddress, candidateTask.TaskType)
-                .Select(x => x.ChildPosi)
-                .ToList();
-
             // 鏌ヨ鍏朵粬绔欏彴鐨勫嚭搴撲换鍔�
-            var tasks = _taskService.QueryStackerCraneOutTasks(deviceCode, otherOutStationCodes);
+            var tasks = _taskService.QueryStackerCraneOutTasks(deviceCode, new List<string> { candidateTask.NextAddress }, false)
+                .GroupBy(x => x.TargetAddress)
+                .Select(g => g.FirstOrDefault())
+                .ToList();
             foreach (var alternativeTask in tasks)
             {
                 selectedTask = TrySelectOutboundTask(alternativeTask);
@@ -207,10 +206,13 @@
         {
             // 鍏堣繘琛屾湰鍦扮珯鍙版鏌ワ紙PLC 璇诲彇锛屽揩閫燂級锛岄伩鍏嶄笉蹇呰鐨� WMS HTTP 璋冪敤
 
-            // 鍒ゆ柇 TargetAddress 杈撻�佺嚎绔欏彴鏄惁绌洪棽
-            if (!IsTargetAddressConveyorStationAvailable(outboundTask))
+            if (outboundTask.TaskType != (int)TaskOutboundTypeEnum.OutEmpty && outboundTask.TargetAddress != "CWSC1")
             {
-                return null;
+                // 鍒ゆ柇 TargetAddress 杈撻�佺嚎绔欏彴鏄惁绌洪棽
+                if (!IsTargetAddressConveyorStationAvailable(outboundTask))
+                {
+                    return null;
+                }
             }
 
             // 鍒ゆ柇 NextAddress 鍑哄簱绔欏彴鏄惁鍙敤
@@ -219,6 +221,8 @@
                 return null;
             }
 
+            //if (outboundTask.TargetAddress != "CWSC1")
+            //{
             // 妫�鏌ユ槸鍚︽湁姝e湪鎵ц鐨勮緭閫佺嚎浠诲姟鍘诲線鍚屼竴 TargetAddress
             if (_taskService.HasExecutingTaskToTarget(outboundTask.Roadway, outboundTask.TargetAddress))
             {
@@ -226,7 +230,12 @@
                     $"TrySelectOutboundTask锛歍argetAddress: {outboundTask.TargetAddress} 宸叉湁姝e湪鎵ц鐨勮緭閫佺嚎浠诲姟", outboundTask.Roadway, outboundTask.TargetAddress, outboundTask.TaskNum);
                 return null;
             }
+            //}
 
+            if (outboundTask.Roadway != "GWSC1")
+            {
+                return outboundTask;
+            }
             // 绔欏彴妫�鏌ラ�氳繃鍚庯紝璋冪敤 WMS 鍒ゆ柇鏄惁闇�瑕佺Щ搴�
             var taskAfterTransferCheck = _transferCheck(outboundTask.TaskNum) ?? outboundTask;
             var taskGroup = taskAfterTransferCheck.TaskType.GetTaskTypeGroup();

--
Gitblit v1.9.3