| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # OutboundTaskFlowService.MoveToNextStatus TODO å®ç°è®¡å |
| | | |
| | | > **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:** è¡¥å
¨ `OutboundTaskFlowService.MoveToNextStatus` æ¹æ³ä¸ç TODOï¼å®ç°å¨åºåºä»»å¡å°è¾¾ `Line_OutFinish` ç¶ææ¶æ£æ¥å¯¹åçº¿ä½æçå·ï¼ææçå·åæ¬å°åå»ºæºæ¢°æä»»å¡ï¼æ æçå·åä» WMS è·åä»»å¡ã |
| | | |
| | | **Architecture:** å¨ `RobotTaskService` 䏿°å¢ `CheckSourceLineAndCreateRobotTask` æ¹æ³ï¼å¤ç¨å·²æç `BuildRobotTaskStock` è·åæºçº¿ä½ç¼å·ï¼éè¿è®¾å¤é信读åçº¿ä½æçå·ï¼æ ¹æ®ç»æå³å®è°ç¨ `CreateLocalRobotTask` æ `GetWMSOutboundTrayTask`ã |
| | | |
| | | **Tech Stack:** C# / .NET 6, ASP.NET Core, SqlSugar ORM |
| | | |
| | | --- |
| | | |
| | | ## æ¶åæä»¶ |
| | | |
| | | | æä»¶ | æ¹å¨ | |
| | | |------|------| |
| | | | `WIDESEAWCS_TaskInfoService/RobotTaskService.cs` | æ°å¢ `CheckSourceLineAndCreateRobotTask` æ¹æ³ | |
| | | | `WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs` | æ¿æ¢ TODO ä»£ç æ®µä¸ºå§æè°ç¨ | |
| | | |
| | | --- |
| | | |
| | | ## Task 1: å¨ RobotTaskService æ°å¢ CheckSourceLineAndCreateRobotTask æ¹æ³ |
| | | |
| | | **Files:** |
| | | - Modify: `WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs:241`ï¼å¨ `CreateLocalRobotTask` æ¹æ³ä¹åï¼ |
| | | |
| | | - [ ] **Step 1: å¨ `CreateLocalRobotTask` æ¹æ³åæ·»å æ°æ¹æ³** |
| | | |
| | | å¨ `RobotTaskService.cs` 第 240 è¡ï¼`CreateLocalRobotTask` æ¹æ³ç»æåçä½ç½®ï¼æ·»å 以䏿¹æ³ï¼ |
| | | |
| | | ```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> |
| | | /// <param name="sourceLineNo">æºçº¿ä½ç¼å·</param> |
| | | /// <returns>æçå·ï¼å¦æå¼å¸¸è¿å null</returns> |
| | | 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 (Exception ex) |
| | | { |
| | | _logger.Error(ex, $"读å线ä½[{sourceLineNo}]æçå·å¼å¸¸"); |
| | | return null; |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | - [ ] **Step 2: éªè¯ç¼è¯** |
| | | |
| | | Run: `dotnet build WIDESEAWCS_Server/WIDESEAWCS_Server.sln --no-restore` |
| | | Expected: BUILD SUCCEEDEDï¼æ ç¼è¯éè¯¯ï¼ |
| | | |
| | | - [ ] **Step 3: æäº¤** |
| | | |
| | | ```bash |
| | | git add WIDESEAWCS_TaskInfoService/RobotTaskService.cs |
| | | git commit -m "feat(æºæ¢°æä»»å¡): æ°å¢CheckSourceLineAndCreateRobotTaskæ¹æ³æ¯ææ£æ¥çº¿ä½æçå·å³ç |
| | | |
| | | - æ°å¢CheckSourceLineAndCreateRobotTaskæ¹æ³ï¼æ ¹æ®æºçº¿ä½æçå·å³å®åå»ºæºæ¢°æä»»å¡æ¹å¼ |
| | | - æ°å¢ReadLineBarcodeç§ææ¹æ³ï¼è¯»åæå®çº¿ä½çæçå· |
| | | - ææçå·æ¶è°ç¨CreateLocalRobotTaskï¼æ æçå·æ¶è°ç¨GetWMSOutboundTrayTask |
| | | - å¼å¸¸æ¶é级为ä»WMSè·åä»»å¡" |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## Task 2: ä¿®æ¹ OutboundTaskFlowService.MoveToNextStatus è°ç¨æ°æ¹æ³ |
| | | |
| | | **Files:** |
| | | - Modify: `WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs:107-114` |
| | | |
| | | - [ ] **Step 1: æ¿æ¢ TODO ä»£ç æ®µ** |
| | | |
| | | å° `OutboundTaskFlowService.cs` 第 107-114 è¡ï¼ |
| | | |
| | | ```csharp |
| | | if (task.TaskStatus == (int)TaskOutStatusEnum.Line_OutFinish && task.TaskType == (int)TaskOutboundTypeEnum.Outbound) |
| | | { |
| | | return WebResponseContent.Instance.OK(); |
| | | |
| | | // Todo:è·å对åçº¿ä½æ¯å¦ææçå·ï¼å¦æææçå·ç´æ¥çææºæ¢°æä»»å¡ |
| | | |
| | | return GetWMSOutboundTrayTask(task); |
| | | } |
| | | ``` |
| | | |
| | | æ¿æ¢ä¸ºï¼ |
| | | |
| | | ```csharp |
| | | if (task.TaskStatus == (int)TaskOutStatusEnum.Line_OutFinish && task.TaskType == (int)TaskOutboundTypeEnum.Outbound) |
| | | { |
| | | // è·å对åçº¿ä½æ¯å¦ææçå·ï¼å¦æææçå·ç´æ¥çææºæ¢°æä»»å¡ |
| | | return _robotTaskService.CheckSourceLineAndCreateRobotTask(task); |
| | | } |
| | | ``` |
| | | |
| | | - [ ] **Step 2: éªè¯ç¼è¯** |
| | | |
| | | Run: `dotnet build WIDESEAWCS_Server/WIDESEAWCS_Server.sln --no-restore` |
| | | Expected: BUILD SUCCEEDEDï¼æ ç¼è¯éè¯¯ï¼ |
| | | |
| | | - [ ] **Step 3: æäº¤** |
| | | |
| | | ```bash |
| | | git add WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs |
| | | git commit -m "feat(åºåºä»»å¡): MoveToNextStatusè°ç¨CheckSourceLineAndCreateRobotTaskå³çæºæ¢°æä»»å¡å建æ¹å¼ |
| | | |
| | | - æ¿æ¢TODOä»£ç æ®µä¸º_robotTaskService.CheckSourceLineAndCreateRobotTaskè°ç¨ |
| | | - ææçå·æ¶æ¬å°åå»ºæºæ¢°æä»»å¡ï¼æ æçå·æ¶ä»WMSè·å" |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## éªè¯è¦ç¹ |
| | | |
| | | 1. å½è¾éçº¿æææ¶ï¼å¯¹åçº¿ä½ Barcode æå¼ï¼ï¼æºæ¢°æä»»å¡ç´æ¥æ¬å°å建ï¼ä¸è°ç¨ WMS æ¥å£ |
| | | 2. å½è¾éçº¿æ ææ¶ï¼å¯¹åçº¿ä½ Barcode 为空ï¼ï¼é级è°ç¨ WMS è·å空æçä»»å¡ |
| | | 3. å¼å¸¸åºæ¯ä¸é»å¡ä¸»æµç¨ï¼éçº§å° WMS è·å |
| | | |
| | | --- |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - `ReadLineBarcode` æ¹æ³å¤ç¨äº `BuildRobotTaskStock` ä¸è¯»å Barcode çè®¾å¤æ¥è¯¢é»è¾ï¼è§ `RobotTaskService.cs:365-374`ï¼ |
| | | - å¼å¸¸å¤çè¿å nullï¼è§¦åé级é»è¾è°ç¨ `GetWMSOutboundTrayTask` |
| | | - è®¾è®¡ææ¡£ä½ç½®ï¼`docs/superpowers/specs/2026-04-29-outbound-task-flow-todo-design.md` |