From cec41c128790361d51668e61001f00bab38955e4 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期三, 22 四月 2026 15:50:51 +0800
Subject: [PATCH] docs: 添加TargetAddress输送线任务冲突检查实施计划

---
 Code/docs/superpowers/plans/2026-04-22-stacker-crane-executing-task-check.md |  145 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 145 insertions(+), 0 deletions(-)

diff --git a/Code/docs/superpowers/plans/2026-04-22-stacker-crane-executing-task-check.md b/Code/docs/superpowers/plans/2026-04-22-stacker-crane-executing-task-check.md
new file mode 100644
index 0000000..d20dd84
--- /dev/null
+++ b/Code/docs/superpowers/plans/2026-04-22-stacker-crane-executing-task-check.md
@@ -0,0 +1,145 @@
+# 鍑哄簱浠诲姟 TargetAddress 杈撻�佺嚎浠诲姟鍐茬獊妫�鏌� 瀹炴柦璁″垝
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** 鍦ㄥ嚭搴撲换鍔¢�夋嫨鏃讹紝妫�鏌ユ槸鍚︽湁姝e湪鎵ц鐨勮緭閫佺嚎浠诲姟鍘诲線鍚屼竴 TargetAddress锛岄伩鍏嶅啿绐併��
+
+**Architecture:** 鍦� `ITaskService` 鏂板 `HasExecutingTaskToTarget` 鏂规硶锛屽湪 `TaskService` 涓疄鐜版暟鎹簱鏌ヨ锛屽湪 `StackerCraneTaskSelector.TrySelectOutboundTask` 涓皟鐢ㄣ��
+
+**Tech Stack:** C# / .NET 8锛孲qlSugar ORM锛孲erilog
+
+---
+
+## 娑夊強鏂囦欢
+
+- 淇敼: `WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs`
+- 淇敼: `WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs`
+- 淇敼: `WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs`
+
+---
+
+## Task 1: 鏂板 ITaskService 鎺ュ彛鏂规硶
+
+**Files:**
+- Modify: `WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs`
+
+- [ ] **Step 1: 鍦ㄦ帴鍙f湯灏撅紙`public Dt_Task QueryByTaskNum(int taskNum);` 涔嬪悗锛宍}` 涔嬪墠锛夋坊鍔犳柟娉曞0鏄�**
+
+```csharp
+/// <summary>
+/// 鏌ヨ鏄惁鏈夋鍦ㄦ墽琛岀殑鍘诲線鎸囧畾 TargetAddress 鐨勮緭閫佺嚎浠诲姟
+/// </summary>
+/// <param name="roadway">宸烽亾鍙�</param>
+/// <param name="targetAddress">鐩爣鍦板潃</param>
+/// <returns>瀛樺湪杩斿洖 true</returns>
+bool HasExecutingTaskToTarget(string roadway, string targetAddress);
+```
+
+- [ ] **Step 2: Commit**
+
+```bash
+git add WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
+git commit -m "feat(ITaskService): 鏂板 HasExecutingTaskToTarget 鎺ュ彛鏂规硶
+
+鏌ヨ鏄惁鏈夋鍦ㄦ墽琛岀殑鍘诲線鎸囧畾 TargetAddress 鐨勮緭閫佺嚎浠诲姟
+
+Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
+```
+
+---
+
+## Task 2: 瀹炵幇 TaskService 鏂规硶
+
+**Files:**
+- Modify: `WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs`
+
+- [ ] **Step 1: 鍦� `QueryExecutingConveyorLineTask` 鏂规硶涔嬪悗娣诲姞瀹炵幇**
+
+鍦� `TaskService.Query.cs` 鏂囦欢涓紝鎵惧埌 `QueryExecutingConveyorLineTask` 鏂规硶锛堢害 line 28-34锛夛紝鍦ㄥ叾涔嬪悗锛坄QueryCompletedConveyorLineTask` 涔嬪墠锛夋彃鍏ワ細
+
+```csharp
+/// <summary>
+/// 鏌ヨ鏄惁鏈夋鍦ㄦ墽琛岀殑鍘诲線鎸囧畾 TargetAddress 鐨勮緭閫佺嚎浠诲姟
+/// </summary>
+/// <param name="roadway">宸烽亾鍙�</param>
+/// <param name="targetAddress">鐩爣鍦板潃</param>
+/// <returns>瀛樺湪杩斿洖 true</returns>
+public bool HasExecutingTaskToTarget(string roadway, string targetAddress)
+{
+    return BaseDal.QueryFirst(x =>
+        x.Roadway == roadway &&
+        x.TargetAddress == targetAddress &&
+        x.TaskStatus == (int)TaskOutStatusEnum.Line_OutExecuting,
+        TaskOrderBy) != null;
+}
+```
+
+- [ ] **Step 2: Commit**
+
+```bash
+git add WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs
+git commit -m "feat(TaskService): 瀹炵幇 HasExecutingTaskToTarget 鏂规硶
+
+鏌ヨ TaskStatus == Line_OutExecuting 涓� Roadway 鍜� TargetAddress 鍖归厤鐨勪换鍔�
+
+Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
+```
+
+---
+
+## Task 3: 鍦� TrySelectOutboundTask 涓皟鐢ㄦ柊鏂规硶
+
+**Files:**
+- Modify: `WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs`
+
+- [ ] **Step 1: 鍦� `TrySelectOutboundTask` 鏂规硶涓紝NextAddress 妫�鏌ラ�氳繃涔嬪悗銆乄MS 绉诲簱妫�鏌ヤ箣鍓嶆彃鍏�**
+
+褰撳墠浠g爜锛堢害 line 203-235锛夛細
+
+```csharp
+// 鍒ゆ柇 NextAddress 鍑哄簱绔欏彴鏄惁鍙敤
+if (!IsOutTaskStationAvailable(outboundTask))
+{
+    return null;
+}
+
+// 绔欏彴妫�鏌ラ�氳繃鍚庯紝璋冪敤 WMS 鍒ゆ柇鏄惁闇�瑕佺Щ搴�
+```
+
+鍦� `// 绔欏彴妫�鏌ラ�氳繃鍚巂 娉ㄩ噴涔嬪墠鎻掑叆锛�
+
+```csharp
+// 妫�鏌ユ槸鍚︽湁姝e湪鎵ц鐨勮緭閫佺嚎浠诲姟鍘诲線鍚屼竴 TargetAddress
+if (_taskService.HasExecutingTaskToTarget(outboundTask.Roadway, outboundTask.TargetAddress))
+{
+    QuartzLogHelper.LogInfo(_logger, "TrySelectOutboundTask锛歍argetAddress: {TargetAddress} 宸叉湁姝e湪鎵ц鐨勮緭閫佺嚎浠诲姟锛屼换鍔″彿: {TaskNum}",
+        $"TrySelectOutboundTask锛歍argetAddress: {outboundTask.TargetAddress} 宸叉湁姝e湪鎵ц鐨勮緭閫佺嚎浠诲姟", outboundTask.Roadway, outboundTask.TargetAddress, outboundTask.TaskNum);
+    return null;
+}
+```
+
+- [ ] **Step 2: Commit**
+
+```bash
+git add WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
+git commit -m "feat(StackerCraneTaskSelector): 鍑哄簱浠诲姟閫夋嫨鏃舵鏌� TargetAddress 杈撻�佺嚎浠诲姟鍐茬獊
+
+绔欏彴鍙敤鍚庛�乄MS 绉诲簱妫�鏌ュ墠锛屾煡璇㈡槸鍚︽湁 Line_OutExecuting 鐘舵�佺殑浠诲姟鍘诲悓涓� TargetAddress
+
+Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
+```
+
+---
+
+## Task 4: 楠岃瘉鏋勫缓
+
+- [ ] **Step 1: 鎵ц鏋勫缓楠岃瘉**
+
+```bash
+cd D:/Git/ShanMeiXinNengYuan/Code
+dotnet build WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj
+```
+
+棰勬湡锛�0 涓敊璇�
+
+- [ ] **Step 2: 濡傛湁閿欒锛屽垎鏋愬苟淇**

--
Gitblit v1.9.3