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"]); } } }