using WIDESEA_Common.LocationEnum;
|
using WIDESEA_Common.StockEnum;
|
using WIDESEA_Common.TaskEnum;
|
using WIDESEA_Core;
|
using WIDESEA_DTO.Task;
|
|
namespace WIDESEA_TaskInfoService
|
{
|
public partial class TaskService
|
{
|
#region 移库任务
|
|
/// <summary>
|
/// 移库任务完成:修改库存位置与状态,修改源/目标货位状态,删除任务数据
|
/// </summary>
|
public async Task<WebResponseContent> RelocationFinishTaskAsync(CreateTaskDto taskDto)
|
{
|
try
|
{
|
var task = await BaseDal.QueryFirstAsync(s =>
|
s.PalletCode == taskDto.PalletCode &&
|
s.TaskType == TaskRelocationTypeEnum.Relocation.GetHashCode());
|
if (task == null) return WebResponseContent.Instance.Error("未找到对应的移库任务");
|
|
var sourceLocation = await _locationInfoService.GetLocationInfo(task.Roadway, task.SourceAddress);
|
if (sourceLocation == null) return WebResponseContent.Instance.Error("未找到移库源货位");
|
|
var targetLocation = await _locationInfoService.GetLocationInfo(task.Roadway, task.TargetAddress);
|
if (targetLocation == null) return WebResponseContent.Instance.Error("未找到移库目标货位");
|
|
var stockInfo = await _stockInfoService.GetStockInfoAsync(taskDto.PalletCode);
|
if (stockInfo == null) return WebResponseContent.Instance.Error("未找到对应库存信息");
|
|
return await _unitOfWorkManage.BeginTranAsync(async () =>
|
{
|
stockInfo.LocationCode = targetLocation.LocationCode;
|
stockInfo.LocationId = targetLocation.Id;
|
stockInfo.StockStatus = StockStatusEmun.入库完成.GetHashCode();
|
|
sourceLocation.LocationStatus = LocationStatusEnum.Free.GetHashCode();
|
targetLocation.LocationStatus = LocationStatusEnum.InStock.GetHashCode();
|
|
var updateSourceResult = await _locationInfoService.UpdateLocationInfoAsync(sourceLocation);
|
var updateTargetResult = await _locationInfoService.UpdateLocationInfoAsync(targetLocation);
|
var updateStockResult = await _stockInfoService.UpdateStockAsync(stockInfo);
|
|
if (!updateSourceResult || !updateTargetResult || !updateStockResult)
|
return WebResponseContent.Instance.Error("移库任务完成失败");
|
|
return await CompleteTaskAsync(task, "移库完成");
|
});
|
}
|
catch (Exception ex)
|
{
|
return WebResponseContent.Instance.Error($"完成任务失败: {ex.Message}");
|
}
|
}
|
|
#endregion 移库任务
|
}
|
}
|