From f2e4d125cec265e2b01e4025d546eb1756207135 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Mon, 27 Nov 2023 11:54:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E7=AE=B1=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ChangeBoxRecordController.cs | 2 +- .../IService/IChangeMoveBoxService.cs | 2 +- .../Services/ChangeMoveBoxService.cs | 80 +++++++++++-------- 3 files changed, 48 insertions(+), 36 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs b/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs index fc13296f..4033d0e6 100644 --- a/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs +++ b/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs @@ -95,7 +95,7 @@ namespace WMS.Web.Api.Controllers if (loginInfo == null || loginInfo.UserInfo == null) return Result.ReFailure(ResultCodes.Token_Invalid_Error); - return await _changeMoveBoxService.ChangeBoxSave(dto, loginInfo); + return await _changeMoveBoxService.ChangeBoxSave(new List() { dto }, loginInfo); } } } diff --git a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs index 13fed661..84377c0a 100644 --- a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs @@ -17,7 +17,7 @@ namespace WMS.Web.Domain.IService public interface IChangeMoveBoxService { //改箱保存 - Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction=true); + Task ChangeBoxSave(List dto, LoginInDto loginInfo, bool isTransaction=true); //移箱保存 Task MoveBoxSave(List dto, bool IsUp, LoginInDto loginInfo); diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index 41388b26..d72c889c 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -51,12 +51,16 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction = false) + public async Task ChangeBoxSave(List dto, LoginInDto loginInfo, bool isTransaction = false) { //1.有原箱时 需要判断 物料对应的序列号是否存在 - if (dto.SrcBoxId != 0) + var srcIds = dto.Select(s => s.SrcBoxId).ToList(); + var destIds = dto.Select(s => s.DestBoxId).ToList(); + var boxs = await _boxInventoryRepositories.GetList(srcIds); + foreach (var d in dto) { - var box = await _boxInventoryRepositories.Get(dto.SrcBoxId); + if (d.SrcBoxId == 0) continue; + var box = boxs.FirstOrDefault(f => f.BoxId == d.SrcBoxId); //原箱在库存中的话 进行验证 if (box != null) { @@ -74,41 +78,49 @@ namespace WMS.Web.Domain.Services List boxList = new List(); //原箱有可能没有 - var srcBox = await _boxRepositories.Get(dto.SrcBoxId); - var destBox = await _boxRepositories.Get(dto.DestBoxId); + var srcBoxs = await _boxRepositories.GetEntityList(srcIds); + var destBoxs = await _boxRepositories.GetEntityList(destIds); //if (srcBox == null) return Result.ReFailure(ResultCodes.BoxNoData); - if (destBox == null) return Result.ReFailure(ResultCodes.BoxNoData); - var l = dto.Details.Select(s => (s.MaterialId, s.Qty, s.SerialNumbers)).ToList(); - //原箱移出 - Result res; - if (srcBox != null) + if (destBoxs.Count() != destIds.Count()) return Result.ReFailure(ResultCodes.BoxNoData); + foreach (var d in dto) { - res = srcBox.Out(l); - if (!res.IsSuccess) return res; - } - //目标箱移入 - res = destBox.In(l); - if (!res.IsSuccess) return res; - if (srcBox != null) - boxList.Add(srcBox); - if (destBox != null) - boxList.Add(destBox); - - var subStock = await _basbicsRepositories.GetSubUcStockAsync(dto.SubStockId, loginInfo.UserInfo.CompanyId); - var boxInventory = await _boxInventoryRepositories.Get(dto.SrcBoxId); - List list = new List(); - foreach (var d in dto.Details) - { - ChangeBoxRecord entity = new ChangeBoxRecord(); - entity.Create(loginInfo.UserInfo.StaffId, d.Qty, d.MaterialId, d.SerialNumbers, dto.SrcBoxId, dto.DestBoxId); - entity.SrcSubStockId = boxInventory?.SubStockId ?? 0;//原乡仓位需要去拉一下库存获取 - if (subStock != null) + var l = d.Details.Select(s => (s.MaterialId, s.Qty, s.SerialNumbers)).ToList(); + var srcBox = srcBoxs.FirstOrDefault(f => f.Id == d.SrcBoxId); + var destBox = srcBoxs.FirstOrDefault(f => f.Id == d.DestBoxId); + //原箱移出 + Result res; + if (srcBox != null) { - entity.DestSubStockId = dto.SubStockId; - entity.DestBoxOrgCode = subStock.ErpOrgCode; - entity.DestStockCode = subStock.StockCode; + res = srcBox.Out(l); + if (!res.IsSuccess) return res; + } + //目标箱移入 + res = destBox.In(l); + if (!res.IsSuccess) return res; + if (srcBox != null) + boxList.Add(srcBox); + if (destBox != null) + boxList.Add(destBox); + } + + List list = new List(); + foreach (var dt in dto) + { + var subStock = await _basbicsRepositories.GetSubUcStockAsync(dt.SubStockId, loginInfo.UserInfo.CompanyId); + var boxi = boxs.FirstOrDefault(f => f.BoxId == dt.SrcBoxId); + foreach (var d in dt.Details) + { + ChangeBoxRecord entity = new ChangeBoxRecord(); + entity.Create(loginInfo.UserInfo.StaffId, d.Qty, d.MaterialId, d.SerialNumbers, dt.SrcBoxId, dt.DestBoxId); + entity.SrcSubStockId = boxi?.SubStockId ?? 0;//原乡仓位需要去拉一下库存获取 + if (subStock != null) + { + entity.DestSubStockId = dt.SubStockId; + entity.DestBoxOrgCode = subStock.ErpOrgCode; + entity.DestStockCode = subStock.StockCode; + } + list.Add(entity); } - list.Add(entity); } IDbContextTransaction _transaction = null;