diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index 913f768..b8de40f 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -1,4 +1,5 @@ -using Khd.Core.Domain.Models; +using AngleSharp.Dom; +using Khd.Core.Domain.Models; using Khd.Core.EntityFramework; using Khd.Core.Library; using Khd.Core.Library.Mapper; @@ -166,6 +167,19 @@ namespace Khd.Core.Wcs.Wcs wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位 if (wmsBaseLocation != null)//如果找到库位,生成入库任务 { + if (wmsBaseLocation.locDeep == 1) + { + bool hasLocation = wmsBaseLocations + .Where(t => t.locRow == (wmsBaseLocation.locRow % 2 == 1 ? (wmsBaseLocation.locRow + 1) : (wmsBaseLocation.locRow - 1))) + .Where(t => t.locColumn == wmsBaseLocation.locColumn) + .Any(); + if (!hasLocation) + { + Console.WriteLine(DateTime.Now + $":目标库位{wmsBaseLocation.locationCode}的浅库位库位状态异常,无法移库"); + _logger.Info($"目标库位{wmsBaseLocation.locationCode}的浅库位库位状态异常,无法移库"); + continue; + } + } var wcsTask = new WcsTask() { objid = StaticData.SnowId.NextId(), @@ -267,6 +281,19 @@ namespace Khd.Core.Wcs.Wcs wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位 if (wmsBaseLocation != null)//如果找到库位,生成入库任务 { + if (wmsBaseLocation.locDeep == 1) + { + bool hasLocation = wmsBaseLocations + .Where(t => t.locRow == (wmsBaseLocation.locRow % 2 == 1 ? (wmsBaseLocation.locRow + 1) : (wmsBaseLocation.locRow - 1))) + .Where(t => t.locColumn == wmsBaseLocation.locColumn) + .Any(); + if (!hasLocation) + { + Console.WriteLine(DateTime.Now + $":目标库位{wmsBaseLocation.locationCode}的浅库位库位状态异常,无法移库"); + _logger.Info($"目标库位{wmsBaseLocation.locationCode}的浅库位库位状态异常,无法移库"); + continue; + } + } var wcsTask = new WcsTask() { objid = StaticData.SnowId.NextId(), @@ -821,6 +848,19 @@ namespace Khd.Core.Wcs.Wcs .FirstOrDefault(); if (toLocation != null) { + if (toLocation.locDeep == 1) + { + bool hasLocation = AllWmsBaseLocations + .Where(t => t.locRow == (toLocation.locRow % 2 == 1 ? (toLocation.locRow + 1) : (toLocation.locRow - 1))) + .Where(t => t.locColumn == toLocation.locColumn) + .Any(); + if (!hasLocation) + { + Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库"); + _logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库"); + continue; + } + } var RemoveTask = new WcsTask() { objid = StaticData.SnowId.NextId(), @@ -1113,7 +1153,7 @@ namespace Khd.Core.Wcs.Wcs WmsBaseLocation? wmsBaseLocation = AllWmsBaseLocations.Where(t => t.locRow == row) .Where(t => t.locColumn == location.locColumn) .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault(); - if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) + if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode) && wmsBaseLocation.locationStatus == "1") { WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode); if (wmsProductStock != null) @@ -1125,8 +1165,22 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.warehouseId != location.locationId) .Where(t => string.IsNullOrEmpty(t.containerCode)) .FirstOrDefault(); + if (toLocation != null) { + if (toLocation.locDeep == 1) + { + bool hasLocation = AllWmsBaseLocations + .Where(t => t.locRow == (toLocation.locRow % 2 == 1 ? (toLocation.locRow + 1) : (toLocation.locRow - 1))) + .Where(t => t.locColumn == toLocation.locColumn) + .Any(); + if (!hasLocation) + { + Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库"); + _logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库"); + continue; + } + } var RemoveTask = new WcsTask() { objid = StaticData.SnowId.NextId(), @@ -1169,6 +1223,12 @@ namespace Khd.Core.Wcs.Wcs continue; } } + else if (wmsBaseLocation != null && wmsBaseLocation.locationStatus != "1") + { + Console.WriteLine(DateTime.Now + $":{wmsBaseLocation.locationCode}库位状态异常,无法移库"); + _logger.Info($"{wmsBaseLocation.locationCode}库位状态异常,无法移库"); + continue; + } } } @@ -1349,10 +1409,10 @@ namespace Khd.Core.Wcs.Wcs } else { - WmsBaseLocation? wmsBaseLocation = AllWmsBaseLocations.Where(t => t.locRow == row) + WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row) .Where(t => t.locColumn == location.locColumn) .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault(); - if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) + if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode) && wmsBaseLocation.locationStatus == "1") { WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode); if (wmsProductStock != null) @@ -1372,6 +1432,19 @@ namespace Khd.Core.Wcs.Wcs .FirstOrDefault(); if (toLocation != null) { + if (toLocation.locDeep == 1) + { + bool hasLocation = AllWmsBaseLocations + .Where(t => t.locRow == (toLocation.locRow % 2 == 1 ? (toLocation.locRow + 1) : (toLocation.locRow - 1))) + .Where(t => t.locColumn == toLocation.locColumn) + .Any(); + if (!hasLocation) + { + Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库"); + _logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库"); + continue; + } + } var RemoveTask = new WcsTask() { objid = StaticData.SnowId.NextId(), @@ -1414,6 +1487,12 @@ namespace Khd.Core.Wcs.Wcs continue; } } + else if (wmsBaseLocation != null && wmsBaseLocation.locationStatus != "1") + { + Console.WriteLine(DateTime.Now + $":{wmsBaseLocation.locationCode}库位状态异常,无法移库"); + _logger.Info($"{wmsBaseLocation.locationCode}库位状态异常,无法移库"); + continue; + } } } wcsTask = new WcsTask() @@ -1945,7 +2024,7 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.locRow == row) .Where(t => t.locColumn == location.locColumn) .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault(); - if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) + if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)&&wmsBaseLocation.locationStatus=="1") { WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode); if (wmsRawStock != null) @@ -1959,6 +2038,19 @@ namespace Khd.Core.Wcs.Wcs .FirstOrDefault(); if (toLocation != null) { + if (toLocation.locDeep == 1) + { + bool hasLocation = AllWmsBaseLocations + .Where(t => t.locRow == (toLocation.locRow % 2 == 1 ? (toLocation.locRow + 1) : (toLocation.locRow - 1))) + .Where(t => t.locColumn == toLocation.locColumn) + .Any(); + if (!hasLocation) + { + Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库"); + _logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库"); + continue; + } + } var RemoveTask = new WcsTask() { objid = StaticData.SnowId.NextId(), @@ -2001,6 +2093,12 @@ namespace Khd.Core.Wcs.Wcs continue; } } + else if (wmsBaseLocation != null && wmsBaseLocation.locationStatus != "1") + { + Console.WriteLine(DateTime.Now + $":{wmsBaseLocation.locationCode}库位状态异常,无法移库"); + _logger.Info($"{wmsBaseLocation.locationCode}库位状态异常,无法移库"); + continue; + } } } wcsTask = new WcsTask()