# 任务库存历史记录实现计划 > **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 | 注入服务(ITask_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和IStockInfo_HtyService" ``` --- ## Task 2: 修改 CompleteTaskAsync 添加任务历史保存 **Files:** - Modify: `WIDESEA_TaskInfoService/TaskService.cs`(`CompleteTaskAsync` 方法) - [ ] **Step 1: 修改方法签名** 将: ```csharp private async Task CompleteTaskAsync(Dt_Task task) ``` 修改为: ```csharp private async Task CompleteTaskAsync(Dt_Task task, string operateType) ``` - [ ] **Step 2: 修改历史保存逻辑** 将: ```csharp var historyTask = _mapper.Map(task); historyTask.InsertTime = DateTime.Now; ``` 修改为: ```csharp var historyTask = _mapper.Map(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): 任务完成方法传入正确的OperateType" ``` --- ## Task 4: InboundFinishTaskTrayAsync 添加历史保存 **Files:** - Modify: `WIDESEA_TaskInfoService/TaskService.cs`(`InboundFinishTaskTrayAsync` 方法,约第 403 行) - [ ] **Step 1: 在删除任务前添加任务历史和库存历史保存** 在 `var deleteResult = await BaseDal.DeleteDataAsync(task);` 之前添加: ```csharp // 保存任务历史 var historyTask = _mapper.Map(task); historyTask.InsertTime = DateTime.Now; historyTask.OperateType = "空托盘入库完成"; if (await _task_HtyService.Repository.AddDataAsync(historyTask) <= 0) return content.Error("任务历史保存失败"); // 保存库存历史 var historyStock = _mapper.Map(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(task); historyTask.InsertTime = DateTime.Now; historyTask.OperateType = "空托盘出库完成"; if (await _task_HtyService.Repository.AddDataAsync(historyTask) <= 0) return content.Error("任务历史保存失败"); // 保存库存历史 var historyStock = _mapper.Map(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: 构建整个解决方案** ```bash cd WIDESEA_WMSServer && dotnet build WIDESEA_WMSServer.sln ``` 确认无编译错误。 --- ## 验证检查清单 - [ ] `ITask_HtyService` 和 `IStockInfo_HtyService` 已注入 - [ ] `CompleteTaskAsync` 签名已修改为带 `operateType` 参数 - [ ] `InboundFinishTaskAsync` 传入 `"入库完成"` - [ ] `OutboundFinishTaskAsync` 传入 `"出库完成"` - [ ] `RelocationFinishTaskAsync` 传入 `"移库完成"` - [ ] `InboundFinishTaskTrayAsync` 添加了任务历史和库存历史 - [ ] `OutboundFinishTaskTrayAsync` 添加了任务历史和库存历史 - [ ] 解决方案构建无错误