From c4c82824f408176298d48aea46056010a1674401 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期三, 29 四月 2026 14:05:32 +0800
Subject: [PATCH] docs: 添加 OutboundTaskFlowService MoveToNextStatus TODO 设计方案

---
 Code/docs/superpowers/specs/2026-04-29-outbound-task-flow-todo-design.md |  148 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 148 insertions(+), 0 deletions(-)

diff --git a/Code/docs/superpowers/specs/2026-04-29-outbound-task-flow-todo-design.md b/Code/docs/superpowers/specs/2026-04-29-outbound-task-flow-todo-design.md
new file mode 100644
index 0000000..47e84da
--- /dev/null
+++ b/Code/docs/superpowers/specs/2026-04-29-outbound-task-flow-todo-design.md
@@ -0,0 +1,148 @@
+# OutboundTaskFlowService.MoveToNextStatus TODO 璁捐鏂规
+
+## 鑳屾櫙
+
+`OutboundTaskFlowService.MoveToNextStatus` 鏂规硶涓瓨鍦ㄤ竴涓� TODO锛�
+
+```csharp
+if (task.TaskStatus == (int)TaskOutStatusEnum.Line_OutFinish && task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+{
+    return WebResponseContent.Instance.OK();
+
+    // Todo:鑾峰彇瀵瑰悜绾夸綋鏄惁鏈夋墭鐩樺彿锛屽鏋滄湁鎵樼洏鍙风洿鎺ョ敓鎴愭満姊版墜浠诲姟
+
+    return GetWMSOutboundTrayTask(task);
+}
+```
+
+璇� TODO 闇�瑕佸湪鍑哄簱浠诲姟鍒拌揪 `Line_OutFinish` 鐘舵�佹椂锛屾鏌ュ鍚戠嚎浣撴槸鍚︽湁鎵樼洏鍙凤紝浠ュ喅瀹氬悗缁満姊版墜浠诲姟鐨勫垱寤烘柟寮忋��
+
+## 涓氬姟閫昏緫
+
+鍑哄簱浠诲姟娴佺▼涓紝褰撶墿鏂欓�氳繃杈撻�佺嚎鍒拌揪鐩爣浣嶇疆鍚庯細
+
+- **瀵瑰悜绾夸綋鏈夋墭鐩樺彿** 鈫� 鎵樼洏涓婃湁璐э紝鐩存帴鍦ㄦ湰鍦板垱寤烘満姊版墜浠诲姟鎵ц鎹㈢洏/缁勭洏/鎷嗙洏
+- **瀵瑰悜绾夸綋鏃犳墭鐩樺彿** 鈫� 闇�瑕佷粠 WMS 鑾峰彇绌烘墭鐩樺嚭搴撲换鍔�
+
+## 鏂规閫夋嫨
+
+**閲囩敤鏂规 B**锛氬湪 `RobotTaskService` 涓皝瑁呮鏌ラ�昏緫锛屽鐢ㄥ凡鏈夌殑 `BuildRobotTaskStock` 鍩虹璁炬柦銆�
+
+### 鍘熷洜
+- `RobotTaskService.BuildRobotTaskStock` 宸插疄鐜伴�氳繃 `AddressSourceLineNoMap` 瑙f瀽婧愮嚎浣撶紪鍙凤紝骞堕�氳繃璁惧閫氫俊璇诲彇 `Barcode` 鐨勫畬鏁撮�昏緫
+- 鏂板鏂规硶鑱岃矗鍗曚竴锛氭鏌� 鈫� 鍐崇瓥锛屼粎鍋氬垽鏂笉鎵ц鍓綔鐢�
+- `OutboundTaskFlowService` 淇濇寔绠�娲侊紝鍙渶璋冪敤鍗冲彲
+
+## 瀹炵幇璁捐
+
+### 1. RobotTaskService 鏂板鏂规硶
+
+```csharp
+/// <summary>
+/// 妫�鏌ユ簮绾夸綋鏄惁鏈夋墭鐩樺彿锛屽苟鏍规嵁缁撴灉鍒涘缓鏈烘鎵嬩换鍔°��
+/// </summary>
+/// <param name="task">鍑哄簱浠诲姟瀹炰綋</param>
+/// <returns>
+/// 鏈夋墭鐩樺彿鏃惰繑鍥� CreateLocalRobotTask 缁撴灉锛�
+/// 鏃犳墭鐩樺彿鏃惰繑鍥� GetWMSOutboundTrayTask 缁撴灉銆�
+/// </returns>
+public WebResponseContent CheckSourceLineAndCreateRobotTask(Dt_Task task)
+{
+    // 1. 鑾峰彇婧愮嚎浣撶紪鍙凤紙澶嶇敤宸叉湁閫昏緫锛�
+    string configKey = ResolveRobotTaskConfigKey(task.TargetAddress);
+    StockDTO stock = BuildRobotTaskStock(task, configKey);
+    string sourceLineNo = stock.SourceLineNo;
+
+    if (string.IsNullOrWhiteSpace(sourceLineNo))
+    {
+        return GetWMSOutboundTrayTask(task);
+    }
+
+    // 2. 閫氳繃璁惧閫氫俊璇诲彇绾夸綋鎵樼洏鍙�
+    string? palletCode = ReadLineBarcode(sourceLineNo);
+
+    if (!string.IsNullOrWhiteSpace(palletCode))
+    {
+        // 鏈夋墭鐩樺彿锛屾湰鍦板垱寤烘満姊版墜浠诲姟
+        return CreateLocalRobotTask(task);
+    }
+
+    // 鏃犳墭鐩樺彿锛屼粠 WMS 鑾峰彇浠诲姟
+    return GetWMSOutboundTrayTask(task);
+}
+
+/// <summary>
+/// 璇诲彇鎸囧畾绾夸綋鐨勬墭鐩樺彿銆�
+/// </summary>
+private string? ReadLineBarcode(string sourceLineNo)
+{
+    try
+    {
+        IDevice? device = Storage.Devices.FirstOrDefault(x =>
+            x.DeviceProDTOs.Any(d => d.DeviceChildCode == sourceLineNo));
+
+        if (device == null)
+            return null;
+
+        CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
+        return conveyorLine.GetValue<ConveyorLineDBNameNew, string>(
+            ConveyorLineDBNameNew.Barcode, sourceLineNo);
+    }
+    catch
+    {
+        return null;
+    }
+}
+```
+
+### 2. OutboundTaskFlowService 淇敼
+
+```csharp
+if (task.TaskStatus == (int)TaskOutStatusEnum.Line_OutFinish && task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+{
+    // 鑾峰彇瀵瑰悜绾夸綋鏄惁鏈夋墭鐩樺彿锛屽鏋滄湁鎵樼洏鍙风洿鎺ョ敓鎴愭満姊版墜浠诲姟
+    return _robotTaskService.CheckSourceLineAndCreateRobotTask(task);
+}
+```
+
+## 鏁版嵁娴�
+
+```
+MoveToNextStatus (OutboundTaskFlowService)
+    鈹�
+    鈻�
+CheckSourceLineAndCreateRobotTask (RobotTaskService)
+    鈹�
+    鈹溾攢鈹�鈹�鈻� BuildRobotTaskStock 鈹�鈹�鈻� ResolveRobotTaskConfigKey
+    鈹�                              鈹斺攢鈹�鈻� AddressSourceLineNoMap 鑾峰彇 sourceLineNo
+    鈹�
+    鈻�
+ReadLineBarcode(sourceLineNo)
+    鈹�
+    鈹溾攢鈹�鈹�鈻� Storage.Devices 鏌ユ壘璁惧
+    鈹斺攢鈹�鈹�鈻� CommonConveyorLine.GetValue(Barcode)
+                鈹�
+                鈻�
+        鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹粹攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+        鈹�  鎵樼洏鍙锋湁鍊�    鈹�     鎵樼洏鍙蜂负绌�
+        鈻�               鈻�
+CreateLocalRobotTask   GetWMSOutboundTrayTask
+```
+
+## 閿欒澶勭悊
+
+- 璁惧鏌ユ壘澶辫触鎴栬鍙栧紓甯� 鈫� 闄嶇骇涓鸿皟鐢� `GetWMSOutboundTrayTask`锛堜粠 WMS 鑾峰彇浠诲姟锛�
+- 涓嶉樆濉炰富娴佺▼锛屽紓甯镐粎璁板綍鏃ュ織
+
+## 娑夊強鏂囦欢
+
+| 鏂囦欢 | 鏀瑰姩 |
+|------|------|
+| `WIDESEAWCS_TaskInfoService/RobotTaskService.cs` | 鏂板 `CheckSourceLineAndCreateRobotTask` 鍜� `ReadLineBarcode` 鏂规硶 |
+| `WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs` | 鏇挎崲 TODO 浠g爜娈典负濮旀墭璋冪敤 |
+
+## 楠岃瘉瑕佺偣
+
+1. 褰撹緭閫佺嚎鏈夋枡鏃讹紝鏈烘鎵嬩换鍔$洿鎺ユ湰鍦板垱寤猴紝涓嶈皟鐢� WMS 鎺ュ彛
+2. 褰撹緭閫佺嚎鏃犳枡鏃讹紝闄嶇骇璋冪敤 WMS 鑾峰彇绌烘墭鐩樹换鍔�
+3. 寮傚父鍦烘櫙涓嶉樆濉炰富娴佺▼锛岄檷绾у埌 WMS 鑾峰彇

--
Gitblit v1.9.3