From 13bb8867515722eba0e0f561cded92b97741a4e1 Mon Sep 17 00:00:00 2001 From: zhouhongjun <565221961@qq.com> Date: Sun, 7 Apr 2024 10:59:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ThirdLocationRequestAppService.cs | 39 +++++++++ .../ThirdLocationRequestEventHandler.cs | 82 +++++++++---------- 2 files changed, 80 insertions(+), 41 deletions(-) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ThirdLocationRequests/ThirdLocationRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ThirdLocationRequests/ThirdLocationRequestAppService.cs index 14dee5cf7..16024ffc9 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ThirdLocationRequests/ThirdLocationRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ThirdLocationRequests/ThirdLocationRequestAppService.cs @@ -15,6 +15,7 @@ using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.ObjectMapping; +using Win_in.Sfs.Basedata.Application; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared; @@ -42,6 +43,8 @@ public class ThirdLocationRequestAppService : SfsStoreRequestAppServiceBase(input); + foreach (var detail in entity.Details) + { + var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false); + var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); + + detail.ToLocationArea = toLocationDto.AreaCode; + detail.ToLocationErpCode = toLocationDto.ErpLocationCode; + detail.ToLocationGroup = toLocationDto.LocationGroupCode; + detail.ToWarehouseCode = toLocationDto.WarehouseCode; + detail.ItemDesc1 = itemBasicDto.Desc1; + detail.ItemDesc2 = itemBasicDto.Desc2; + detail.ItemName = itemBasicDto.Name; + detail.Uom = itemBasicDto.BasicUom; + } + var result = await _thirdLocationRequestManager.CreateAsync(entity).ConfigureAwait(false); var dto = ObjectMapper.Map(result); @@ -111,6 +132,24 @@ public class ThirdLocationRequestAppService : SfsStoreRequestAppServiceBase + /// 赋值Request业务属性 + /// + /// + /// + private async Task SetRequestAutoPropertiesAsync(ThirdLocationRequestEditInput entity) + { + var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.PurchaseReturn, EnumTransSubType.None).ConfigureAwait(false); + + Check.NotNull(tranType, "事务类型", "事务类型不存在"); + + entity.AutoCompleteJob = tranType.AutoCompleteJob; + entity.AutoSubmit = tranType.AutoSubmitRequest; + entity.AutoAgree = tranType.AutoAgreeRequest; + entity.AutoHandle = tranType.AutoHandleRequest; + entity.DirectCreateNote = tranType.DirectCreateNote; + } + //[Authorize(ThirdLocationRequestPermissions.Create)] [HttpPost("create-and-handle")] public async Task CreateAndHandleAsync(ThirdLocationRequestEditInput input) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs index 46bc67846..dece75486 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs @@ -26,20 +26,20 @@ public class ThirdLocationRequestEventHandler { private readonly IThirdLocationJobAppService _thirdLocationJobAppService; private readonly IProductionLineAppService _productionLineAppService; - private readonly IThirdLocationRequestManager _assembleRequestManager; + private readonly IThirdLocationRequestManager _thirdLocationRequestManager; private readonly ILocationAppService _locationAppService; private readonly IBalanceAppService _balanceAppService; public ThirdLocationRequestEventHandler( IThirdLocationJobAppService thirdLocationJobAppService , IProductionLineAppService productionLineAppService - , IThirdLocationRequestManager assembleRequestManager + , IThirdLocationRequestManager thirdLocationRequestManager , ILocationAppService locationAppService , IBalanceAppService balanceAppService) { _thirdLocationJobAppService = thirdLocationJobAppService; _productionLineAppService = productionLineAppService; - _assembleRequestManager = assembleRequestManager; + _thirdLocationRequestManager = thirdLocationRequestManager; _locationAppService = locationAppService; _balanceAppService = balanceAppService; } @@ -54,7 +54,7 @@ public class ThirdLocationRequestEventHandler //if (entity.AutoSubmit) //{ - // await _assembleRequestManager.SubmitAsync(entity).ConfigureAwait(false); + // await _thirdLocationRequestManager.SubmitAsync(entity).ConfigureAwait(false); //} } @@ -69,7 +69,7 @@ public class ThirdLocationRequestEventHandler { if (entity.AutoSubmit) { - await _assembleRequestManager.SubmitAsync(entity).ConfigureAwait(false); + await _thirdLocationRequestManager.SubmitAsync(entity).ConfigureAwait(false); } } @@ -116,23 +116,23 @@ public class ThirdLocationRequestEventHandler #region 私有 private async Task> BuildThirdLocationJobAsync - (ThirdLocationRequest assembleRequest) + (ThirdLocationRequest thirdLocationRequest) { var jobs = new List(); var transactionType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);//库存事务 - var toLocationCodes = assembleRequest.Details.Select(p => p.ToLocationCode).Distinct().ToList();//所有发送库位的集合 + var toLocationCodes = thirdLocationRequest.Details.Select(p => p.ToLocationCode).Distinct().ToList();//所有发送库位的集合 var toLocations = await _locationAppService.GetByCodesAsync(toLocationCodes).ConfigureAwait(false);//所有库位的集合 - var assembleRequestDetails = assembleRequest.Details.Where(p => p.ToBeIssuedQty > 0);//所有还没发送物品的集合 - foreach (var assembleRequestDetail in assembleRequestDetails)//如果有还有剩余未叫料的数量 则创建新的任务 + var thirdLocationRequestDetails = thirdLocationRequest.Details.Where(p => p.ToBeIssuedQty > 0);//所有还没发送物品的集合 + foreach (var thirdLocationRequestDetail in thirdLocationRequestDetails)//如果有还有剩余未叫料的数量 则创建新的任务 { - var toLocation = toLocations.FirstOrDefault(p => p.Code == assembleRequestDetail.ToLocationCode);//判断目标库位是否存在 - Check.NotNull(toLocation, "库位代码", $"库位 {assembleRequestDetail.ToLocationCode} 不存在"); + var toLocation = toLocations.FirstOrDefault(p => p.Code == thirdLocationRequestDetail.ToLocationCode);//判断目标库位是否存在 + Check.NotNull(toLocation, "库位代码", $"库位 {thirdLocationRequestDetail.ToLocationCode} 不存在"); //创建详情 - var jobDetails = await BuildThirdLocationJobDetailInputsAsync(assembleRequest, assembleRequestDetail, transactionType, toLocation.LocationGroupCode).ConfigureAwait(false); + var jobDetails = await BuildThirdLocationJobDetailInputsAsync(thirdLocationRequest, thirdLocationRequestDetail, transactionType, toLocation.LocationGroupCode).ConfigureAwait(false); if (!jobDetails.Any()) { continue; @@ -141,22 +141,22 @@ public class ThirdLocationRequestEventHandler var fromLocationCode = jobDetails[0].RecommendFromLocationCode; var fromLocation = await _locationAppService.GetByCodeAsync(fromLocationCode).ConfigureAwait(false); var job = jobs.FirstOrDefault(p => p.WorkGroupCode == fromLocation?.WorkGroupCode); - if (job == null || job.Details.Any(p => p.ToLocationCode != assembleRequestDetail.ToLocationCode)) + if (job == null || job.Details.Any(p => p.ToLocationCode != thirdLocationRequestDetail.ToLocationCode)) { - job = BuildThirdLocationJobCreateInput(assembleRequest, fromLocation); + job = BuildThirdLocationJobCreateInput(thirdLocationRequest, fromLocation); jobs.Add(job); } job.Details.AddRange(jobDetails); - if (assembleRequestDetail.ToBeIssuedQty < 0) + if (thirdLocationRequestDetail.ToBeIssuedQty < 0) { - assembleRequestDetail.Status = EnumStatus.Close; + thirdLocationRequestDetail.Status = EnumStatus.Close; } } jobs = jobs.Where(p => p.Details.Any()).ToList(); var openRequestDetails = - assembleRequest.Details.Where(p => p.Status != EnumStatus.Close).ToList(); + thirdLocationRequest.Details.Where(p => p.Status != EnumStatus.Close).ToList(); if (!openRequestDetails.Any()) { @@ -168,7 +168,7 @@ public class ThirdLocationRequestEventHandler if (enableMultipleCreateThirdLocationJob) { - //assembleRequest.Partial(); + //thirdLocationRequest.Partial(); } else { @@ -182,34 +182,34 @@ public class ThirdLocationRequestEventHandler return jobs; } - private ThirdLocationJobEditInput BuildThirdLocationJobCreateInput(ThirdLocationRequest assembleRequest, LocationDTO fromLocation) + private ThirdLocationJobEditInput BuildThirdLocationJobCreateInput(ThirdLocationRequest thirdLocationRequest, LocationDTO fromLocation) { ThirdLocationJobEditInput job; - job = ObjectMapper.Map(assembleRequest); + job = ObjectMapper.Map(thirdLocationRequest); job.JobType = EnumJobType.IssueJob; job.JobStatus = EnumJobStatus.Open; job.WorkGroupCode = fromLocation.WorkGroupCode; job.WarehouseCode = fromLocation.WarehouseCode; job.ProdLine = fromLocation.LocationGroupCode; - job.Worker = assembleRequest.Worker; + job.Worker = thirdLocationRequest.Worker; if (string.IsNullOrEmpty(job.Worker)) { job.Worker = "admin"; } - job.RequestNumber = assembleRequest.Number; + job.RequestNumber = thirdLocationRequest.Number; return job; } - private async Task> BuildThirdLocationJobDetailInputsAsync(ThirdLocationRequest assembleRequest, - ThirdLocationRequestDetail assembleRequestDetail, TransactionTypeDTO transactionType, string toLocationGroupCode) + private async Task> BuildThirdLocationJobDetailInputsAsync(ThirdLocationRequest thirdLocationRequest, + ThirdLocationRequestDetail thirdLocationRequestDetail, TransactionTypeDTO transactionType, string toLocationGroupCode) { var jobDetails = new List(); var input = new RecommendBalanceRequestInput() { - ItemCode = assembleRequestDetail.ItemCode, - Qty = assembleRequestDetail.ToBeIssuedQty, + ItemCode = thirdLocationRequestDetail.ItemCode, + Qty = thirdLocationRequestDetail.ToBeIssuedQty, LocationTypes = transactionType.OutLocationTypes, - LocationAreas = new List { assembleRequestDetail.FromLocationArea }, + LocationAreas = new List { thirdLocationRequestDetail.FromLocationArea }, Statuses = transactionType.OutInventoryStatuses, }; //获取推荐库存 @@ -220,8 +220,8 @@ public class ThirdLocationRequestEventHandler foreach (var recommend in recommendList) { //拿走需求量 - var detail = await BuildThirdLocationJobDetailAsync(assembleRequestDetail, recommend, toLocationGroupCode).ConfigureAwait(false); - if (assembleRequest.UseOnTheWayLocation) + var detail = await BuildThirdLocationJobDetailAsync(thirdLocationRequestDetail, recommend, toLocationGroupCode).ConfigureAwait(false); + if (thirdLocationRequest.UseOnTheWayLocation) { //获取在途库 var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT).ConfigureAwait(false); @@ -230,26 +230,26 @@ public class ThirdLocationRequestEventHandler } jobDetails.Add(detail); - assembleRequestDetail.IssuedQty += recommend.Qty; + thirdLocationRequestDetail.IssuedQty += recommend.Qty; - //await _assembleRequestManager.UpdateDetailsAsync(assembleRequest).ConfigureAwait(false); + //await _thirdLocationRequestManager.UpdateDetailsAsync(thirdLocationRequest).ConfigureAwait(false); } } return jobDetails; } - private async Task BuildThirdLocationJobDetailAsync(ThirdLocationRequestDetail assembleRequestDetail, BalanceDTO balance, string toLocationGroupCode) + private async Task BuildThirdLocationJobDetailAsync(ThirdLocationRequestDetail thirdLocationRequestDetail, BalanceDTO balance, string toLocationGroupCode) { //ProductionLineDTO prodLine = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationGroupCode).ConfigureAwait(false); var detail = ObjectMapper.Map(balance); - detail.RequestLocationCode = assembleRequestDetail.ToLocationCode; - detail.WorkStation = assembleRequestDetail.WorkStation; - detail.ExpiredTime = assembleRequestDetail.ExpiredTime; - detail.PositionCode = assembleRequestDetail.PositionCode; - detail.RecommendType = assembleRequestDetail.RecommendType; + detail.RequestLocationCode = thirdLocationRequestDetail.ToLocationCode; + detail.WorkStation = thirdLocationRequestDetail.WorkStation; + detail.ExpiredTime = thirdLocationRequestDetail.ExpiredTime; + detail.PositionCode = thirdLocationRequestDetail.PositionCode; + detail.RecommendType = thirdLocationRequestDetail.RecommendType; detail.RecommendPackingCode = balance.PackingCode; detail.RecommendContainerCode = balance.ContainerCode; @@ -267,10 +267,10 @@ public class ThirdLocationRequestEventHandler detail.RecommendQty = balance.Qty; detail.Uom = balance.Uom; - detail.ToLocationCode = assembleRequestDetail.ToLocationCode; - detail.ToLocationErpCode = assembleRequestDetail.ToLocationErpCode; - detail.ToLocationArea = assembleRequestDetail.ToLocationArea; - detail.ToWarehouseCode = assembleRequestDetail.ToWarehouseCode; + detail.ToLocationCode = thirdLocationRequestDetail.ToLocationCode; + detail.ToLocationErpCode = thirdLocationRequestDetail.ToLocationErpCode; + detail.ToLocationArea = thirdLocationRequestDetail.ToLocationArea; + detail.ToWarehouseCode = thirdLocationRequestDetail.ToWarehouseCode; //detail.ProdLine = prodLine == null ? toLocationGroupCode : prodLine.Code; detail.ProdLine = toLocationGroupCode; From d77afe550b3f7809a16b65a8c342b33832719a69 Mon Sep 17 00:00:00 2001 From: liuyunfeng Date: Sun, 7 Apr 2024 11:39:27 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B5=8B=E8=AF=95=EF=BC=8C=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E4=B8=89=E4=B8=AAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Jobs/TransferLibJobs/TransferLibJobAppService.cs | 2 +- .../Jobs/TransferLibJobs/TransferLibJobManager.cs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs index 917738170..0767c0097 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/TransferLibJobs/TransferLibJobAppService.cs @@ -60,7 +60,7 @@ public class TransferLibJobAppService { throw new UserFriendlyException($"{methodPrefix}没有找到类型为{dto.CallServerName}的对象"); } - var instance = Activator.CreateInstance(ty, dto.CallBusinessType, dto.CallRequestNumber, dto.CallJobNumber); + var instance = Activator.CreateInstance(ty); if (instance == null) { throw new UserFriendlyException($"{methodPrefix}类型为{dto.CallServerName}的对象创建失败"); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobManager.cs index c9a5ae4fb..c014779a9 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobManager.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobManager.cs @@ -43,4 +43,10 @@ public class TransferLibJobManager : SfsJobManagerBase CompleteAsync(TransferLibJob input, ICurrentUser user) + { + TransferLibJob entity = await Repository.FindAsync(input.Id).ConfigureAwait(false); + return await base.CompleteAsync(entity, user).ConfigureAwait(false); + } }