| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 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 (`- [ ]`) syntax for tracking. |
| | | |
| | | **Goal:** å¨ StockService çç»çãæ¢çãæçæä½ä¸æ£ç¡®è°ç¨ MES çµè¯ç»å®/è§£ç»æ¥å£ï¼å¹¶å° MES è°ç¨çº³å
¥ WMS äºå¡å
ã |
| | | |
| | | **Architecture:** ä¿®æ¹ `StockService` ä¸ä¸ªæ¹æ³ï¼å° `_mesService.BindContainer()` / `_mesService.UnBindContainer()` æ£ç¡®å°ç¨ `await` è°ç¨å¹¶æ£æ¥è¿åç»æï¼MES 失败åäºå¡åæ»ã |
| | | |
| | | **Tech Stack:** ASP.NET Core 6.0, SqlSugar, IMesService |
| | | |
| | | --- |
| | | |
| | | ## 任塿»è§ |
| | | |
| | | | ä»»å¡ | æ¹æ³ | æä½ | |
| | | |------|------|------| |
| | | | Task 1 | `GroupPalletAsync` | ä¿®å¤ `_mesService.BindContainer()` ç¼ºå° await åç»ææ£æ¥ | |
| | | | Task 2 | `ChangePalletAsync` | æ·»å è§£ç»æºæç + ç»å®ç®æ æç | |
| | | | Task 3 | `SplitPalletAsync` | æ·»å è§£ç»çµè¯ | |
| | | |
| | | --- |
| | | |
| | | ## Task 1: ä¿®å¤ GroupPalletAsync ä¸ç MES è°ç¨ |
| | | |
| | | **Files:** |
| | | - Modify: `WIDESEA_StockService/StockSerivce.cs:132-176` |
| | | |
| | | - [ ] **Step 1: æ¥çå½å代ç 确认ä¸ä¸æ** |
| | | |
| | | 读å `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æ£ç¡®await MES BindContainerè°ç¨å¹¶æ£æ¥ç»æ" |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## Task 2: ä¿®æ¹ ChangePalletAsync æ·»å MES è§£ç»åç»å®è°ç¨ |
| | | |
| | | **Files:** |
| | | - Modify: `WIDESEA_StockService/StockSerivce.cs:181-240` |
| | | |
| | | - [ ] **Step 1: æ¥çå½å代ç 确认ä¸ä¸æ** |
| | | |
| | | 读å `StockSerivce.cs` 第 181-240 è¡ï¼ç¡®è®¤ï¼ |
| | | - `detailEntities` åéå®ä¹ä½ç½®ï¼å
å«è¦æ¢çççµè¯æç»ï¼ |
| | | - `targetStock.Id` èµå¼ä½ç½® |
| | | - `return content.OK("æ¢çæå")` ä¹åçé»è¾ |
| | | |
| | | - [ ] **Step 2: 卿´æ°åºåæç»åæ·»å UnBindContainer è°ç¨** |
| | | |
| | | å¨ç¬¬ 231 è¡ `var result = await StockInfoDetailService.Repository.UpdateDataAsync(detailEntities);` ä¹åæ·»å ï¼ |
| | | |
| | | ```csharp |
| | | // è°ç¨MESè§£ç»æºæççµè¯ |
| | | 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è§£ç»å¤±è´¥: {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è§£ç»åç»å®è°ç¨" |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## Task 3: ä¿®æ¹ SplitPalletAsync æ·»å MES è§£ç»è°ç¨ |
| | | |
| | | **Files:** |
| | | - Modify: `WIDESEA_StockService/StockSerivce.cs:245-286` |
| | | |
| | | - [ ] **Step 1: æ¥çå½å代ç 确认ä¸ä¸æ** |
| | | |
| | | 读å `StockSerivce.cs` 第 245-286 è¡ï¼ç¡®è®¤ï¼ |
| | | - `detailEntities` åéå®ä¹åå
å«ççµè¯å表 |
| | | - `return content.OK("æçæå");` ä¹åçé»è¾ |
| | | |
| | | - [ ] **Step 2: å¨å é¤åºåæç»åæ·»å UnBindContainer è°ç¨** |
| | | |
| | | å¨ç¬¬ 277 è¡ `var result = await StockInfoDetailService.Repository.DeleteDataAsync(detailEntities);` ä¹åæ·»å ï¼ |
| | | |
| | | ```csharp |
| | | // è°ç¨MESè§£ç»çµè¯ |
| | | 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è§£ç»å¤±è´¥: {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è§£ç»è°ç¨" |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## Task 4: æ´ä½æå»ºéªè¯ |
| | | |
| | | - [ ] **Step 1: æå»ºæ´ä¸ªè§£å³æ¹æ¡** |
| | | |
| | | ```bash |
| | | cd WIDESEA_WMSServer && dotnet build WIDESEA_WMSServer.sln |
| | | ``` |
| | | |
| | | 确认æ ç¼è¯éè¯¯ãæ è¦åã |
| | | |
| | | - [ ] **Step 2: æäº¤æææ´æ¹** |
| | | |
| | | 妿ä¹å没æåå¹¶æäº¤ï¼å¨æ¤æ§è¡æç»æäº¤ã |
| | | |
| | | --- |
| | | |
| | | ## éªè¯æ£æ¥æ¸
å |
| | | |
| | | - [ ] `GroupPalletAsync` ä¸ `await _mesService.BindContainer()` æ£ç¡® await |
| | | - [ ] `ChangePalletAsync` ä¸å
UnBind å Bindï¼é¡ºåºæ£ç¡® |
| | | - [ ] `SplitPalletAsync` ä¸ UnBind å¨ Delete ä¹å |
| | | - [ ] ææ MES è°ç¨æ£æ¥ `Success` 屿§ |
| | | - [ ] éè¯¯ä¿¡æ¯æ ¼å¼ç»ä¸ï¼`"{æä½}æåï¼ä½MES{æä½}失败: {é误信æ¯}"` |
| | | - [ ] è§£å³æ¹æ¡æå»ºæ é误 |