From cd27e66302c3c44b4d33bd79ea67cb0b740e8b23 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Mon, 11 Dec 2023 16:20:30 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=9E=E9=87=87=E8=B4=AD=E4=B8=8A=E6=9E=B6-?= =?UTF-8?q?=E6=94=B9=E7=AE=B1=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Domain/Services/InStockService.cs | 86 +++++++++++++------ 1 file changed, 62 insertions(+), 24 deletions(-) diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 2527917a..f2257392 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -223,7 +223,7 @@ namespace WMS.Web.Domain.Services var orgs_result = await _erpService.BillQueryForOrg(); if (orgs_result.IsSuccess) orgs = orgs_result.Data.ToList(); - var currentOrg= orgs.Where(x => x.Number == dto.OrgCode).FirstOrDefault(); + var currentOrg = orgs.Where(x => x.Number == dto.OrgCode).FirstOrDefault(); var entity = new InStock(); entity.Type = type; @@ -256,24 +256,24 @@ namespace WMS.Web.Domain.Services //处理添加入库汇总明细 var totalDetails = dto.Details.GroupBy(x => new { x.TaskId, x.SourceBillNo, x.SupplierId, x.MaterialId }) - .Select(x => new InStockTotalDetails + .Select(x => new InStockTotalDetails { - InStockId= entity.Id, - TaskId=x.Key.TaskId, - SourceBillNo=x.Key.SourceBillNo, - SupplierId=x.Key.SupplierId, - MaterialId=x.Key.MaterialId, - Qty=x.Sum(t=>t.Qty), - SerialNumbers= x.SelectMany(t=>t.SerialNumbers).ToList() + InStockId = entity.Id, + TaskId = x.Key.TaskId, + SourceBillNo = x.Key.SourceBillNo, + SupplierId = x.Key.SupplierId, + MaterialId = x.Key.MaterialId, + Qty = x.Sum(t => t.Qty), + SerialNumbers = x.SelectMany(t => t.SerialNumbers).ToList() }).ToList(); - var isSuccess= await _inStockRepositories.AddRangeTotalDetails(totalDetails, isTransaction); + var isSuccess = await _inStockRepositories.AddRangeTotalDetails(totalDetails, isTransaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); //同步金蝶后,反写任务单的已交数量 var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList(); var tasks = await _inStockTaskRepositories.GetList(taskIds); - if (tasks != null && tasks.Count!=0) + if (tasks != null && tasks.Count != 0) { foreach (var task in tasks) { @@ -289,7 +289,7 @@ namespace WMS.Web.Domain.Services }); task.Shelf(loginInfo.UserInfo.StaffId); } - + isSuccess = await _inStockTaskRepositories.UpdateRange(tasks, isTransaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); @@ -330,11 +330,11 @@ namespace WMS.Web.Domain.Services //1.1.2判断上架数量不能超过应入库数量 var dtoDetails = dto.Boxs.SelectMany(x => x.Details).ToList(); - var dtoTotalDetails=dtoDetails.GroupBy(x => new { x.ErpDetailId }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, Qty = x.Sum(t => t.Qty) }).ToList(); + var dtoTotalDetails = dtoDetails.GroupBy(x => new { x.ErpDetailId }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, Qty = x.Sum(t => t.Qty) }).ToList(); foreach (var item in task.Details) { - var current_det= dtoTotalDetails.Where(x => x.ErpDetailId == item.ErpDetailId).FirstOrDefault(); - if(current_det!=null && current_det.ErpDetailId==item.ErpDetailId && (item.AccruedQty-item.RealityQty) x.ErpDetailId == item.ErpDetailId).FirstOrDefault(); + if (current_det != null && current_det.ErpDetailId == item.ErpDetailId && (item.AccruedQty - item.RealityQty) < current_det.Qty) return Result.ReFailure(ResultCodes.ShelfNoPurchaseSave_Qty_Error); } @@ -396,11 +396,11 @@ namespace WMS.Web.Domain.Services return Result.ReFailure(ResultCodes.DateWriteError); //处理添加入库汇总明细 - var totalDetails = dto.Boxs.SelectMany(x=>x.Details).GroupBy(x => new { x.MaterialId }) + var totalDetails = dto.Boxs.SelectMany(x => x.Details).GroupBy(x => new { x.MaterialId }) .Select(x => new InStockTotalDetails { InStockId = entity.Id, - TaskId =dto.TaskId, + TaskId = dto.TaskId, SourceBillNo = task.SourceBillNo, MaterialId = x.Key.MaterialId, Qty = x.Sum(t => t.Qty), @@ -438,32 +438,70 @@ namespace WMS.Web.Domain.Services var cureent_serialNumbs = await _serialNumbersRepositories.GetEntityList(dto.Boxs.SelectMany(x => x.Details).SelectMany(x => x.SerialNumbers).ToList()); var current_boxIds = cureent_serialNumbs.GroupBy(x => x.BoxId).Select(x => x.Key).ToList(); + //当前序列号对应的箱的集合信息 + var current_boxs = await _boxRepositories.GetEntityList(current_boxIds); + //要改箱的数据集合 var ganenrateChangeBoxs = new List(); //当前按产品上架的箱子 var dto_box = dto.Boxs.FirstOrDefault(); + //其它还要拼装的物料明细 + var tag_dto_erpDetIds = new List(); + //遍历:序列号对应多个箱 foreach (var boxId in current_boxIds) { if (dto_box.BoxId != boxId) { + var box = current_boxs.Where(x => x.Id == boxId).FirstOrDefault(); //遍历:明细 var changeBox = new SaveChangeBoxRecordRequest(); changeBox.DestBoxId = dto_box.BoxId; - changeBox.SrcBoxId = boxId; changeBox.SubStockId = dto.SubStockId; foreach (var item in dto_box.Details) { - var changeBoxRD = new SaveChangeBoxRecordDetailsRequest(); - changeBoxRD.MaterialId = item.MaterialId; - changeBoxRD.Qty = item.Qty; - changeBoxRD.SerialNumbers = item.SerialNumbers; - changeBox.Details.Add(changeBoxRD); + var boxDet= box.Details.Where(t => t.MaterialId == item.MaterialId).FirstOrDefault(); + if (boxDet != null && boxDet.MaterialId == item.MaterialId) + { + var changeBoxRD = new SaveChangeBoxRecordDetailsRequest(); + changeBoxRD.MaterialId = item.MaterialId; + changeBoxRD.Qty = item.Qty; + changeBoxRD.SerialNumbers = item.SerialNumbers; + changeBox.Details.Add(changeBoxRD); + } + else + tag_dto_erpDetIds.Add(item.ErpDetailId); + } + //当明细存在,则要有原箱的情况下进行改箱 + if (changeBox.Details.Count != 0) + { + changeBox.SrcBoxId = boxId; + ganenrateChangeBoxs.Add(changeBox); } - ganenrateChangeBoxs.Add(changeBox); } } + //去重复 + var tagtag_dto_erpDetIds_new= tag_dto_erpDetIds.GroupBy(id => id).Select(x=>x.Key).ToList(); + //没有原箱的情况下,要改箱操作对象 + var changeBox_tag = new SaveChangeBoxRecordRequest(); + changeBox_tag.DestBoxId = dto_box.BoxId; + changeBox_tag.SrcBoxId = 0; + changeBox_tag.SubStockId = dto.SubStockId; + foreach (var item in dto_box.Details) + { + var current_erp_detId= tagtag_dto_erpDetIds_new.Where(id => item.ErpDetailId == id).FirstOrDefault(); + if (current_erp_detId != 0 && current_erp_detId == item.ErpDetailId) + { + //遍历:明细 + var changeBoxRD = new SaveChangeBoxRecordDetailsRequest(); + changeBoxRD.MaterialId = item.MaterialId; + changeBoxRD.Qty = item.Qty; + changeBoxRD.SerialNumbers = item.SerialNumbers; + changeBox_tag.Details.Add(changeBoxRD); + } + } + ganenrateChangeBoxs.Add(changeBox_tag); //改箱保存操作 var changeBoxSave_Result = await _changeMoveBoxService.ChangeBoxSave(ganenrateChangeBoxs, loginInfo, isTransaction);