diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Bases/SfsStoreRequestAppServiceBase.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Bases/SfsStoreRequestAppServiceBase.cs index 7bed7b52d..36465700c 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Bases/SfsStoreRequestAppServiceBase.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Bases/SfsStoreRequestAppServiceBase.cs @@ -60,11 +60,17 @@ public abstract class SfsStoreRequestAppServiceBase(result); return dto; } + protected virtual TEntity ModifyEntityBeforeAgree(TEntity obj) + { + return obj; + } + /// /// 拒绝请求 /// diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs index 86efe53fa..da71a45ca 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs @@ -72,11 +72,18 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA } //需要复制一个这个方法 去掉区域参数 换成库位参数 - //_balanceAppService.GetRecommendBalancesAsync(new RecommendBalanceRequestInput() - //{ - // ItemCode = detail.ItemCode, - - //}); + RecommendBalanceRequestInput input = new RecommendBalanceRequestInput(); + input.ItemCode = detail.ItemCode; + input.Locations = new List() { detail.LocationCode }; + var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false); + if (balanceLst.Count == 0) + { + throw new UserFriendlyException($"GetRecommendBalancesByLocationsAsync返回0条记录"); + } + if (detail.Qty > balanceLst[0].Qty) + { + throw new UserFriendlyException($"库存数量不足:GetRecommendBalancesByLocationsAsync"); + } } if (unplannedIssueRequest.UnplannedIssueType == EnumUnplannedIssueType.Wip) @@ -89,16 +96,21 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA } //需要复制一个这个方法 去掉区域参数 换成库位参数 - //_balanceAppService.GetRecommendBalancesAsync(new RecommendBalanceRequestInput() - //{ - // ItemCode = detail.ItemCode, + RecommendBalanceRequestInput input = new RecommendBalanceRequestInput(); + input.ItemCode = detail.ItemCode; + input.Locations = new List() { detail.LocationCode }; + var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false); + if (balanceLst.Count == 0) + { + throw new UserFriendlyException($"GetRecommendBalancesByLocationsAsync返回0条记录"); + } + var sumQty = balanceLst.Sum(itm => itm.Qty); + if (detail.Qty > sumQty) + { + throw new UserFriendlyException($"库存数量不足:GetRecommendBalancesByLocationsAsync"); + } - //}); - unplannedIssueRequest.DirectCreateNote = true; //线边 直接生成记录 - unplannedIssueRequest.RequestStatus = EnumRequestStatus.Completed; } - - await SetDetailPropertiesAsync(detail).ConfigureAwait(false); } } @@ -106,6 +118,15 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA return dictionary; } + protected override UnplannedIssueRequest ModifyEntityBeforeAgree(UnplannedIssueRequest obj) + { + if (obj.UnplannedIssueType == EnumUnplannedIssueType.Wip) + { + obj.DirectCreateNote = true; //线边 直接生成记录 + } + return obj; + } + #region 赋值 /// diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs index ee56153bf..bdc3d2203 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs @@ -25,19 +25,22 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ private readonly LocationManager _locationManager; private readonly ILocationAppService _locationAppService; private readonly IUnplannedReceiptRequestManager _unplannedReceiptRequestManager; + private readonly IBalanceAppService _balanceAppService; public UnplannedReceiptRequestForDongyangAppService(IUnplannedReceiptRequestRepository repository, IUnplannedReceiptRequestManager unplannedReceiptRequestManager, IDepartmentAppService departmentApp, //LocationManager locationManager, - ILocationAppService locationAppService + ILocationAppService locationAppService, + IBalanceAppService balanceAppService ) : base(repository, unplannedReceiptRequestManager) { _unplannedReceiptRequestManager = unplannedReceiptRequestManager; _departmentApp = departmentApp; //_locationManager = locationManager; _locationAppService = locationAppService; + _balanceAppService = balanceAppService; } /// @@ -70,11 +73,10 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ } //需要复制一个这个方法 去掉区域参数 换成库位参数 - //_balanceAppService.GetRecommendBalancesAsync(new RecommendBalanceRequestInput() - //{ - // ItemCode = detail.ItemCode, - - //}); + //RecommendBalanceRequestInput input = new RecommendBalanceRequestInput(); + //input.ItemCode = detail.ItemCode; + //input.Locations = new List() { detail.LocationCode }; + //await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false); } if (unplannedReceiptRequest.UnplannedReceiptType == EnumUnplannedReceiptType.Wip) @@ -87,12 +89,10 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ } //需要复制一个这个方法 去掉区域参数 换成库位参数 - //_balanceAppService.GetRecommendBalancesAsync(new RecommendBalanceRequestInput() - //{ - // ItemCode = detail.ItemCode, - - //}); - unplannedReceiptRequest.DirectCreateNote = true; //线边 直接生成记录 + //RecommendBalanceRequestInput input = new RecommendBalanceRequestInput(); + //input.ItemCode = detail.ItemCode; + //input.Locations = new List() { detail.LocationCode }; + //await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false); } await SetDetailPropertiesAsync(detail).ConfigureAwait(false); @@ -102,6 +102,15 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ return dictionary; } + protected override UnplannedReceiptRequest ModifyEntityBeforeAgree(UnplannedReceiptRequest obj) + { + if (obj.UnplannedReceiptType == EnumUnplannedReceiptType.Wip) + { + obj.DirectCreateNote = true; + } + return obj; + } + #region 赋值 ///