using JSMachine.WMS.App.Dto.Enum; using JSMachine.WMS.App.Dto; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using JSMachine.WMS.PLC.ModbusImpl.Elevator.ModbusIO.Read; using JSMachine.WMS.PLC.ModbusImpl.Elevator.Model; using JSMachine.WMS.App.IService; using JSMachine.WMS.Infrastructure; using JSMachine.WMS.Infrastructure.Helper; namespace JSMachine.WMS.PLC.ModbusImpl.Elevator.Util { public static class ElevatorUtil { private static IStorageRackService IStorageRackService = GlobalServericeProvidor.GetService(); private static IERPTaskService IERPTaskService = GlobalServericeProvidor.GetService(); /// /// 获取可用的提升机库位 /// /// /// public static async Task GetUsableElevatorChannel(Guid erpTaskId,FloorEnum floor) { List usableElevatorWareHouse = await IStorageRackService.GetUsableElevatorWareHouse(floor); if (usableElevatorWareHouse.IsNullOrEmpty()) { string msg = $"{(floor == FloorEnum.FirstFloor ? 1 : 2)}楼所有提升机库位均被WMS锁定"; LogHelper.Warn(msg); _ = IERPTaskService.UpdateTaskMsg(erpTaskId, msg); return null; } List elevatorPlcStatuses = await ElevatorStatusRead.ReadAllElevatorStatus(); StorageRackDto elevator = null; foreach (StorageRackDto elvatorWarehouse in usableElevatorWareHouse) { int elevatorNo = elvatorWarehouse.StorageRackName.Contains("1号") ? 1 : 2; ElevatorPlcStatus elevatorPlcStatus = elevatorPlcStatuses.First(p => p.ElevatorNo == elevatorNo); if (floor == FloorEnum.FirstFloor) { if (elvatorWarehouse.ElevatorChannel == 1011 && elevatorPlcStatus.StockInPutdownChanelOne || elvatorWarehouse.ElevatorChannel == 1001 && elevatorPlcStatus.StockInPutdownChanelTwo) { elevator = elvatorWarehouse; break; } } else { if (elvatorWarehouse.ElevatorChannel == 2011 && elevatorPlcStatus.StockOutPutdownChanelOne || elvatorWarehouse.ElevatorChannel == 2001 && elevatorPlcStatus.StockOutPutdownChanelTwo) { elevator = elvatorWarehouse; break; } } } if(elevator == null) { string msg = $"{(floor == FloorEnum.FirstFloor ? 1 : 2)}楼 提升机库位不允许放货或者被WMS锁定"; LogHelper.Warn(msg); _ = IERPTaskService.UpdateTaskMsg(erpTaskId, msg); } return elevator; } } }