Files
ww-jst/wmsjst/JSMachine.WMS.Business/RcsCallBack/ServiceImpl/StatePattern/PutdownCompleted/StockOutWharfHandler.cs
T
2026-09-02 16:31:50 +08:00

53 lines
1.8 KiB
C#

using JSMachine.WMS.App.Dto;
using JSMachine.WMS.App.Dto.Enum;
using JSMachine.WMS.App.IService;
using JSMachine.WMS.RPC.RcsRPC.Dto.In;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JSMachine.WMS.Business.RcsCallBack.ServiceImpl.StatePattern.PutdownCompleted
{
/// <summary>
/// 出库码头处理器
/// </summary>
public class StockOutWharfHandler : PutdownCompletedStateHandler
{
public StockOutWharfHandler
(IStorageRackService storageRackService,
IAGVTaskService agvTaskService,
IElevatorPlcQueueService elevatorPlcQueueService,
IElevatorCountService elevatorCountService,
IERPTaskService erpTaskService) :
base(storageRackService, agvTaskService, elevatorPlcQueueService, elevatorCountService, erpTaskService)
{
}
public async override Task<bool> HandleAsync(AgvExcutionInfo agvExcutionInfo, AGVTaskDto agvTask, StorageRackDto destWarehouse)
{
destWarehouse.BarCode = agvTask.BarCode;
agvTask.TaskStatus = TaskStatusEnum.Completed;
await UnlockAndSetMiddleWarehouse(destWarehouse);
return await _agvTaskService.UpdateAgvTaskStatus(agvTask);
}
/// <summary>
/// 解锁中区库位并绑定合格证
/// </summary>
/// <returns></returns>
private async Task UnlockAndSetMiddleWarehouse(StorageRackDto storageRack)
{
if (storageRack.Transport != TransportEnum.MiddleOutArea)
return;
storageRack.IsLock = false;
await _storageRackService.EditSingalWithSpecificCols(storageRack, ["IsLock", "BarCode"]);
}
}
}