diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs index b63dbf140..77bc5599e 100644 --- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs @@ -216,7 +216,7 @@ public class UnplannedReceiptJobController : AbpController /// /// /// - [HttpPost("finish/{id}")] + [HttpPost("finish")] public virtual async Task FinishAsync(string jobNumber,string worker,List list) { await _unplannedReceiptJobAppService.DoByFreeAsync(jobNumber,worker,list).ConfigureAwait(false); 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..93209b187 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,15 +94,16 @@ 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}【任务】不存在"); } - if (job.JobStatus != EnumJobStatus.Open) + if (job.JobStatus!=EnumJobStatus.Doing) { - throw new UserFriendlyException($"{jobNumber}【任务】不是【打开】状态"); + throw new UserFriendlyException($"{jobNumber}【任务】不是【执行】状态"); } if (detailDtos.Count(p => p.ItemCode != job.ItemCode)>0) @@ -121,7 +122,7 @@ public class UnplannedReceiptJobAppService var itemBasicDto=await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); detail.HandledToLocationArea = locationDto.AreaCode; - detail.HandledToLocationErpCode = locationDto.ErpLocationCode; + detail.HandledToLocationErpCode = locationDto.ErpLocationCode; detail.HandledToLocationGroup = locationDto.LocationGroupCode; detail.HandledToLocationCode=locationDto.Code; detail.Status = EnumInventoryStatus.OK; @@ -167,6 +168,8 @@ public class UnplannedReceiptJobAppService job.Details = details; job.CompleteUserName = worker; job.JobStatus = EnumJobStatus.Done; + job.CompleteTime=DateTime.Now; + job.Worker=worker; job =await _repository.UpdateAsync(job).ConfigureAwait(false); await LocalEventBus.PublishAsync(new SfsCompletedEntityEventData(job), false).ConfigureAwait(false); await UpdateRequestStatusAsync(job.UnplannedReceiptRequestNumber).ConfigureAwait(false); @@ -207,6 +210,8 @@ public class UnplannedReceiptJobAppService job.DeptCode = requestDto.DeptCode; job.DeptName = requestDto.DeptName; job.Qty = requestDtoDetail.Qty; + job.Worker = "未执行"; + job.BuildDate = DateTime.Now; if (locationDtos == null || locationDtos.Count < 1) { throw new UserFriendlyException($"该【{requestDtoDetail.FromErpLocationCode}】储位下没有库位"); 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 fd318bf3b..f916d2d4f 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 @@ -5,6 +5,7 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using NUglify.Helpers; using Volo.Abp; using Volo.Abp.Data; using Volo.Abp.ObjectMapping; @@ -75,6 +76,7 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ if (flag) { var unplannedReceiptRequest = await _repository.FindAsync(p => p.Number == requestNumber).ConfigureAwait(false); + unplannedReceiptRequest.RequestStatus = EnumRequestStatus.Completed; await _repository.UpdateAsync(unplannedReceiptRequest).ConfigureAwait(false); } } @@ -88,6 +90,28 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ { var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key); + var listDetails = new List(); + addList.ForEach(p=> + { + listDetails.AddRange(p.Details); + }); + var groupBy=listDetails.GroupBy(p =>new { p.ItemCode, p.FromErpLocationCode }); + foreach (var keyGroup in groupBy) + { + if (keyGroup.ToList().Count > 1) + { + throw new UserFriendlyException($"Erp料号【{keyGroup.Key.ItemCode}】和储位【{keyGroup.Key.FromErpLocationCode}】有重复项"); + } + + foreach (var detail in keyGroup) + { + if (detail.Qty <= 0) + { + throw new UserFriendlyException($"数量必须大于0"); + } + } + } + foreach (var unplannedReceiptRequest in addList) { if (unplannedReceiptRequest.UnplannedReceiptType != EnumUnplannedReceiptType.Wip && unplannedReceiptRequest.UnplannedReceiptType != EnumUnplannedReceiptType.Raw) @@ -119,6 +143,7 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ { var itemBasic = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); CheckItemBasic(itemBasic, detail.ItemCode); + await CheckErpLocationCodeAsync(detail.FromErpLocationCode).ConfigureAwait(false); if (itemBasic != null) { detail.ItemName = itemBasic.Name; @@ -199,6 +224,16 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ throw new UserFriendlyException($"库位代码为【{locationCode}】不存在"); } } + + private async Task CheckErpLocationCodeAsync(string erpLoationCode) + { + var codes=await _locationAppService.GetListByErpLocationCodes(new List{ erpLoationCode }).ConfigureAwait(false); + if (!codes.Any()) + { + throw new UserFriendlyException($"储位代码为【{erpLoationCode}】下,无任何库位"); + } + } + protected virtual async Task CheckBalanceAsync(UnplannedReceiptRequestImportInput importInput, List validationRresult) { var balance = await BalanceAclService.GetByItemLocationAndPackingAsync( diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs index 142ce0be1..a5c2f04ff 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs @@ -1,3 +1,4 @@ +using System; using System.Threading.Tasks; using Volo.Abp.EventBus; using Volo.Abp.Uow; @@ -63,6 +64,8 @@ public class UnplannedIssueJobEventHandler : private UnplannedIssueNoteEditInput BuildUnplannedIssueNoteCreateInput(UnplannedIssueJob entity) { var createInput = ObjectMapper.Map(entity); + createInput.BuildDate=DateTime.Now; + createInput.ActiveDate=DateTime.Now; createInput.Details.RemoveAll(p => p.Qty == 0); /* diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs index a8fe6f097..b3ba204b6 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs @@ -63,8 +63,15 @@ public class UnplannedReceiptJobEventHandler : private UnplannedReceiptNoteEditInput BuildUnplannedReceiptNoteCreateInput(UnplannedReceiptJob entity) { var createInput = ObjectMapper.Map(entity); - createInput.Details.RemoveAll(p => p.Qty == 0); + foreach (var detailInput in createInput.Details) + { + detailInput.CaseCode=entity.CaseCode; + detailInput.Explain=entity.Explain; + detailInput.OnceBusiCode=entity.OnceBusiCode; + detailInput.ProjCapacityCode=entity.ProjCapacityCode; + detailInput.ReasonCode=entity.ReasonCode; + } return createInput; } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedReceiptNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedReceiptNoteEventHandler.cs index aa43a2582..5e045a45f 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedReceiptNoteEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedReceiptNoteEventHandler.cs @@ -32,10 +32,10 @@ public class UnplannedReceiptNoteEventHandler var entity = eventData.Entity; await AddTransactionsAsync(entity).ConfigureAwait(false); - if (!string.IsNullOrEmpty(entity.UnplannedReceiptRequestNumber)) - { - await _unplannedReceiptRequestApp.CompleteByNumberAsync(entity.UnplannedReceiptRequestNumber).ConfigureAwait(false); - } + //if (!string.IsNullOrEmpty(entity.UnplannedReceiptRequestNumber)) + //{ + // await _unplannedReceiptRequestApp.CompleteByNumberAsync(entity.UnplannedReceiptRequestNumber).ConfigureAwait(false); + //} } private async Task AddTransactionsAsync(UnplannedReceiptNote unplannedReceiptNote)