From ff5bfc0035fc61121570889d4f3c9aac63364a1b Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期一, 30 三月 2026 09:32:06 +0800
Subject: [PATCH] docs: 添加 MES 电芯绑定解绑集成实现计划

---
 Code/WMS/docs/superpowers/plans/2026-03-30-MES电芯绑定解绑集成实现计划.md |  213 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 213 insertions(+), 0 deletions(-)

diff --git "a/Code/WMS/docs/superpowers/plans/2026-03-30-MES\347\224\265\350\212\257\347\273\221\345\256\232\350\247\243\347\273\221\351\233\206\346\210\220\345\256\236\347\216\260\350\256\241\345\210\222.md" "b/Code/WMS/docs/superpowers/plans/2026-03-30-MES\347\224\265\350\212\257\347\273\221\345\256\232\350\247\243\347\273\221\351\233\206\346\210\220\345\256\236\347\216\260\350\256\241\345\210\222.md"
new file mode 100644
index 0000000..bdd957d
--- /dev/null
+++ "b/Code/WMS/docs/superpowers/plans/2026-03-30-MES\347\224\265\350\212\257\347\273\221\345\256\232\350\247\243\347\273\221\351\233\206\346\210\220\345\256\236\347\216\260\350\256\241\345\210\222.md"
@@ -0,0 +1,213 @@
+# MES 鐢佃姱缁戝畾瑙g粦闆嗘垚瀹炵幇璁″垝
+
+> **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:** 鍦� StockService 鐨勭粍鐩樸�佹崲鐩樸�佹媶鐩樻搷浣滀腑姝g‘璋冪敤 MES 鐢佃姱缁戝畾/瑙g粦鎺ュ彛锛屽苟灏� MES 璋冪敤绾冲叆 WMS 浜嬪姟鍐呫��
+
+**Architecture:** 淇敼 `StockService` 涓変釜鏂规硶锛屽皢 `_mesService.BindContainer()` / `_mesService.UnBindContainer()` 姝g‘鍦扮敤 `await` 璋冪敤骞舵鏌ヨ繑鍥炵粨鏋滐紝MES 澶辫触鍒欎簨鍔″洖婊氥��
+
+**Tech Stack:** ASP.NET Core 6.0, SqlSugar, IMesService
+
+---
+
+## 浠诲姟鎬昏
+
+| 浠诲姟 | 鏂规硶 | 鎿嶄綔 |
+|------|------|------|
+| Task 1 | `GroupPalletAsync` | 淇 `_mesService.BindContainer()` 缂哄皯 await 鍜岀粨鏋滄鏌� |
+| Task 2 | `ChangePalletAsync` | 娣诲姞瑙g粦婧愭墭鐩� + 缁戝畾鐩爣鎵樼洏 |
+| Task 3 | `SplitPalletAsync` | 娣诲姞瑙g粦鐢佃姱 |
+
+---
+
+## Task 1: 淇 GroupPalletAsync 涓殑 MES 璋冪敤
+
+**Files:**
+- Modify: `WIDESEA_StockService/StockSerivce.cs:132-176`
+
+- [ ] **Step 1: 鏌ョ湅褰撳墠浠g爜纭涓婁笅鏂�**
+
+璇诲彇 `StockSerivce.cs` 绗� 132-176 琛岋紝纭 `bindRequest` 瀵硅薄鐨勬瀯寤哄拰 `_mesService.BindContainer()` 璋冪敤鐨勪綅缃��
+
+- [ ] **Step 2: 淇敼 BindContainer 璋冪敤涓� await 骞舵鏌ョ粨鏋�**
+
+灏嗙 166 琛岋細
+```csharp
+_mesService.BindContainer()
+```
+
+淇敼涓猴細
+```csharp
+var mesResult = await _mesService.BindContainer(bindRequest);
+if (mesResult == null || !mesResult.Success)
+{
+    return content.Error($"缁勭洏鎴愬姛锛屼絾MES缁戝畾澶辫触: {mesResult?.Message ?? "鏈煡閿欒"}");
+}
+```
+
+- [ ] **Step 3: 鏋勫缓楠岃瘉**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_StockService/WIDESEA_StockService.csproj
+```
+
+纭鏃犵紪璇戦敊璇��
+
+- [ ] **Step 4: 鎻愪氦**
+
+```bash
+git add WIDESEA_StockService/StockSerivce.cs
+git commit -m "fix(StockService): GroupPalletAsync姝g‘await MES BindContainer璋冪敤骞舵鏌ョ粨鏋�"
+```
+
+---
+
+## Task 2: 淇敼 ChangePalletAsync 娣诲姞 MES 瑙g粦鍜岀粦瀹氳皟鐢�
+
+**Files:**
+- Modify: `WIDESEA_StockService/StockSerivce.cs:181-240`
+
+- [ ] **Step 1: 鏌ョ湅褰撳墠浠g爜纭涓婁笅鏂�**
+
+璇诲彇 `StockSerivce.cs` 绗� 181-240 琛岋紝纭锛�
+- `detailEntities` 鍙橀噺瀹氫箟浣嶇疆锛堝寘鍚鎹㈢洏鐨勭數鑺槑缁嗭級
+- `targetStock.Id` 璧嬪�间綅缃�
+- `return content.OK("鎹㈢洏鎴愬姛")` 涔嬪墠鐨勯�昏緫
+
+- [ ] **Step 2: 鍦ㄦ洿鏂板簱瀛樻槑缁嗗墠娣诲姞 UnBindContainer 璋冪敤**
+
+鍦ㄧ 231 琛� `var result = await StockInfoDetailService.Repository.UpdateDataAsync(detailEntities);` 涔嬪墠娣诲姞锛�
+
+```csharp
+// 璋冪敤MES瑙g粦婧愭墭鐩樼數鑺�
+var unbindRequest = new UnBindContainerRequest
+{
+    EquipmentCode = "STK-GROUP-001",
+    ResourceCode = "STK-GROUP-001",
+    LocalTime = DateTime.Now,
+    ContainCode = stock.SourcePalletNo,
+    SfcList = detailEntities.Select(d => d.SerialNumber).ToList()
+};
+var unbindResult = await _mesService.UnBindContainer(unbindRequest);
+if (unbindResult == null || !unbindResult.Success)
+{
+    return content.Error($"鎹㈢洏鎴愬姛锛屼絾MES瑙g粦澶辫触: {unbindResult?.Message ?? "鏈煡閿欒"}");
+}
+```
+
+- [ ] **Step 3: 鍦ㄦ洿鏂板簱瀛樻槑缁嗗悗娣诲姞 BindContainer 璋冪敤**
+
+鍦ㄧ 231 琛屼箣鍚庛�乣return content.OK("鎹㈢洏鎴愬姛");` 涔嬪墠娣诲姞锛�
+
+```csharp
+// 璋冪敤MES缁戝畾鐩爣鎵樼洏鐢佃姱
+var bindRequest = new BindContainerRequest
+{
+    ContainerCode = stock.TargetPalletNo,
+    EquipmentCode = "STK-GROUP-001",
+    ResourceCode = "STK-GROUP-001",
+    LocalTime = DateTime.Now,
+    OperationType = 0,
+    ContainerSfcList = detailEntities.Select(d => new ContainerSfcItem
+    {
+        Sfc = d.SerialNumber,
+        Location = d.InboundOrderRowNo.ToString()
+    }).ToList()
+};
+var bindResult = await _mesService.BindContainer(bindRequest);
+if (bindResult == null || !bindResult.Success)
+{
+    return content.Error($"鎹㈢洏鎴愬姛锛屼絾MES缁戝畾澶辫触: {bindResult?.Message ?? "鏈煡閿欒"}");
+}
+```
+
+- [ ] **Step 4: 鏋勫缓楠岃瘉**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_StockService/WIDESEA_StockService.csproj
+```
+
+纭鏃犵紪璇戦敊璇��
+
+- [ ] **Step 5: 鎻愪氦**
+
+```bash
+git add WIDESEA_StockService/StockSerivce.cs
+git commit -m "feat(StockService): ChangePalletAsync娣诲姞MES瑙g粦鍜岀粦瀹氳皟鐢�"
+```
+
+---
+
+## Task 3: 淇敼 SplitPalletAsync 娣诲姞 MES 瑙g粦璋冪敤
+
+**Files:**
+- Modify: `WIDESEA_StockService/StockSerivce.cs:245-286`
+
+- [ ] **Step 1: 鏌ョ湅褰撳墠浠g爜纭涓婁笅鏂�**
+
+璇诲彇 `StockSerivce.cs` 绗� 245-286 琛岋紝纭锛�
+- `detailEntities` 鍙橀噺瀹氫箟鍜屽寘鍚殑鐢佃姱鍒楄〃
+- `return content.OK("鎷嗙洏鎴愬姛");` 涔嬪墠鐨勯�昏緫
+
+- [ ] **Step 2: 鍦ㄥ垹闄ゅ簱瀛樻槑缁嗗墠娣诲姞 UnBindContainer 璋冪敤**
+
+鍦ㄧ 277 琛� `var result = await StockInfoDetailService.Repository.DeleteDataAsync(detailEntities);` 涔嬪墠娣诲姞锛�
+
+```csharp
+// 璋冪敤MES瑙g粦鐢佃姱
+var unbindRequest = new UnBindContainerRequest
+{
+    EquipmentCode = "STK-GROUP-001",
+    ResourceCode = "STK-GROUP-001",
+    LocalTime = DateTime.Now,
+    ContainCode = stock.SourcePalletNo,
+    SfcList = detailEntities.Select(d => d.SerialNumber).ToList()
+};
+var unbindResult = await _mesService.UnBindContainer(unbindRequest);
+if (unbindResult == null || !unbindResult.Success)
+{
+    return content.Error($"鎷嗙洏鎴愬姛锛屼絾MES瑙g粦澶辫触: {unbindResult?.Message ?? "鏈煡閿欒"}");
+}
+```
+
+- [ ] **Step 3: 鏋勫缓楠岃瘉**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_StockService/WIDESEA_StockService.csproj
+```
+
+纭鏃犵紪璇戦敊璇��
+
+- [ ] **Step 4: 鎻愪氦**
+
+```bash
+git add WIDESEA_StockService/StockSerivce.cs
+git commit -m "feat(StockService): SplitPalletAsync娣诲姞MES瑙g粦璋冪敤"
+```
+
+---
+
+## Task 4: 鏁翠綋鏋勫缓楠岃瘉
+
+- [ ] **Step 1: 鏋勫缓鏁翠釜瑙e喅鏂规**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_WMSServer.sln
+```
+
+纭鏃犵紪璇戦敊璇�佹棤璀﹀憡銆�
+
+- [ ] **Step 2: 鎻愪氦鎵�鏈夋洿鏀�**
+
+濡傛灉涔嬪墠娌℃湁鍚堝苟鎻愪氦锛屽湪姝ゆ墽琛屾渶缁堟彁浜ゃ��
+
+---
+
+## 楠岃瘉妫�鏌ユ竻鍗�
+
+- [ ] `GroupPalletAsync` 涓� `await _mesService.BindContainer()` 姝g‘ await
+- [ ] `ChangePalletAsync` 涓厛 UnBind 鍐� Bind锛岄『搴忔纭�
+- [ ] `SplitPalletAsync` 涓� UnBind 鍦� Delete 涔嬪墠
+- [ ] 鎵�鏈� MES 璋冪敤妫�鏌� `Success` 灞炴��
+- [ ] 閿欒淇℃伅鏍煎紡缁熶竴锛歚"{鎿嶄綔}鎴愬姛锛屼絾MES{鎿嶄綔}澶辫触: {閿欒淇℃伅}"`
+- [ ] 瑙e喅鏂规鏋勫缓鏃犻敊璇�

--
Gitblit v1.9.3