diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs index 1c0dbcb4..a65c163d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs @@ -85,9 +85,11 @@ namespace Tnb.WarehouseMgr try { var elevator = await _db.Queryable().LeftJoin((a, b) => a.id == b.bill_id) - .LeftJoin((a, b, c) => b.location_id == c.startlocation_id) - .Where((a, b, c) => c.startlocation_code == input.sourceName && c.bill_code == input.taskCode) - .FirstAsync(); + .LeftJoin((a, b, c) => b.location_id == c.startlocation_id) + .LeftJoin((a, b, c, d) => c.startlocation_id == d.location_id) + .Where((a, b, c, d) => d.point_code == input.sourceName && c.bill_code == input.taskCode) + .FirstAsync(); + (int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(elevator.elevator_code, CancellationToken.None); Log.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum().ToString()},运行状态:{runStatus.ToEnum().ToString()},Agv状态:{agvStatus.ToEnum().ToString()},当前楼层:{floorNo}"); if (floorNo == 3) @@ -127,10 +129,11 @@ namespace Tnb.WarehouseMgr { //根据Agv传递的参数获取,对应的电梯 var elevator = await _db.Queryable().LeftJoin((a, b) => a.id == b.bill_id) - .LeftJoin((a, b, c) => b.location_id == c.endlocation_id) - .Where((a, b, c) => c.endlocation_code == input.targetName && c.bill_code == input.taskCode) - .OrderBy(a => a.elevator_code) - .FirstAsync(); + .LeftJoin((a, b, c) => b.location_id == c.startlocation_id) + .LeftJoin((a, b, c, d) => c.startlocation_id == d.location_id) + .Where((a, b, c, d) => d.point_code == input.sourceName && c.bill_code == input.taskCode) + .FirstAsync(); + (int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(elevator.elevator_code, CancellationToken.None); Log.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum().ToString()},运行状态:{runStatus.ToEnum().ToString()},Agv状态:{agvStatus.ToEnum().ToString()},当前楼层:{floorNo}"); //判断Agv电梯是否进入状态 @@ -240,6 +243,21 @@ namespace Tnb.WarehouseMgr disTaskIds = disTasks.Select(x => x.id).ToList() }; await _wareHouseService.TaskExecuteAfter(taskExecuteAfterUpInput); + var elevatorQueueItem = await _db.Queryable().FirstAsync(it => disTasks.Select(x => x.id).Contains(it.distask_id) && it.task_status == "执行中"); + if (elevatorQueueItem != null) + { + var disTask = disTasks.Find(x => x.id == elevatorQueueItem.distask_id); + if (disTask?.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID) + { + var doorStatus = await _elevatorControlService.GetTagAsync(elevatorQueueItem.elevator_code, ElevatorConsts.DoorStatus); + if (doorStatus.ToEnum() != EnumDoorStatus.关门到位保持) + { + await _elevatorControlService.SendOpenCloseCmd(elevatorQueueItem.elevator_code, 4); //向电梯发送前门关门指令 + await _db.Deleteable(elevatorQueueItem).ExecuteCommandAsync(); + } + } + } + } else if (input.action == "UNLOAD") {