diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/UnplannedIssueNotes/Inputs/UnplannedIssueNoteEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/UnplannedIssueNotes/Inputs/UnplannedIssueNoteEditInput.cs index a30f1c684..3b100ea3a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/UnplannedIssueNotes/Inputs/UnplannedIssueNoteEditInput.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/UnplannedIssueNotes/Inputs/UnplannedIssueNoteEditInput.cs @@ -67,4 +67,41 @@ public class UnplannedIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase [Display(Name = "OA单据号")] public string OANumber { get; set; } + /// ERP料号 + /// + [Display(Name = "ERP料号")] + public string ItemCode { get; set; } + + /// + /// 物品名称 + /// + [Display(Name = "物品名称")] + public string ItemName { get; set; } + + /// + /// 物品描述1 + /// + [Display(Name = "物品描述1")] + public string ItemDesc1 { get; set; } + + /// + /// 物品描述2 + /// + [Display(Name = "物品描述2")] + public string ItemDesc2 { get; set; } + + /// + /// ERP储位 + /// + [Display(Name = "ERP储位")] + public string FromErpLocationCode { get; set; } + + /// + /// 数量 + /// + [Display(Name = "数量")] + public decimal Qty { get; set; } + + + } 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 431be17f9..ee3aaa673 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 @@ -94,20 +94,17 @@ public class UnplannedIssueJobAppService throw new UserFriendlyException($"请求单号{requestDto.Number},无推荐库位请检查是否又库存!"); } - - await _unplannedIssueJobManager.AddManyAsync(jobs).ConfigureAwait(false); //await _repository.InsertManyAsync(jobs.ToList()).ConfigureAwait(false); var first = jobs.FirstOrDefault(); var outEditInputs = await BuildExpectOutAsync(useBalancesOut).ConfigureAwait(false); - - - foreach (var itm in outEditInputs) { itm.JobNumber = first.Number; } await _expectOutAppService.AddManyAsync(outEditInputs).ConfigureAwait(false); + + } @@ -144,6 +141,15 @@ public class UnplannedIssueJobAppService dto.InjectFrom(item); dto.Qty = availableToDeduct; balanceDTOs.Add(dto); + + + + + + + + + if (enumLocationType == EnumLocationType.RAW) { @@ -195,6 +201,8 @@ public class UnplannedIssueJobAppService var first=locationCodes.FirstOrDefault(); var locationDto = await _locationAppService.GetByCodeAsync(first.Code).ConfigureAwait(false); var input = new RecommendBalanceRequestInput(); + + switch (locationDto.Type) { case EnumLocationType.RAW: @@ -339,19 +347,63 @@ public class UnplannedIssueJobAppService // Errors.Add($"{"非生产领料"+requestDto.Number+"零件号:"+requestDtoDetail.ItemCode + "库存不够" + requestDtoDetail.Qty.ToString()}"); continue; } - foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationCode)) + foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationErpCode)) { //var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false); var job = new UnplannedIssueJob(); - if (locationDto.Type==EnumLocationType.RAW) - { - job.UnplannedIssueType = EnumUnplannedIssueType.Raw; - } - else + + + switch (locationDto.Type) { - job.UnplannedIssueType = EnumUnplannedIssueType.Wip; + case EnumLocationType.SEMI: + job.IsHasPackingCode = false; + job.UnplannedIssueType = EnumUnplannedIssueType.Raw; + break; + case EnumLocationType.CUST: + job.IsHasPackingCode = false; + job.UnplannedIssueType = EnumUnplannedIssueType.Raw; + break; + case EnumLocationType.FG: + job.IsHasPackingCode = false; + job.UnplannedIssueType = EnumUnplannedIssueType.Raw; + break; + case EnumLocationType.RAW: + job.IsHasPackingCode = true; + job.UnplannedIssueType = EnumUnplannedIssueType.Raw; + break; + case EnumLocationType.THIRDPARTY: + job.IsHasPackingCode = false; + job.UnplannedIssueType = EnumUnplannedIssueType.Raw; + break; + case EnumLocationType.OUTSIDE: + job.IsHasPackingCode = false; + job.UnplannedIssueType = EnumUnplannedIssueType.Raw; + break; + case EnumLocationType.DimensionalStorehouse: + job.UnplannedIssueType = EnumUnplannedIssueType.Raw; + job.IsHasPackingCode = false; + break; + + case EnumLocationType.KittingWip: + job.IsHasPackingCode = false; + job.UnplannedIssueType = EnumUnplannedIssueType.Wip; + break; + case EnumLocationType.WIP: + job.IsHasPackingCode = false; + job.UnplannedIssueType = EnumUnplannedIssueType.Wip; + break; } + + + job.ItemCode = requestDtoDetail.ItemCode; + job.ItemName = requestDtoDetail.ItemName; + job.ItemDesc1 =requestDtoDetail.ItemDesc1; + job.ItemDesc2 = requestDtoDetail.ItemDesc2; + job.FromErpLocationCode = requestDtoDetail.LocationErpCode; + job.Qty = requestDtoDetail.Qty; + + job.SetId(GuidGenerator.Create()); job.UnplannedIssueRequestNumber= requestDto.Number; job.JobType = EnumJobType.UnplannedIssueJob; @@ -412,10 +464,10 @@ public class UnplannedIssueJobAppService jobfacDetail.Status = balanceDto.Status; jobfacDetail.HandledQty = balanceDto.Qty; jobfacDetail.Uom = balanceDto.Uom; - //job.Details.Add(jobDetail); job.FacDetails.Add(jobfacDetail); - } + } + if (locationDto.Type == EnumLocationType.DimensionalStorehouse)//如果是立库的 { await SendDimensionalStorehouseAsync().ConfigureAwait(false); @@ -503,11 +555,11 @@ public class UnplannedIssueJobAppService var job = await _repository.GetAsync(id).ConfigureAwait(false); var facQuery=job.FacDetails.GroupBy(p => new { p.ItemCode }).Select(p=>new {ItemCode= p.Key.ItemCode,Qty= p.Sum(itm=>itm.RecommendQty) }); var query=dto.Details.GroupBy(p => new { p.ItemCode }).Select(p => new { ItemCode = p.Key.ItemCode, Qty = p.Sum(itm => itm.HandledQty) }); - var errorQuery = from itm in facQuery join itm1 in query on itm.ItemCode equals itm1.ItemCode where itm1.Qty < itm.Qty select itm.ItemCode ; + var errorQuery = from itm in facQuery join itm1 in query on itm.ItemCode equals itm1.ItemCode where itm1.Qty > itm.Qty select itm.ItemCode ; var errorList = errorQuery.ToList(); if (errorList.Count > 0) { - throw new UserFriendlyException($"零件{string.Join(",",errorList)}实际数量大于推荐数量!"); + throw new UserFriendlyException($"零件{string.Join(",",errorList)}实际数量不能大于推荐数量!"); } var handleDto = new UnplannedIssueJobDTO(); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs index 864823f42..0c6db34a7 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs @@ -40,6 +40,13 @@ public class UnplannedIssueNoteAppService : { var entity = ObjectMapper.Map(input); + entity.Qty = input.Qty; + entity.ItemCode = input.ItemCode; + entity.ItemDesc1=input.ItemDesc1; + entity.ItemDesc2=input.ItemDesc2; + entity.ItemName = input.ItemName; + entity.FromErpLocationCode = input.FromErpLocationCode; + entity.Details = new List(); foreach (var inputDetail in input.Details) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs index 010986984..d1547b21f 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs @@ -60,10 +60,46 @@ public class UnplannedIssueJob : SfsJobAggregateRootBase [IgnoreUpdate] public List FacDetails { get; set; } = new List(); - + /// + /// ERP料号 + /// + [Display(Name = "ERP料号")] + public string ItemCode { get; set; } + + /// + /// 物品名称 + /// + [Display(Name = "物品名称")] + public string ItemName { get; set; } + + /// + /// 物品描述1 + /// + [Display(Name = "物品描述1")] + public string ItemDesc1 { get; set; } + + /// + /// 物品描述2 + /// + [Display(Name = "物品描述2")] + public string ItemDesc2 { get; set; } + + /// + /// ERP储位 + /// + [Display(Name = "ERP储位")] + public string FromErpLocationCode { get; set; } + + /// + /// 数量 + /// + [Display(Name = "数量")] + public decimal Qty { get; set; } + + public bool IsHasPackingCode { get; set; } /// /// 设置任务明细的实际库位和实际数量 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs index f0e663527..068f1b505 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs @@ -55,4 +55,48 @@ public class UnplannedIssueNote : SfsStoreAggregateRootBase + [Display(Name = "ERP料号")] + public string ItemCode { get; set; } + + /// + /// 物品名称 + /// + [Display(Name = "物品名称")] + public string ItemName { get; set; } + + /// + /// 物品描述1 + /// + [Display(Name = "物品描述1")] + public string ItemDesc1 { get; set; } + + /// + /// 物品描述2 + /// + [Display(Name = "物品描述2")] + public string ItemDesc2 { get; set; } + + /// + /// ERP储位 + /// + [Display(Name = "ERP储位")] + public string FromErpLocationCode { get; set; } + + /// + /// 数量 + /// + [Display(Name = "数量")] + public decimal Qty { get; set; } + + public bool IsHasPackingCode { get; set; } + + + + + + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs index 1f91489a0..6b9aaa056 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs @@ -39,4 +39,8 @@ public class UnplannedIssueNoteDetail : SfsStoreRecommendFromDetailWithLotPackin /// [Display(Name = "说明")] public string Explain { get; set; } + + + + } 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 d7830cd93..eb5aac397 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 @@ -83,6 +83,14 @@ public class UnplannedIssueJobEventHandler : createInput.BuildDate=DateTime.Now; createInput.ActiveDate=DateTime.Now; createInput.Details.RemoveAll(p => p.Qty == 0); + createInput.ItemCode=entity.ItemCode; + createInput.ItemName=entity.ItemName; + createInput.ItemDesc1 =entity.ItemDesc1; + createInput.ItemDesc2 = entity.ItemDesc2; + createInput.Qty=entity.Qty; + + + createInput.Details = new List();