From d01e8425a0128b79e8511c5bda805fb836d5a46d Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Sat, 25 Nov 2023 17:40:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/ChangeMoveBoxService.cs | 30 +++++++++++++++++-- src/WMS.Web.Domain/Values/ResultCodes.cs | 1 + 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index 4016db46..41388b26 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -54,6 +54,23 @@ namespace WMS.Web.Domain.Services public async Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction = false) { //1.有原箱时 需要判断 物料对应的序列号是否存在 + if (dto.SrcBoxId != 0) + { + var box = await _boxInventoryRepositories.Get(dto.SrcBoxId); + //原箱在库存中的话 进行验证 + if (box != null) + { + foreach (var bd in box.Details) + { + var bDe = box.Details.FirstOrDefault(f => f.MaterialId == bd.MaterialId); + if (bDe == null) + Result.ReFailure(ResultCodes.BoxMateriaNoData); + var ex = bd.SerialNumbers.Except(bDe.SerialNumbers).ToList(); + if (ex.Count() > 0) + Result.ReFailure(ResultCodes.BoxInventorySerialNumbersNoData); + } + } + } List boxList = new List(); //原箱有可能没有 @@ -139,19 +156,26 @@ namespace WMS.Web.Domain.Services public async Task MoveBoxSave(List dto, bool IsUp, LoginInDto loginInfo) { //1.下架时 需要验证箱是否在库存里 + if (!IsUp) + { + var boxIds = dto.Select(s => s.BoxId).ToList(); + var boxList = await _boxInventoryRepositories.GetList(boxIds); + if (boxIds.Count() != boxList.Count()) + return Result.ReFailure(ResultCodes.BoxInventoryNoDataError); + } List entityList = new List(); foreach (var d in dto) { var subStock = await _basbicsRepositories.GetSubUcStockAsync(d.SubStockId, loginInfo.UserInfo.CompanyId); var entity = new MoveBoxRecord(); - entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId,d.Qty, subStock?.ErpOrgCode, subStock?.StockCode, d.SubStockId, loginInfo.UserInfo.StaffId); + entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.Qty, subStock?.ErpOrgCode, subStock?.StockCode, d.SubStockId, loginInfo.UserInfo.StaffId); entityList.Add(entity); } IDbContextTransaction _transaction = _basbicsRepositories.GetTransaction(); bool isSuccess = true; Result res_Rollback = Result.ReSuccess(); - + if (res_Rollback.IsSuccess) { isSuccess = await _moveBoxRecordRepositories.AddRange(entityList, false); @@ -162,7 +186,7 @@ namespace WMS.Web.Domain.Services var res_change = await _serialNumberService.MoveBox(entityList, loginInfo, false); if (!res_change.IsSuccess) res_Rollback = res_change; } - if(res_Rollback.IsSuccess) + if (res_Rollback.IsSuccess) { var res_Inventory = await _boxInventoryService.GenerateMoveBox(entityList, false); if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory; diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index 0c0ee73f..eb53d24b 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -38,6 +38,7 @@ namespace WMS.Web.Domain.Values public static ValueTuple BoxNoData = (80000, "箱信息不存在"); public static ValueTuple BoxMateriaNoData = (800010, "箱对应物料信息不存在"); public static ValueTuple MateriaNoData = (800011, "物料信息不存在"); + public static ValueTuple BoxInventorySerialNumbersNoData = (800012, "序列号不存在于箱库存数据中"); public static ValueTuple ErpStockNoData = (900000, "Erp仓库信息不完整"); public static ValueTuple Box_NoBind_Task_Data = (80001, "该箱号不在收货信息中,请核对再试!");