From eee46a2efaa029243c8c5d5e89fe8dc057bc7636 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Sat, 25 Nov 2023 15:03:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E5=AD=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/BoxInventoryService.cs | 78 ++++++++++++++++--- src/WMS.Web.Domain/Services/InStockService.cs | 1 + 2 files changed, 67 insertions(+), 12 deletions(-) diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs index 59660a0c..15b0492e 100644 --- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs +++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs @@ -748,9 +748,18 @@ namespace WMS.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } //5.即时库存:变更 - if (InventoryDetailsGenerateDto.Count != 0) + //5.1先合并相同的数据 + var invDetGenDtos = InventoryDetailsGenerateDto.GroupBy(x => new { x.OrgCode, x.MaterialId, x.StockCode, x.SubStockId }).Select(x => new InventoryDetailsGenerateDto() { - var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction); + OrgCode = x.Key.OrgCode, + StockCode = x.Key.StockCode, + MaterialId = x.Key.MaterialId, + SubStockId = x.Key.SubStockId, + Qty = x.Sum(t => t.Qty) + }).ToList(); + if (invDetGenDtos.Count != 0) + { + var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction); if (!InventoryDetailsGenerate_result.IsSuccess) return InventoryDetailsGenerate_result; } @@ -870,9 +879,18 @@ namespace WMS.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } //5.即时库存:处理 - if (InventoryDetailsGenerateDto.Count != 0) + //5.1先合并相同的数据 + var invDetGenDtos = InventoryDetailsGenerateDto.GroupBy(x => new { x.OrgCode, x.MaterialId, x.StockCode, x.SubStockId }).Select(x => new InventoryDetailsGenerateDto() { - var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction); + OrgCode = x.Key.OrgCode, + StockCode = x.Key.StockCode, + MaterialId = x.Key.MaterialId, + SubStockId = x.Key.SubStockId, + Qty = x.Sum(t => t.Qty) + }).ToList(); + if (invDetGenDtos.Count != 0) + { + var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction); if (!InventoryDetailsGenerate_result.IsSuccess) return InventoryDetailsGenerate_result; } @@ -1011,9 +1029,18 @@ namespace WMS.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } //5.即时库存:处理 - if (InventoryDetailsGenerateDto.Count != 0) + //5.1先合并相同的数据 + var invDetGenDtos = InventoryDetailsGenerateDto.GroupBy(x => new { x.OrgCode, x.MaterialId, x.StockCode, x.SubStockId }).Select(x => new InventoryDetailsGenerateDto() { - var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction); + OrgCode = x.Key.OrgCode, + StockCode = x.Key.StockCode, + MaterialId = x.Key.MaterialId, + SubStockId = x.Key.SubStockId, + Qty = x.Sum(t => t.Qty) + }).ToList(); + if (invDetGenDtos.Count != 0) + { + var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction); if (!InventoryDetailsGenerate_result.IsSuccess) return InventoryDetailsGenerate_result; } @@ -1138,9 +1165,18 @@ namespace WMS.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } //5.即时库存:处理 - if (InventoryDetailsGenerateDto.Count != 0) + //5.1先合并相同的数据 + var invDetGenDtos = InventoryDetailsGenerateDto.GroupBy(x => new { x.OrgCode, x.MaterialId, x.StockCode, x.SubStockId }).Select(x => new InventoryDetailsGenerateDto() { - var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction); + OrgCode = x.Key.OrgCode, + StockCode = x.Key.StockCode, + MaterialId = x.Key.MaterialId, + SubStockId = x.Key.SubStockId, + Qty = x.Sum(t => t.Qty) + }).ToList(); + if (invDetGenDtos.Count != 0) + { + var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction); if (!InventoryDetailsGenerate_result.IsSuccess) return InventoryDetailsGenerate_result; } @@ -1263,9 +1299,18 @@ namespace WMS.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } //5.即时库存:处理 - if (InventoryDetailsGenerateDto.Count != 0) + //5.1先合并相同的数据 + var invDetGenDtos= InventoryDetailsGenerateDto.GroupBy(x => new { x.OrgCode, x.MaterialId, x.StockCode, x.SubStockId }).Select(x => new InventoryDetailsGenerateDto() { - var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction); + OrgCode=x.Key.OrgCode, + StockCode=x.Key.StockCode, + MaterialId=x.Key.MaterialId, + SubStockId=x.Key.SubStockId, + Qty=x.Sum(t=>t.Qty) + }).ToList(); + if (invDetGenDtos.Count != 0) + { + var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction); if (!InventoryDetailsGenerate_result.IsSuccess) return InventoryDetailsGenerate_result; } @@ -1381,9 +1426,18 @@ namespace WMS.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } //5.即时库存:变更处理 - if (InventoryDetailsGenerateDto.Count != 0) + //5.1先合并相同的数据 + var invDetGenDtos = InventoryDetailsGenerateDto.GroupBy(x => new { x.OrgCode, x.MaterialId, x.StockCode, x.SubStockId }).Select(x => new InventoryDetailsGenerateDto() { - var inventoryDetails_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction); + OrgCode = x.Key.OrgCode, + StockCode = x.Key.StockCode, + MaterialId = x.Key.MaterialId, + SubStockId = x.Key.SubStockId, + Qty = x.Sum(t => t.Qty) + }).ToList(); + if (invDetGenDtos.Count != 0) + { + var inventoryDetails_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction); if (!inventoryDetails_result.IsSuccess) return inventoryDetails_result; } diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 174f37fa..f2a51edf 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -167,6 +167,7 @@ namespace WMS.Web.Domain.Services result.BoxId = box.Id; foreach (var item in box.Details) { + //这里找任务单的物料条件:物料ID和应入库数量大于收货数量,防止有同样的物料数据,收货的时候 会有收货数量,只要找到没有收完的就行了 var current_task_Det= tast.Details.Where(x => x.MaterialId == item.MaterialId && x.AccruedQty>x.ReceiveQty).FirstOrDefault(); //3.2映射返回明细对象 var box_task_detail = new BoxDetailsInStockTaskDto();