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
{
///
/// 出库码头处理器
///
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 HandleAsync(AgvExcutionInfo agvExcutionInfo, AGVTaskDto agvTask, StorageRackDto destWarehouse)
{
destWarehouse.BarCode = agvTask.BarCode;
agvTask.TaskStatus = TaskStatusEnum.Completed;
await UnlockAndSetMiddleWarehouse(destWarehouse);
return await _agvTaskService.UpdateAgvTaskStatus(agvTask);
}
///
/// 解锁中区库位并绑定合格证
///
///
private async Task UnlockAndSetMiddleWarehouse(StorageRackDto storageRack)
{
if (storageRack.Transport != TransportEnum.MiddleOutArea)
return;
storageRack.IsLock = false;
await _storageRackService.EditSingalWithSpecificCols(storageRack, ["IsLock", "BarCode"]);
}
}
}