From f319fd5d5e5e0332c4c7e209df64c351dfbe6887 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期六, 25 四月 2026 22:13:19 +0800
Subject: [PATCH] fix: 修复PLC通信及任务处理中的多个问题
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs | 21 ++++++++++-----------
1 files changed, 10 insertions(+), 11 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..cdd7a09 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
@@ -1,6 +1,7 @@
using Newtonsoft.Json;
using Serilog;
using System.Diagnostics.CodeAnalysis;
+using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEAWCS_Common.Constants;
using WIDESEAWCS_Common.HttpEnum;
@@ -150,10 +151,10 @@
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)
.ToList();
foreach (var sameStationTask in sameStationTasks)
@@ -168,13 +169,8 @@
// ===== 鍚� 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);
foreach (var alternativeTask in tasks)
{
selectedTask = TrySelectOutboundTask(alternativeTask);
@@ -207,10 +203,13 @@
{
// 鍏堣繘琛屾湰鍦扮珯鍙版鏌ワ紙PLC 璇诲彇锛屽揩閫燂級锛岄伩鍏嶄笉蹇呰鐨� WMS HTTP 璋冪敤
- // 鍒ゆ柇 TargetAddress 杈撻�佺嚎绔欏彴鏄惁绌洪棽
- if (!IsTargetAddressConveyorStationAvailable(outboundTask))
+ if (outboundTask.TaskType != (int)TaskOutboundTypeEnum.OutEmpty)
{
- return null;
+ // 鍒ゆ柇 TargetAddress 杈撻�佺嚎绔欏彴鏄惁绌洪棽
+ if (!IsTargetAddressConveyorStationAvailable(outboundTask))
+ {
+ return null;
+ }
}
// 鍒ゆ柇 NextAddress 鍑哄簱绔欏彴鏄惁鍙敤
--
Gitblit v1.9.3