From b0442e9b2f9e19bd6b1be1a9eb876d6f4b90a729 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期二, 21 四月 2026 00:40:05 +0800
Subject: [PATCH] docs: 更新MES上传状态实现计划,补充Tasks 11-16

---
 Code/docs/superpowers/plans/2026-04-20-MES上传状态与异步上传实现计划.md |  206 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 206 insertions(+), 0 deletions(-)

diff --git "a/Code/docs/superpowers/plans/2026-04-20-MES\344\270\212\344\274\240\347\212\266\346\200\201\344\270\216\345\274\202\346\255\245\344\270\212\344\274\240\345\256\236\347\216\260\350\256\241\345\210\222.md" "b/Code/docs/superpowers/plans/2026-04-20-MES\344\270\212\344\274\240\347\212\266\346\200\201\344\270\216\345\274\202\346\255\245\344\270\212\344\274\240\345\256\236\347\216\260\350\256\241\345\210\222.md"
new file mode 100644
index 0000000..a89be0f
--- /dev/null
+++ "b/Code/docs/superpowers/plans/2026-04-20-MES\344\270\212\344\274\240\347\212\266\346\200\201\344\270\216\345\274\202\346\255\245\344\270\212\344\274\240\345\256\236\347\216\260\350\256\241\345\210\222.md"
@@ -0,0 +1,206 @@
+# MES 涓婁紶鐘舵�佽窡韪笌寮傛涓婁紶瀹炵幇璁″垝
+
+> **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 (`- [x]`) syntax for tracking.
+
+**Goal:** 鍦ㄥ簱瀛樿〃娣诲姞 MES 涓婁紶鐘舵�佸瓧娈碉紝閫氳繃 `Task.Run` 寮傛鏂瑰紡涓婁紶 MES 鏁版嵁涓嶅共鎵颁富閫昏緫锛屾墍鏈� MES 璋冪敤璁板綍璇︾粏鏃ュ織锛屽墠绔樉绀虹姸鎬佸苟鎻愪緵缁勭洏/鎷嗙洏鎸夐挳锛屾墍鏈� MES 鍑瘉鏀逛负鍔ㄦ�佽幏鍙栥��
+
+**Architecture:**
+- `Dt_StockInfo.MesUploadStatus` 鍗曞瓧娈佃褰曟渶杩戜竴娆� MES 鎿嶄綔缁撴灉鐘舵��
+- 鎵�鏈� MES 璋冪敤缁熶竴閫氳繃 `Task.Run` 寮傛鎵ц锛屼笉闃诲涓婚�昏緫
+- 涓婁紶瀹屾垚鍚庢洿鏂� `MesUploadStatus`锛屽苟閫氳繃 `IMesLogService.LogAsync` 璁板綍璇︾粏鏃ュ織
+- 鎵�鏈� MES 鍑瘉锛圗quipmentCode銆丷esourceCode銆乀oken锛夋敼涓轰粠 `Dt_MESDeviceConfig` 琛ㄥ姩鎬佽幏鍙�
+- 鍓嶇 `stockInfo.vue` 鏂板鐘舵�佸垪锛宍stock.jsx` 鏂板缁勭洏/鎷嗙洏鎸夐挳
+
+**Tech Stack:** .NET 6/8, C#, SqlSugar ORM, ASP.NET Core WebAPI, Vue 3, Element Plus
+
+---
+
+## 鏂囦欢鍙樻洿姒傝
+
+| 鎿嶄綔 | 鏂囦欢 |
+|------|------|
+| 鏂板 | `WIDESEA_Common/StockEnum/MesUploadStatusEnum.cs` |
+| 淇敼 | `WIDESEA_Model/Models/Stock/Dt_StockInfo.cs` - 鏂板 `MesUploadStatus` 瀛楁 |
+| 淇敼 | `WIDESEA_IStockService/IStockInfoService.cs` - 鏂板 `UpdateMesUploadStatusAsync` |
+| 淇敼 | `WIDESEA_StockService/StockInfoService.cs` - 瀹炵幇 `UpdateMesUploadStatusAsync` |
+| 淇敼 | `WIDESEA_DTO/MES/MesApiLogDto.cs` - 鏂板 `PalletCode` 瀛楁 |
+| 淇敼 | `WIDESEA_TaskInfoService/TaskService.cs` - 鏂板 `MesUploadAsync` + `LogMesCallAsync` |
+| 淇敼 | `WIDESEA_TaskInfoService/WCS/TaskService_Outbound.cs` - 鍑虹珯 MES 鏀逛负寮傛 |
+| 淇敼 | `WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs` - 杩涚珯 MES 鏀逛负寮傛 |
+| 淇敼 | `WIDESEA_StockService/StockSerivce.cs` - 缁勭洏/鎷嗙洏 MES 鏀逛负寮傛 |
+| 淇敼 | `WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs` - 杩涚珯/鍑虹珯 MES 鏀逛负寮傛 + 鍔ㄦ�佸嚟璇� |
+| 淇敼 | `WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs` - 缁戝畾/瑙g粦/NG MES 鏀逛负寮傛 + 鍔ㄦ�佸嚟璇� |
+| 淇敼 | `WIDESEA_WMSClient/src/views/stock/stockInfo.vue` - 鏂板 `mesUploadStatus` 鍒� |
+| 淇敼 | `WIDESEA_WMSClient/src/extension/stock/stock.jsx` - 鏂板缁勭洏/鎷嗙洏鎸夐挳 |
+| 鏂板 | 鏁版嵁搴撳彉鏇磋剼鏈� |
+
+---
+
+## Phase 1: 鍩虹璁炬柦
+
+### Task 1: 鏂板 MesUploadStatusEnum 鏋氫妇 鉁�
+
+**Files:** Create `WIDESEA_Common/StockEnum/MesUploadStatusEnum.cs`
+
+- [x] 鍒涘缓鏋氫妇绫伙紙11涓�硷細0=鏈笂浼�, 1/2=缁勭洏, 3/4=鎷嗙洏, 5/6=杩涚珯, 7/8=鍑虹珯, 9/10=NG涓婃姤锛�
+- [x] Commit: `b21d0f2`
+
+### Task 2: 淇敼 Dt_StockInfo 瀹炰綋 鉁�
+
+**Files:** Modify `WIDESEA_Model/Models/Stock/Dt_StockInfo.cs`
+
+- [x] 鍦� `Remark` 鍜� `OutboundDate` 涔嬮棿鏂板 `MesUploadStatus` 瀛楁锛坕nt, 榛樿0锛�
+- [x] Commit: `58759d4`
+
+### Task 3: 淇敼 IStockInfoService 鎺ュ彛 鉁�
+
+**Files:** Modify `WIDESEA_IStockService/IStockInfoService.cs`
+
+- [x] 鏂板 `UpdateMesUploadStatusAsync(string palletCode, int status)` 鏂规硶澹版槑
+- [x] Commit: `18e0765`
+
+### Task 4: 淇敼 StockInfoService 瀹炵幇 鉁�
+
+**Files:** Modify `WIDESEA_StockService/StockInfoService.cs`
+
+- [x] 瀹炵幇 `UpdateMesUploadStatusAsync`锛氭寜鎵樼洏鍙锋煡璇� 鈫� 鏇存柊 MesUploadStatus
+- [x] Commit: `25a246f`锛堝悗淇缂哄け闂悎鎷彿 鈫� `c329a05`锛�
+
+### Task 5: 淇敼 TaskService 鏂板寮傛鏂规硶 鉁�
+
+**Files:** Modify `WIDESEA_TaskInfoService/TaskService.cs`
+
+- [x] 娣诲姞 using: `WIDESEA_Common.StockEnum`, `System.Diagnostics`, `Newtonsoft.Json`
+- [x] 鏂板 `MesUploadAsync` 绉佹湁寮傛鏂规硶锛圱ask.Run 璋冪敤 MES + 鏇存柊鐘舵�� + 鏃ュ織锛�
+- [x] 鏂板 `LogMesCallAsync` 绉佹湁鏃ュ織鏂规硶
+- [x] Commit: `1330eff`
+
+### Task 9: 鏁版嵁搴撳彉鏇磋剼鏈� 鉁�
+
+**Files:** Create `Database/Scripts/20260420_Dt_StockInfo_MesUploadStatus.sql`
+
+- [x] ALTER TABLE 鏂板 MesUploadStatus TINYINT NOT NULL DEFAULT 0
+- [x] Commit: `eec94e8`
+
+### 闄勫姞淇: MesApiLogDto 鏂板 PalletCode 鉁�
+
+**Files:** Modify `WIDESEA_DTO/MES/MesApiLogDto.cs`
+
+- [x] 鏂板 `PalletCode` 灞炴�ф敮鎸佹寜鎵樼洏鍙锋煡璇㈡棩蹇�
+- [x] Commit: `32ece02`
+
+---
+
+## Phase 2: 鍚庣 MES 璋冪敤鏀归��
+
+### Task 6: TaskService_Outbound 鍑虹珯 MES 寮傛 鉁�
+
+**Files:** Modify `WIDESEA_TaskInfoService/WCS/TaskService_Outbound.cs`
+
+- [x] `OutboundInContainer` 鏀逛负 `Task.Run` 寮傛鎵ц
+- [x] 浣跨敤 `MesUploadStatusEnum.鍑虹珯涓婁紶鎴愬姛`锛�7锛�/ `鍑虹珯涓婁紶澶辫触`锛�8锛�
+- [x] Commit: `91e3264`
+
+### Task 11: StockService 缁勭洏/鎷嗙洏 MES 寮傛 鉁�
+
+**Files:** Modify `WIDESEA_StockService/StockSerivce.cs`
+
+- [x] `GroupPalletConfirmAsync` 鈫� `BindContainer` 鏀逛负 `Task.Run` 寮傛
+  - 鎴愬姛: `MesUploadStatusEnum.缁勭洏涓婁紶鎴愬姛`锛�1锛�
+  - 澶辫触: `MesUploadStatusEnum.缁勭洏涓婁紶澶辫触`锛�2锛�
+- [x] `SplitPalletConfirmAsync` 鈫� `UnBindContainer` 鏀逛负 `Task.Run` 寮傛
+  - 鎴愬姛: `MesUploadStatusEnum.鎷嗙洏涓婁紶鎴愬姛`锛�3锛�
+  - 澶辫触: `MesUploadStatusEnum.鎷嗙洏涓婁紶澶辫触`锛�4锛�
+- [x] 淇濈暀鍔ㄦ�� Token 鑾峰彇閫昏緫锛坄ResolveMesConfig`锛�
+- [x] Commit: `4506a1e`
+
+### Task 12: StockInfoDetailController MES 寮傛 + 鍔ㄦ�佸嚟璇� 鉁�
+
+**Files:** Modify `WIDESEA_WMSServer/Controllers/Stock/StockInfoDetailController.cs`
+
+- [x] `BindContainer` 鏀逛负 `Task.Run` 寮傛 鈫� `MesUploadStatusEnum.缁勭洏涓婁紶鎴愬姛/澶辫触`
+- [x] `UnbindContainer` 鏀逛负 `Task.Run` 寮傛 鈫� `MesUploadStatusEnum.鎷嗙洏涓婁紶鎴愬姛/澶辫触`
+- [x] `ContainerNgReport` 鏀逛负 `Task.Run` 寮傛 鈫� `MesUploadStatusEnum.NG涓婃姤鎴愬姛/澶辫触`
+- [x] 纭紪鐮� `"STK-GROUP-001"` 鏀逛负 `_mesDeviceConfigService.GetByDeviceName()` 鍔ㄦ�佽幏鍙�
+- [x] 娉ㄥ叆 `IMESDeviceConfigService`
+- [x] Commit: `57feefd` 鈫� `c36c5c6`
+
+### Task 13: StockInfoController MES 寮傛 + 鍔ㄦ�佸嚟璇� 鉁�
+
+**Files:** Modify `WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs`
+
+- [x] `InboundInContainer` 鏀逛负 `Task.Run` 寮傛 鈫� `MesUploadStatusEnum.杩涚珯涓婁紶鎴愬姛/澶辫触`
+- [x] `OutboundInContainer` 鏀逛负 `Task.Run` 寮傛 鈫� `MesUploadStatusEnum.鍑虹珯涓婁紶鎴愬姛/澶辫触`
+- [x] 纭紪鐮� `"STK-GROUP-001"` 鏀逛负鍩轰簬 `stockInfo.Remark` 鍔ㄦ�侀�夋嫨璁惧鍚嶆煡璇� MES 鍑瘉
+- [x] 娉ㄥ叆 `IMESDeviceConfigService` 鍜� `IStockInfoService`
+- [x] Commit: `343d512` 鈫� `fba665e`
+
+### Task 14: TaskService_Inbound 杩涚珯 MES 寮傛 鉁�
+
+**Files:** Modify `WIDESEA_TaskInfoService/WCS/TaskService_Inbound.cs`
+
+- [x] `InboundInContainer` 鏀逛负 `Task.Run` 寮傛鎵ц
+- [x] 浣跨敤 `MesUploadStatusEnum.杩涚珯涓婁紶鎴愬姛`锛�5锛�/ `杩涚珯涓婁紶澶辫触`锛�6锛�
+- [x] 淇濈暀鍔ㄦ�� MES 鍑瘉鑾峰彇閫昏緫锛坄_mesDeviceConfigService.GetByDeviceName`锛�
+- [x] `CompleteTaskAsync` 绔嬪嵆杩斿洖锛屼笉绛夊緟 MES 缁撴灉
+- [x] Commit: `63ca4ac`
+
+---
+
+## Phase 3: 鍓嶇
+
+### Task 7: stockInfo.vue 鏂板 MES 鐘舵�佸垪 鉁�
+
+**Files:** Modify `WIDESEA_WMSClient/src/views/stock/stockInfo.vue`
+
+- [x] columns 涓� `stockStatus` 涔嬪悗鏂板 `mesUploadStatus` 鍒楋紙bind: mesUploadStatusEnum锛�
+- [x] `loadStockStatusOptions` 鏀逛负鍚屾椂鍔犺浇 `stockStatusEmun` + `mesUploadStatusEnum`
+- [x] Commit: `9a1c82a`
+
+### Task 8: stock.jsx 鏂板缁勭洏/鎷嗙洏鎸夐挳 鉁�
+
+**Files:** Modify `WIDESEA_WMSClient/src/extension/stock/stock.jsx`
+
+- [x] `onInited` 涓敞鍏� `editTableButtons`锛氱粍鐩� + 鎷嗙洏
+- [x] `onGroupPallet` 鈫� POST `/Stock/GroupPalletConfirm`
+- [x] `onSplitPallet` 鈫� POST `/Stock/SplitPalletConfirm`
+- [x] Commit: `0be9278`
+
+---
+
+## Phase 4: 鏋勫缓楠岃瘉
+
+### Task 10: 鏋勫缓楠岃瘉 鉁�
+
+- [x] 鍚庣 `dotnet build WIDESEA_WMSServer.sln` 鈫� 0 閿欒
+- [x] 鍓嶇 `npm run build` 鈫� 0 閿欒
+
+---
+
+## MES 璋冪敤鐐瑰叏瑕嗙洊
+
+| 浣嶇疆 | 鏂规硶 | MES鎺ュ彛 | 鐘舵�佹灇涓� | 鍔ㄦ�佸嚟璇� | 寮傛 |
+|------|------|---------|---------|---------|------|
+| `StockSerivce.cs` | `GroupPalletConfirmAsync` | `BindContainer` | 1鎴愬姛/2澶辫触 | 鉁� ResolveMesConfig | 鉁� |
+| `StockSerivce.cs` | `SplitPalletConfirmAsync` | `UnBindContainer` | 3鎴愬姛/4澶辫触 | 鉁� ResolveMesConfig | 鉁� |
+| `TaskService_Inbound.cs` | `InboundFinishTaskAsync` | `InboundInContainer` | 5鎴愬姛/6澶辫触 | 鉁� MESDeviceConfigService | 鉁� |
+| `TaskService_Outbound.cs` | `OutboundFinishTaskAsync` | `OutboundInContainer` | 7鎴愬姛/8澶辫触 | 鉁� MESDeviceConfigService | 鉁� |
+| `StockInfoController.cs` | `InboundInContainer` | `InboundInContainer` | 5鎴愬姛/6澶辫触 | 鉁� MESDeviceConfigService | 鉁� |
+| `StockInfoController.cs` | `OutboundInContainer` | `OutboundInContainer` | 7鎴愬姛/8澶辫触 | 鉁� MESDeviceConfigService | 鉁� |
+| `StockInfoDetailController.cs` | `BindContainer` | `BindContainer` | 1鎴愬姛/2澶辫触 | 鉁� MESDeviceConfigService | 鉁� |
+| `StockInfoDetailController.cs` | `UnbindContainer` | `UnBindContainer` | 3鎴愬姛/4澶辫触 | 鉁� MESDeviceConfigService | 鉁� |
+| `StockInfoDetailController.cs` | `ContainerNgReport` | `ContainerNgReport` | 9鎴愬姛/10澶辫触 | 鉁� MESDeviceConfigService | 鉁� |
+
+---
+
+## 鑷娓呭崟
+
+- [x] `MesUploadStatusEnum` 鏋氫妇鍊煎鏁颁负鎴愬姛锛屽伓鏁颁负澶辫触
+- [x] 鎵�鏈� MES 璋冪敤閫氳繃 `Task.Run` 寮傛鎵ц锛屼笉闃诲涓婚�昏緫
+- [x] 鎵�鏈� MES 璋冪敤璁板綍璇︾粏鏃ュ織锛堟墭鐩樺彿銆佹帴鍙g被鍨嬨�佽姹侸SON銆佸搷搴擩SON銆佽�楁椂銆佺姸鎬併�侀敊璇師鍥狅級
+- [x] 鎵�鏈� MES 鍑瘉鍔ㄦ�佽幏鍙栵紝涓嶅啀纭紪鐮� `"STK-GROUP-001"`
+- [x] 鍓嶇缁勭洏/鎷嗙洏鎸夐挳姝g‘璋冪敤 `GroupPalletConfirmAsync` / `SplitPalletConfirmAsync`
+- [x] `stockInfo.vue` 姝g‘鏄剧ず `mesUploadStatus` 瀛楁
+- [x] 鎵�鏈� public 鏂规硶鍧囨湁 XML 鏂囨。娉ㄩ噴
+- [x] 鏁版嵁搴撹剼鏈惈 IF NOT EXISTS 闃叉閲嶅娣诲姞
+- [x] 鍚庣鍜屽墠绔潎鍙甯哥紪璇戞瀯寤猴紙0 閿欒锛�
\ No newline at end of file

--
Gitblit v1.9.3