From 49a5ed5b81663c230e102a0db22e78962741aacb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Thu, 17 Oct 2024 09:49:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UnplannedIssueJobAppService.cs | 37 ++++++++++++++----- .../UnplannedReceiptJobAppService.cs | 2 +- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs index 7b3b7728e..874e2bcde 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs @@ -120,16 +120,18 @@ public class UnplannedIssueJobAppService decimal availableToDeduct = Math.Min(item.Qty, quantityToDeduct - totalDeducted); item.Qty -= availableToDeduct; totalDeducted += availableToDeduct; - + if (availableToDeduct <= 0) + { + BalanceDTO dto = new BalanceDTO(); + dto.InjectFrom(item); + dto.Qty = availableToDeduct; + balanceDTOs.Add(dto); + } // 如果已经扣减达到所需数量,退出循环 if (totalDeducted >= quantityToDeduct) { break; } - BalanceDTO dto = new BalanceDTO(); - dto.InjectFrom(item); - dto.Qty = availableToDeduct; - balanceDTOs.Add(dto); } // 返回实际扣减的库存数量 return balanceDTOs; @@ -145,6 +147,7 @@ public class UnplannedIssueJobAppService foreach (var requestDtoDetail in requestDto.Details)//非计划领料明细 { var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.LocationErpCode)).ConfigureAwait(false);//获取存放库位 + var input = new RecommendBalanceRequestInput { ItemCode = requestDtoDetail.ItemCode, @@ -154,6 +157,9 @@ public class UnplannedIssueJobAppService IsPackingCode = false }; var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);//获取推荐库存 + + usableList = usableList.Where(p => p.Qty> 0).ToList(); + usableList = usableList .OrderBy(p => p.Lot) .ThenBy(p => p.PutInTime) @@ -198,11 +204,26 @@ public class UnplannedIssueJobAppService { throw new UserFriendlyException("库存余额不够!"); } - foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationCode)) { var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false); var job = new UnplannedIssueJob(); + switch (locationDto.Type) + { + case EnumLocationType.RAW: + job.UnplannedIssueType = EnumUnplannedIssueType.Raw; + break; + case EnumLocationType.FG: + case EnumLocationType.DimensionalStorehouse: + case EnumLocationType.CUST: + case EnumLocationType.KittingWip: + case EnumLocationType.OUTSIDE: + case EnumLocationType.SEMI: + case EnumLocationType.WIP: + case EnumLocationType.THIRDPARTY: + job.UnplannedIssueType = EnumUnplannedIssueType.Wip; + break; + } job.SetId(GuidGenerator.Create()); job.UnplannedIssueRequestNumber= requestDto.Number; job.JobType = EnumJobType.UnplannedIssueJob; @@ -211,7 +232,6 @@ public class UnplannedIssueJobAppService job.DeptCode = requestDto.DeptCode; job.DeptName = requestDto.DeptName; job.Worker = requestDto.Worker; - job.OANumber = requestDto.OANumber; job.Number =await _unplannedIssueJobManager.GetNumber().ConfigureAwait(true); job.Details = new List(); @@ -221,10 +241,7 @@ public class UnplannedIssueJobAppService foreach (var balanceDto in balanceDtoGroup) { - - var jobfacDetail = new UnplannedIssueJobFacDetail(); - jobfacDetail.Number = job.Number; jobfacDetail.SetIdAndNumber(GuidGenerator, job.Id, job.Number); jobfacDetail.CaseCode = requestDtoDetail.CaseCode; diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs index 3ea3af4ff..78143a07c 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs @@ -94,7 +94,7 @@ public class UnplannedReceiptJobAppService public async Task DoByFreeAsync(string jobNumber,string worker,List detailDtos) { var details = ObjectMapper.Map, List>(detailDtos); - var job=await _repository.FindAsync(p => p.Number == jobNumber).ConfigureAwait(false); + var job=await _repository.FindAsync(p => p.Number == jobNumber).ConfigureAwait(false); if (job == null) { throw new UserFriendlyException($"{jobNumber}【任务】不存在");