调整呼梯逻辑代码

This commit is contained in:
yang.lee
2023-11-23 17:09:02 +08:00
parent 31c4deb0e2
commit 5c639049be
2 changed files with 14 additions and 10 deletions

View File

@@ -90,7 +90,7 @@ namespace Tnb.WarehouseMgr
.Select((a, b, c, d) => new WmsElevatorH
{
distask_id = c.id,
device_id = c.device_id,
device_id = a.elevator_id,
}, true)
.FirstAsync();

View File

@@ -238,7 +238,7 @@ namespace Tnb.WarehouseMgr
List<WmsElevatorH> elevatorList = await db.Queryable<WmsElevatorH>().InnerJoin<WmsElevatorD>((a, b) => a.id == b.bill_id)
.Select((a, b) => new WmsElevatorH
{
bill_id = b.bill_id,
location_id = b.location_id,
location_code = b.location_code,
@@ -248,7 +248,6 @@ namespace Tnb.WarehouseMgr
}, true).ToListAsync();
Logger.Information($"elevatorList:{JsonConvert.SerializeObject(elevatorList)}");
//获取所有未下发的预任务申请
List<WmsPretaskH> preTasks = await db.Queryable<WmsPretaskH>().InnerJoin<WmsCarryH>((a, b) => a.startlocation_id == b.location_id && a.carry_id == b.id)
@@ -409,15 +408,20 @@ namespace Tnb.WarehouseMgr
{
//呼梯操作
//获取目标库位为电梯库位的任务
List<(string endlocation_code, string device_id, string id, string? start_floor)> endLocCodes = disTasks
.Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) &&
!it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase))
.Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList();
if (endLocCodes?.Count > 0)
var eleTasks = disTasks.Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) &&
!it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase))
.ToList();
foreach (var et in eleTasks)
{
await CallingLanding(endLocCodes);
var ele = elevatorList.Find(x => x.location_code == et.endlocation_code);
if(ele!=null)
{
et.device_id = ele.elevator_id;
}
}
List<(string endlocation_code, string device_id, string id, string? start_floor)> endLocCodes = eleTasks
.Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList();
//执行电梯任务
List<WmsDistaskH>? elevatorTasks = disTasks.Where(it => it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList();