From 0a297d2989e7bf8c23f7495a1465e85749213ae5 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期一, 30 三月 2026 12:49:47 +0800
Subject: [PATCH] docs: 添加任务库存历史记录实现计划

---
 Code/WMS/docs/superpowers/plans/2026-03-30-任务库存历史记录实现计划.md |  273 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 273 insertions(+), 0 deletions(-)

diff --git "a/Code/WMS/docs/superpowers/plans/2026-03-30-\344\273\273\345\212\241\345\272\223\345\255\230\345\216\206\345\217\262\350\256\260\345\275\225\345\256\236\347\216\260\350\256\241\345\210\222.md" "b/Code/WMS/docs/superpowers/plans/2026-03-30-\344\273\273\345\212\241\345\272\223\345\255\230\345\216\206\345\217\262\350\256\260\345\275\225\345\256\236\347\216\260\350\256\241\345\210\222.md"
new file mode 100644
index 0000000..140c61b
--- /dev/null
+++ "b/Code/WMS/docs/superpowers/plans/2026-03-30-\344\273\273\345\212\241\345\272\223\345\255\230\345\216\206\345\217\262\350\256\260\345\275\225\345\256\236\347\216\260\350\256\241\345\210\222.md"
@@ -0,0 +1,273 @@
+# 浠诲姟搴撳瓨鍘嗗彶璁板綍瀹炵幇璁″垝
+
+> **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:** 鍦� TaskService 鐨勪换鍔″畬鎴愭柟娉曚腑娣诲姞浠诲姟鍘嗗彶鍜屽簱瀛樺巻鍙蹭繚瀛樸��
+
+**Architecture:** 娉ㄥ叆 `ITask_HtyService` 鍜� `IStockInfo_HtyService`锛屼慨鏀� `CompleteTaskAsync` 娣诲姞鍘嗗彶淇濆瓨锛屼袱涓┖鎵樼洏鏂规硶鍐呰仈娣诲姞鍘嗗彶淇濆瓨銆�
+
+**Tech Stack:** ASP.NET Core 6.0, MapsterMapper, SqlSugar
+
+---
+
+## 浠诲姟鎬昏
+
+| 浠诲姟 | 鍐呭 |
+|------|------|
+| Task 1 | 娉ㄥ叆鏈嶅姟锛圛Task_HtyService, IStockInfo_HtyService锛� |
+| Task 2 | 淇敼 CompleteTaskAsync 娣诲姞浠诲姟鍘嗗彶淇濆瓨 |
+| Task 3 | 淇敼 3 涓皟鐢ㄦ柟浼犲叆 operateType |
+| Task 4 | InboundFinishTaskTrayAsync 娣诲姞鍘嗗彶淇濆瓨 |
+| Task 5 | OutboundFinishTaskTrayAsync 娣诲姞鍘嗗彶淇濆瓨 |
+
+---
+
+## Task 1: 娉ㄥ叆鍘嗗彶鏈嶅姟
+
+**Files:**
+- Modify: `WIDESEA_TaskInfoService/TaskService.cs`
+
+- [ ] **Step 1: 娣诲姞瀛楁**
+
+鍦� `_mesService` 瀛楁鍚庢坊鍔狅細
+```csharp
+private readonly ITask_HtyService _task_HtyService;
+private readonly IStockInfo_HtyService _stockInfo_HtyService;
+```
+
+- [ ] **Step 2: 淇敼鏋勯�犲嚱鏁�**
+
+鍦ㄦ瀯閫犲嚱鏁板弬鏁颁腑娣诲姞锛�
+```csharp
+ITask_HtyService task_HtyService,
+IStockInfo_HtyService stockInfo_HtyService,
+```
+
+鍦ㄦ瀯閫犲嚱鏁颁綋鍐呮坊鍔狅細
+```csharp
+_task_HtyService = task_HtyService;
+_stockInfo_HtyService = stockInfo_HtyService;
+```
+
+- [ ] **Step 3: 鏋勫缓楠岃瘉**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj
+```
+
+- [ ] **Step 4: 鎻愪氦**
+
+```bash
+git add WIDESEA_TaskInfoService/TaskService.cs
+git commit -m "feat(TaskService): 娉ㄥ叆ITask_HtyService鍜孖StockInfo_HtyService"
+```
+
+---
+
+## Task 2: 淇敼 CompleteTaskAsync 娣诲姞浠诲姟鍘嗗彶淇濆瓨
+
+**Files:**
+- Modify: `WIDESEA_TaskInfoService/TaskService.cs`锛坄CompleteTaskAsync` 鏂规硶锛�
+
+- [ ] **Step 1: 淇敼鏂规硶绛惧悕**
+
+灏嗭細
+```csharp
+private async Task<WebResponseContent> CompleteTaskAsync(Dt_Task task)
+```
+
+淇敼涓猴細
+```csharp
+private async Task<WebResponseContent> CompleteTaskAsync(Dt_Task task, string operateType)
+```
+
+- [ ] **Step 2: 淇敼鍘嗗彶淇濆瓨閫昏緫**
+
+灏嗭細
+```csharp
+var historyTask = _mapper.Map<Dt_Task_Hty>(task);
+historyTask.InsertTime = DateTime.Now;
+```
+
+淇敼涓猴細
+```csharp
+var historyTask = _mapper.Map<Dt_Task_Hty>(task);
+historyTask.InsertTime = DateTime.Now;
+historyTask.OperateType = operateType;
+var saveResult = await _task_HtyService.Repository.AddDataAsync(historyTask) > 0;
+if (!saveResult) return WebResponseContent.Instance.Error("浠诲姟鍘嗗彶淇濆瓨澶辫触");
+```
+
+- [ ] **Step 3: 鏋勫缓楠岃瘉**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj
+```
+
+- [ ] **Step 4: 鎻愪氦**
+
+```bash
+git add WIDESEA_TaskInfoService/TaskService.cs
+git commit -m "feat(TaskService): CompleteTaskAsync娣诲姞浠诲姟鍘嗗彶淇濆瓨閫昏緫"
+```
+
+---
+
+## Task 3: 淇敼 3 涓皟鐢ㄦ柟浼犲叆 operateType
+
+**Files:**
+- Modify: `WIDESEA_TaskInfoService/TaskService.cs`
+
+- [ ] **Step 1: 淇敼 InboundFinishTaskAsync 鐨� CompleteTaskAsync 璋冪敤**
+
+灏嗭細
+```csharp
+return await CompleteTaskAsync(task);
+```
+
+淇敼涓猴細
+```csharp
+return await CompleteTaskAsync(task, "鍏ュ簱瀹屾垚");
+```
+
+- [ ] **Step 2: 淇敼 OutboundFinishTaskAsync 鐨� CompleteTaskAsync 璋冪敤**
+
+灏嗭細
+```csharp
+return await CompleteTaskAsync(task);
+```
+
+淇敼涓猴細
+```csharp
+return await CompleteTaskAsync(task, "鍑哄簱瀹屾垚");
+```
+
+- [ ] **Step 3: 淇敼 RelocationFinishTaskAsync 鐨� CompleteTaskAsync 璋冪敤**
+
+灏嗭細
+```csharp
+return await CompleteTaskAsync(task);
+```
+
+淇敼涓猴細
+```csharp
+return await CompleteTaskAsync(task, "绉诲簱瀹屾垚");
+```
+
+- [ ] **Step 4: 鏋勫缓楠岃瘉**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj
+```
+
+- [ ] **Step 5: 鎻愪氦**
+
+```bash
+git add WIDESEA_TaskInfoService/TaskService.cs
+git commit -m "feat(TaskService): 浠诲姟瀹屾垚鏂规硶浼犲叆姝g‘鐨凮perateType"
+```
+
+---
+
+## Task 4: InboundFinishTaskTrayAsync 娣诲姞鍘嗗彶淇濆瓨
+
+**Files:**
+- Modify: `WIDESEA_TaskInfoService/TaskService.cs`锛坄InboundFinishTaskTrayAsync` 鏂规硶锛岀害绗� 403 琛岋級
+
+- [ ] **Step 1: 鍦ㄥ垹闄や换鍔″墠娣诲姞浠诲姟鍘嗗彶鍜屽簱瀛樺巻鍙蹭繚瀛�**
+
+鍦� `var deleteResult = await BaseDal.DeleteDataAsync(task);` 涔嬪墠娣诲姞锛�
+
+```csharp
+// 淇濆瓨浠诲姟鍘嗗彶
+var historyTask = _mapper.Map<Dt_Task_Hty>(task);
+historyTask.InsertTime = DateTime.Now;
+historyTask.OperateType = "绌烘墭鐩樺叆搴撳畬鎴�";
+if (await _task_HtyService.Repository.AddDataAsync(historyTask) <= 0)
+    return content.Error("浠诲姟鍘嗗彶淇濆瓨澶辫触");
+
+// 淇濆瓨搴撳瓨鍘嗗彶
+var historyStock = _mapper.Map<Dt_StockInfo_Hty>(stockInfo);
+historyStock.InsertTime = DateTime.Now;
+historyStock.OperateType = "绌烘墭鐩樺叆搴撳畬鎴�";
+if (await _stockInfo_HtyService.Repository.AddDataAsync(historyStock) <= 0)
+    return content.Error("搴撳瓨鍘嗗彶淇濆瓨澶辫触");
+```
+
+- [ ] **Step 2: 鏋勫缓楠岃瘉**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj
+```
+
+- [ ] **Step 3: 鎻愪氦**
+
+```bash
+git add WIDESEA_TaskInfoService/TaskService.cs
+git commit -m "feat(TaskService): InboundFinishTaskTrayAsync娣诲姞浠诲姟鍜屽簱瀛樺巻鍙蹭繚瀛�"
+```
+
+---
+
+## Task 5: OutboundFinishTaskTrayAsync 娣诲姞鍘嗗彶淇濆瓨
+
+**Files:**
+- Modify: `WIDESEA_TaskInfoService/TaskService.cs`锛坄OutboundFinishTaskTrayAsync` 鏂规硶锛岀害绗� 487 琛岋級
+
+- [ ] **Step 1: 鍦ㄥ垹闄や换鍔″墠娣诲姞浠诲姟鍘嗗彶鍜屽簱瀛樺巻鍙蹭繚瀛�**
+
+鍦� `var deleteResult = await BaseDal.DeleteDataAsync(task);` 涔嬪墠娣诲姞锛�
+
+```csharp
+// 淇濆瓨浠诲姟鍘嗗彶
+var historyTask = _mapper.Map<Dt_Task_Hty>(task);
+historyTask.InsertTime = DateTime.Now;
+historyTask.OperateType = "绌烘墭鐩樺嚭搴撳畬鎴�";
+if (await _task_HtyService.Repository.AddDataAsync(historyTask) <= 0)
+    return content.Error("浠诲姟鍘嗗彶淇濆瓨澶辫触");
+
+// 淇濆瓨搴撳瓨鍘嗗彶
+var historyStock = _mapper.Map<Dt_StockInfo_Hty>(stockInfo);
+historyStock.InsertTime = DateTime.Now;
+historyStock.OperateType = "绌烘墭鐩樺嚭搴撳畬鎴�";
+if (await _stockInfo_HtyService.Repository.AddDataAsync(historyStock) <= 0)
+    return content.Error("搴撳瓨鍘嗗彶淇濆瓨澶辫触");
+```
+
+- [ ] **Step 2: 鏋勫缓楠岃瘉**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj
+```
+
+- [ ] **Step 3: 鎻愪氦**
+
+```bash
+git add WIDESEA_TaskInfoService/TaskService.cs
+git commit -m "feat(TaskService): OutboundFinishTaskTrayAsync娣诲姞浠诲姟鍜屽簱瀛樺巻鍙蹭繚瀛�"
+```
+
+---
+
+## Task 6: 鏁翠綋鏋勫缓楠岃瘉
+
+- [ ] **Step 1: 鏋勫缓鏁翠釜瑙e喅鏂规**
+
+```bash
+cd WIDESEA_WMSServer && dotnet build WIDESEA_WMSServer.sln
+```
+
+纭鏃犵紪璇戦敊璇��
+
+---
+
+## 楠岃瘉妫�鏌ユ竻鍗�
+
+- [ ] `ITask_HtyService` 鍜� `IStockInfo_HtyService` 宸叉敞鍏�
+- [ ] `CompleteTaskAsync` 绛惧悕宸蹭慨鏀逛负甯� `operateType` 鍙傛暟
+- [ ] `InboundFinishTaskAsync` 浼犲叆 `"鍏ュ簱瀹屾垚"`
+- [ ] `OutboundFinishTaskAsync` 浼犲叆 `"鍑哄簱瀹屾垚"`
+- [ ] `RelocationFinishTaskAsync` 浼犲叆 `"绉诲簱瀹屾垚"`
+- [ ] `InboundFinishTaskTrayAsync` 娣诲姞浜嗕换鍔″巻鍙插拰搴撳瓨鍘嗗彶
+- [ ] `OutboundFinishTaskTrayAsync` 娣诲姞浜嗕换鍔″巻鍙插拰搴撳瓨鍘嗗彶
+- [ ] 瑙e喅鏂规鏋勫缓鏃犻敊璇�

--
Gitblit v1.9.3