From 5fde13ece91002f3b66895ea51fdfa9681e37101 Mon Sep 17 00:00:00 2001 From: "yang.lee" Date: Mon, 11 Dec 2023 15:06:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E4=BD=8D=E5=AF=BC=E5=85=A5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.BasicData.Entities/Entity/BasLocation.cs | 2 +- .../Tnb.WarehouseMgr/LocationDefinitionService.cs | 1 + WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs | 12 ++++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasLocation.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasLocation.cs index 019570d6..03c249a9 100644 --- a/BasicData/Tnb.BasicData.Entities/Entity/BasLocation.cs +++ b/BasicData/Tnb.BasicData.Entities/Entity/BasLocation.cs @@ -125,5 +125,5 @@ public partial class BasLocation : BaseEntity /// /// 是否超配(1:不超配 2:超配) /// - public string is_overmatch { get; set; } = 1; + public string is_overmatch { get; set; } = "1"; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs b/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs index a0cb7565..f5eb3179 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs @@ -127,6 +127,7 @@ namespace Tnb.WarehouseMgr l.modify_time = null; l.is_mix = 1; l.is_use = "0"; + l.is_overmatch = "1"; } if (locs.Count > 1000) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index dca6433a..8afa268e 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -259,7 +259,7 @@ namespace Tnb.WarehouseMgr List preTasks = await db.Queryable().InnerJoin((a, b) => a.startlocation_id == b.location_id && a.carry_id == b.id) .InnerJoin((a, b, c) => a.area_id == c.id) .InnerJoin((a, b, c, d) => a.endlocation_id == d.id && d.is_use == "0") - .Where(a => a.status == WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID && !string.IsNullOrWhiteSpace(a.startlocation_id)) + .Where(a => a.status != WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID && !string.IsNullOrWhiteSpace(a.startlocation_id)) .OrderBy(a => new { priority = SqlFunc.Desc(a.priority), a.bill_code }) .Select((a, b, c, d) => new WmsPretaskH { @@ -268,19 +268,27 @@ namespace Tnb.WarehouseMgr }, true) .ToListAsync(); + List executedPreTasks = await db.Queryable().Where(it => it.status != WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID && it.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID).ToListAsync(); + List agvElevatorTasks = preTasks .Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) && !it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)) .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 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().ToList()!; + var diffEndLocPreTasks = executedPreTasks.Where(it => firstEleGrp.Select(x => x.endlocation_id).Contains(it.endlocation_id)).ToList(); + if(diffEndLocPreTasks?.Count> 0) + { + agvElevatorTasks = agvElevatorTasks.Where(it => !diffEndLocPreTasks.Select(x => x.endlocation_id).Contains(it.endlocation_id)).ToList(); + } + //如果电梯任务,预Agv任务存在相同目标库位,删除Agv任务保证电梯任务先行 var equalEndLocPreTasks = elePreTasks.Select(x => x.endlocation_code).Intersect(agvElevatorTasks.Select(x => x.endlocation_code)); if (equalEndLocPreTasks.Any())