| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # 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 åè¯ï¼EquipmentCodeãResourceCodeãTokenï¼æ¹ä¸ºä» `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` - ç»å®/è§£ç»/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` åæ®µï¼int, é»è®¤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` ç§æå¼æ¥æ¹æ³ï¼Task.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 è°ç¨è®°å½è¯¦ç»æ¥å¿ï¼æçå·ãæ¥å£ç±»åã请æ±JSONãååºJSONãèæ¶ãç¶æãé误åå ï¼ |
| | | - [x] ææ MES åè¯å¨æè·åï¼ä¸å硬ç¼ç `"STK-GROUP-001"` |
| | | - [x] å端ç»ç/æçæé®æ£ç¡®è°ç¨ `GroupPalletConfirmAsync` / `SplitPalletConfirmAsync` |
| | | - [x] `stockInfo.vue` æ£ç¡®æ¾ç¤º `mesUploadStatus` åæ®µ |
| | | - [x] ææ public æ¹æ³åæ XML ææ¡£æ³¨é |
| | | - [x] æ°æ®åºèæ¬å« IF NOT EXISTS 鲿¢é夿·»å |
| | | - [x] å端åå端å坿£å¸¸ç¼è¯æå»ºï¼0 éè¯¯ï¼ |