预任务执行,如果电梯任务,预Agv任务存在相同目标库位,删除Agv任务保证电梯任务先行
This commit is contained in:
@@ -265,12 +265,22 @@ namespace Tnb.WarehouseMgr
|
||||
.Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) &&
|
||||
!it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase))
|
||||
.ToList();
|
||||
preTasks = preTasks.Where(it => !agvElevatorTasks.Select(x => x.endlocation_code).Contains(it.endlocation_code)).ToList();
|
||||
|
||||
//it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)
|
||||
var elePreTasks = preTasks.Where(it => it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList();
|
||||
var normalPreTasks = preTasks.Where(it => !agvElevatorTasks.Concat(elePreTasks).Select(x => x.endlocation_code).Contains(it.endlocation_code)).ToList();
|
||||
|
||||
IEnumerable<WmsPretaskH?> firstEleGrp = agvElevatorTasks.GroupBy(g => g.endlocation_code).Select(t => t.OrderBy(o => o.bill_code).FirstOrDefault());
|
||||
//agvElevatorTasks = agvElevatorTasks.FindAll(x => firstEleGrp.Select(y => y.endlocation_code).Contains(x.endlocation_code)).DistinctBy(x=>x.endlocation_code).ToList();
|
||||
agvElevatorTasks = firstEleGrp?.ToList() ?? Enumerable.Empty<WmsPretaskH?>().ToList();
|
||||
preTasks = preTasks.Concat(agvElevatorTasks).ToList();
|
||||
agvElevatorTasks = firstEleGrp?.ToList() ?? Enumerable.Empty<WmsPretaskH>().ToList()!;
|
||||
|
||||
//如果电梯任务,预Agv任务存在相同目标库位,删除Agv任务保证电梯任务先行
|
||||
var equalEndLocPreTasks = elePreTasks.Select(x => x.endlocation_code).Intersect(agvElevatorTasks.Select(x => x.endlocation_code));
|
||||
if (equalEndLocPreTasks.Any())
|
||||
{
|
||||
agvElevatorTasks = agvElevatorTasks.Where(x => !equalEndLocPreTasks.Contains(x.endlocation_code)).ToList();
|
||||
}
|
||||
preTasks = normalPreTasks.Concat(agvElevatorTasks).Concat(elePreTasks).ToList();
|
||||
|
||||
|
||||
List<string> ids = preTasks.Select(x => x.id).Distinct().ToList();
|
||||
|
||||
Reference in New Issue
Block a user