diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs index 6a283da3b..98fa3b255 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs @@ -31,9 +31,11 @@ public interface ISplitPackingRecAppService Task> GetFirstOrDefaultPackingCode(List toPackingCodeList); /// - /// 根据to箱码取所有具有相同箱码的拆箱记录 + /// /// - /// + /// from箱码 + /// 数量 /// - Task> GetSamePoNumberListByToPackingCode(string toPackingCode); + Task CheckSplitNum(string fromPackCode, decimal inputQty); + } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs index 755982761..eb38d5d7c 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs @@ -128,5 +128,27 @@ public class SplitPackingRecAppService : return ret; } + /// + /// + /// + /// from箱码 + /// 数量 + /// + [HttpGet("check-split-num")] + public async Task CheckSplitNum(string fromPackCode, decimal inputQty) + { + var lst = await _splitPackingRecManager.GetAllByFromPackingCode(fromPackCode).ConfigureAwait(false); + var originObj = lst.FirstOrDefault(itm => itm.FromPackingCode == fromPackCode && itm.OprType == OprTypeEnum.Other); + if (originObj == null) + { + throw new UserFriendlyException($"[CheckSplitNum]拆箱记录表没有数据:fromPackCode={fromPackCode},OprType={OprTypeEnum.Other}"); + } + var splitLst = lst.Where(itm => itm.FromPackingCode == fromPackCode && itm.OprType == OprTypeEnum.SplitBox); + decimal splitSum = splitLst.Sum(itm => itm.ToQty); + decimal overplusQty = originObj.FromQty - splitSum; + return overplusQty >= inputQty; + } + + } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/ISplitPackingRecManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/ISplitPackingRecManager.cs index 0d9704ec3..53a68d296 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/ISplitPackingRecManager.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/ISplitPackingRecManager.cs @@ -26,4 +26,12 @@ public interface ISplitPackingRecManager : IDomainService Task GetTopPackingCode(string packingCode); Task GetSplitPackingCode(string packingCode); Task> GetFirstOrDefaultPackingCode(List toPackingCodeList); + + /// + /// 根据from箱码取所有记录 + /// + /// + /// + Task> GetAllByFromPackingCode(string fromPackingCode); + } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs index 0a95da7df..04916ad6d 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs @@ -267,4 +267,17 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager //} } + /// + /// 根据from箱码取所有记录 + /// + /// + /// + public async Task> GetAllByFromPackingCode(string fromPackingCode) + { + List lst = await _repository.GetListAsync( + itm => itm.FromPackingCode ==fromPackingCode) + .ConfigureAwait(false); + return lst; + } + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs index 856a18357..d55696e09 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs @@ -414,9 +414,15 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase /// private async Task WriteSplitPackingRec(TransferNoteEditInput transferNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput = null) { + List recLst = new List(); foreach (var inputDetail in transferNoteEditInput.Details) { + bool qtyEnough = await _splitPackingRecAppService.CheckSplitNum(inputDetail.FromPackingCode, inputDetail.Qty).ConfigureAwait(false); + if (qtyEnough == false) + { + throw new UserFriendlyException($"[WriteSplitPackingRec]拆箱记录表数量不足:FromPackingCode={inputDetail.FromPackingCode},Qty={inputDetail.Qty}"); + } SplitPackingRecEditInput packRec = new SplitPackingRecEditInput(); packRec.OprType = OprTypeEnum.SplitBox;