From 655f4c1c8fc5972fd33906a114ece0590bc59bc6 Mon Sep 17 00:00:00 2001 From: zhaoxinyu <89237069@qq.com> Date: Mon, 15 Jul 2024 16:23:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AssembleIssueJobAppService.cs | 135 ++++++++++++++++-- 1 file changed, 124 insertions(+), 11 deletions(-) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs index 1ab9d3437..5a4f59125 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/AssembleIssueJobs/AssembleIssueJobAppService.cs @@ -83,12 +83,20 @@ public class AssembleIssueJobAppService [HttpPost("add-many")] public override async Task> CreateManyAsync(List inputs) { + + foreach (var input in inputs) { await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false); - await CheckDimensionalStorehouseAsync(input).ConfigureAwait(false); + //如果是立库 就给直接承接了 + var dimensionalStorehouseflag = await CheckDimensionalStorehouseAsync(input).ConfigureAwait(false); + if (dimensionalStorehouseflag) + { + input.IsClaims = true; + input.ClaimsUserId = "LITK"; //todo + input.ClaimsUserName = "LITK"; //todo + } } - var assembleIssueJobDtos = await base.CreateManyAsync(inputs).ConfigureAwait(false); foreach (var assembleIssueJobDto in assembleIssueJobDtos) { @@ -96,8 +104,23 @@ public class AssembleIssueJobAppService } return assembleIssueJobDtos; + } + + + + + + + + + + + + + + [HttpPost("")] public override async Task CreateAsync(AssembleIssueJobEditInput input) { @@ -269,7 +292,80 @@ public class AssembleIssueJobAppService await CancelAcceptAsync(masterId).ConfigureAwait(false); } - + + + /// + /// 执行任务明细 + /// + /// + [HttpPost("ExecuteDetail/{masterId}")] + public async Task ExecuteDetailExtAsync(Guid masterId, Guid detailId, AssembleIssueJobDetailDTO issueJobDetailDto) + { + var assembleIssueJob = await _repository.GetAsync(masterId).ConfigureAwait(false); + assembleIssueJob.JobStatus = EnumJobStatus.Doing; + + assembleIssueJob.ClaimsUserId = "LITK"; + assembleIssueJob.ClaimsUserName = "LITK"; + + + //if (assembleIssueJob.IsClaims) + //{ + // if (assembleIssueJob.ClaimsUserId != _currentUser.Id.ToString()) + // { + // throw new UserFriendlyException($"该任务已被【{assembleIssueJob.ClaimsUserName}】承接"); + // } + //} + //else + //{ + // throw new UserFriendlyException("该任务未被承接,请重新刷新页面,承接任务"); + //} + + var assembleIssueJobDto = ObjectMapper.Map(assembleIssueJob); + assembleIssueJobDto.Details = new List { issueJobDetailDto }; + var assembleIssueNoteEditInput = await BuildAssembleIssueNoteAsync(assembleIssueJobDto).ConfigureAwait(false); + await _assembleIssueNoteAppService.CreateAsync(assembleIssueNoteEditInput).ConfigureAwait(false); + + var issueJobDetail = ObjectMapper.Map(issueJobDetailDto); + var entityDetail = assembleIssueJob.Details.Find(p => p.Id == detailId); + issueJobDetail.HandledFromQty = entityDetail.HandledFromQty; + issueJobDetail.HandledToQty = entityDetail.HandledToQty; + + issueJobDetail.HandledToQty += issueJobDetailDto.HandledToQty; + issueJobDetail.HandledFromQty += issueJobDetailDto.HandledFromQty; + assembleIssueJob.Details = new EditableList { issueJobDetail }; + assembleIssueJob.CompleteUserId = _currentUser.Id; + assembleIssueJob.CompleteUserName = _currentUser.Name; + assembleIssueJob.CompleteTime = DateTime.Now; + if (assembleIssueJob.EnumIssueSendType == EnumIssueSendType.BoxQtyType) //按箱叫料 因为任务只有1箱 所以可以直接完成 + { + if (issueJobDetailDto.RecommendToPackingCode != issueJobDetailDto.HandledToPackingCode) + { + await CheckPackingCodeIsUserAsync(issueJobDetailDto.HandledToPackingCode, assembleIssueJob.Number) + .ConfigureAwait(false); + } + + await UpdateRequestAndjobStatusDoneAsync(assembleIssueJob, issueJobDetailDto, issueJobDetailDto.HandledToQty) + .ConfigureAwait(false); + await _expectOutAppService.RemoveByNumberAsync(assembleIssueJob.Number).ConfigureAwait(false); + } + else + { + var detail = assembleIssueJob.Details.First(p => p.Id == issueJobDetailDto.Id); + if (issueJobDetail.HandledToQty >= detail.RequestQty) + { + await UpdateRequestAndjobStatusDoneAsync(assembleIssueJob, issueJobDetailDto, + issueJobDetailDto.HandledToQty).ConfigureAwait(false); + } + else + { + await RemoveExpectOutAsync(assembleIssueJob, issueJobDetailDto, issueJobDetailDto.HandledToQty) + .ConfigureAwait(false); + } + } + + await _repository.UpdateAsync(assembleIssueJob).ConfigureAwait(false); + await CancelAcceptAsync(masterId).ConfigureAwait(false); + } @@ -520,12 +616,6 @@ public class AssembleIssueJobAppService dto.HandledToLocationErpCode = toloc.ErpLocationCode; - - - - - - dto.HandledFromLocationCode = fromloc.Code; dto.HandledFromLocationGroup = fromloc.LocationGroupCode; dto.HandledFromLocationArea = fromloc.AreaCode; @@ -655,10 +745,28 @@ public class AssembleIssueJobAppService /// /// /// - private async Task CheckDimensionalStorehouseAsync(AssembleIssueJobEditInput input) - { + + //private async Task CheckDimensionalStorehouseAsync(AssembleIssueJobEditInput input) + //{ + // var jobDetailInputdetail = input.Details.FirstOrDefault(); + + // var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode) + // .ConfigureAwait(false); + + // if (loctionDto.Type == EnumLocationType.DimensionalStorehouse) + // { + // input.JobStatus = EnumJobStatus.Wait; + // } + //} + /// + /// 判断是不是在立体库 + /// + /// + /// + private async Task CheckDimensionalStorehouseAsync(AssembleIssueJobEditInput input) + { var jobDetailInputdetail = input.Details.FirstOrDefault(); var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode) @@ -667,6 +775,11 @@ public class AssembleIssueJobAppService if (loctionDto.Type == EnumLocationType.DimensionalStorehouse) { input.JobStatus = EnumJobStatus.Wait; + return true; + } + else + { + return false; } }