diff --git a/.vs/WMS/v17/.wsuo b/.vs/WMS/v17/.wsuo new file mode 100644 index 000000000..308a39d56 Binary files /dev/null and b/.vs/WMS/v17/.wsuo differ diff --git a/.vs/WMS/v17/DocumentLayout.json b/.vs/WMS/v17/DocumentLayout.json new file mode 100644 index 000000000..a80109f71 --- /dev/null +++ b/.vs/WMS/v17/DocumentLayout.json @@ -0,0 +1,39 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\89237\\source\\repos\\WMS\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": -1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + }, + { + "$type": "Bookmark", + "Name": "ST:131:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:130:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:133:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:132:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumUnplannedIssueType.cs b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumUnplannedIssueType.cs index b3f978c88..57d1d6c01 100644 --- a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumUnplannedIssueType.cs +++ b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumUnplannedIssueType.cs @@ -12,4 +12,11 @@ public enum EnumUnplannedIssueType Raw = 1,//原料 非生产领料 [Display(Name = "线边 非生产领料")] Wip =2,//线边 非生产领料 + [Display(Name = "OA 非生产领料")] + OA = 3,//原料 非生产领料 + [Display(Name = "导入 非生产领料")] + IMPORT = 4,//原料 非生产领料 + + + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDTO.cs index 5eaedb099..2738abfcd 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDTO.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDTO.cs @@ -1,7 +1,9 @@ using System; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; +using Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Application.Contracts; @@ -48,4 +50,11 @@ public class UnplannedIssueJobDTO : SfsJobDTOBase [StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")] public string OANumber { get; set; } + /// + /// 实际明细 + /// + [Display(Name = "实际明细")] + public List FacDetails; + + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDetailDTO.cs index c5e5a72ba..06803f8fa 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDetailDTO.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/DTOs/UnplannedIssueJobDetailDTO.cs @@ -35,3 +35,39 @@ public class UnplannedIssueJobDetailDTO : SfsJobRecommendFromDetailDTOBase [Display(Name = "说明")] public string Explain { get; set; } } + +public class UnplannedIssueJobFacDetailDTO : SfsJobRecommendFromDetailDTOBase +{ + /// + /// 原因代码 + /// + [Display(Name = "原因代码")] + public string ReasonCode { get; set; } + + /// + /// 专案 + /// + [Display(Name = "专案")] + public string CaseCode { get; set; } + + /// + /// 项目分类 + /// + [Display(Name = "项目分类")] + public string ProjCapacityCode { get; set; } + + /// + /// 次交易码 + /// + [Display(Name = "次交易码")] + public string OnceBusiCode { get; set; } + + /// + /// 说明 + /// + [Display(Name = "说明")] + public string Explain { get; set; } +} + + + diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs index c8e90b994..7b698d394 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Application.Contracts; @@ -6,4 +7,7 @@ public interface IUnplannedIssueJobAppService : ISfsJobAppServiceBase { Task CancelByRequestNumberAsync(string number); + + Task CreateByRecommendAsync(UnplannedIssueRequest requestDto); + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestEditInput.cs index d7b026c96..4f5bbe640 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestEditInput.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestEditInput.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; namespace Win_in.Sfs.Wms.Store.Application.Contracts; @@ -59,6 +60,17 @@ public class UnplannedIssueRequestEditInput : SfsStoreRequestCreateOrUpdateInput public class UnplannedIssueRequestImportDto { + /// + /// 部门代码 + /// + [Display(Name = "部门代码")] + public string DeptCode { get; set; } + + /// + /// 部门名称 + /// + [Display(Name = "部门名称")] + public string DeptName { 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 f4f1f1a54..8edbbf73c 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 @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -7,6 +8,7 @@ using Irony; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Omu.ValueInjecter; +using Volo.Abp; using Volo.Abp.Data; using Volo.Abp.ObjectMapping; using Win_in.Sfs.Basedata.Application.Contracts; @@ -65,17 +67,47 @@ public class UnplannedIssueJobAppService /// /// [HttpPost("create-by-recommend")] - public async Task CreateByRecommendAsync(UnplannedReceiptRequestDTO requestDto) + public async Task CreateByRecommendAsync(UnplannedIssueRequest requestDto) { List useBalancesOut = new EditableList(); var jobs = await BuildUnplannedIssueJobAsync(requestDto, useBalancesOut).ConfigureAwait(false); - await _repository.InsertManyAsync(jobs.ToList()).ConfigureAwait(false); + 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); } - + + public List DeductInventory(List inventory, decimal quantityToDeduct) + { + List balanceDTOs = new List(); + decimal totalDeducted = 0; + foreach (var item in inventory) + { + decimal availableToDeduct = Math.Min(item.Qty, quantityToDeduct - totalDeducted); + item.Qty -= availableToDeduct; + totalDeducted += availableToDeduct; + BalanceDTO dto = new BalanceDTO(); + dto.InjectFrom(item); + dto.Qty = availableToDeduct; + balanceDTOs.Add(dto); + // 如果已经扣减达到所需数量,退出循环 + if (totalDeducted >= quantityToDeduct) + { + break; + } + } + // 返回实际扣减的库存数量 + return balanceDTOs; + } + + @@ -83,13 +115,16 @@ public class UnplannedIssueJobAppService - private async Task> BuildUnplannedIssueJobAsync(UnplannedReceiptRequestDTO requestDto, List useBalancesOut) + + + + private async Task> BuildUnplannedIssueJobAsync(UnplannedIssueRequest requestDto, List useBalancesOut) { List jobs = new EditableList(); foreach (var requestDtoDetail in requestDto.Details)//非计划领料明细 { - var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.ErpLocationCode)).ConfigureAwait(false);//获取存放库位 + var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.LocationErpCode)).ConfigureAwait(false);//获取存放库位 var input = new RecommendBalanceRequestInput { ItemCode = requestDtoDetail.ItemCode, @@ -98,6 +133,8 @@ public class UnplannedIssueJobAppService Locations = locationCodes.Select(p => p.Code).ToList(), IsPackingCode = false }; + + var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);//获取推荐库存 usableList = usableList .OrderBy(p => p.Lot) @@ -110,35 +147,60 @@ public class UnplannedIssueJobAppService decimal qty = 0; //实际要用库存 List useBalances = new List(); - foreach (var balanceDto in usableList) - { - if (qty >= requestDtoDetail.Qty) - { - break; - } - if (qty + balanceDto.Qty > requestDtoDetail.Qty) - { - qty += requestDtoDetail.Qty - balanceDto.Qty; - } - else - { - qty += balanceDto.Qty; - } - useBalances.Add(balanceDto); - useBalancesOut.Add(balanceDto); + + var returnlist=DeductInventory(usableList, requestDtoDetail.Qty); + + + + + useBalances.AddRange(returnlist); + useBalancesOut.AddRange(returnlist); + + + + //foreach (var balanceDto in usableList) + //{ + // decimal availableToDeduct = Math.Min(balanceDto.Qty, balanceDto.Qty - qty); + // balanceDto.Qty -= availableToDeduct; + // qty += availableToDeduct; + // if (qty >= balanceDto.Qty) + // break; + // if (qty >= requestDtoDetail.Qty) + // { + // break; + // } + // if (qty + balanceDto.Qty > requestDtoDetail.Qty) + // { + // qty += requestDtoDetail.Qty - balanceDto.Qty; + // } + // else + // { + // qty += balanceDto.Qty; + // } + // if (qty > 0) + // { + // useBalances.Add(balanceDto); + // useBalancesOut.Add(balanceDto); + // } + //} + if (returnlist.Count == 0) + { + 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(); - + job.SetId(GuidGenerator.Create()); job.UnplannedIssueRequestNumber= requestDto.Number; job.JobType = EnumJobType.UnplannedIssueJob; job.JobStatus = EnumJobStatus.Open; job.IsAutoComplete = false; job.OANumber = requestDto.OANumber; + job.Number =await _unplannedIssueJobManager.GetNumber().ConfigureAwait(true); + job.Details = new List(); job.FacDetails = new List(); job.WarehouseCode = balanceDtoGroup.First().WarehouseCode; @@ -146,11 +208,15 @@ public class UnplannedIssueJobAppService foreach (var balanceDto in balanceDtoGroup) { var jobDetail = new UnplannedIssueJobDetail(); + + jobDetail.Number = job.Number; + jobDetail.SetIdAndNumber(GuidGenerator,job.Id,job.Number); + jobDetail.CaseCode = requestDtoDetail.CaseCode; jobDetail.Explain = requestDtoDetail.Explain; jobDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode; jobDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode; - jobDetail.ReasonCode = requestDtoDetail.ReasonCode; + //jobDetail.ReasonCode = requestDtoDetail.ReasonCode; jobDetail.ItemCode = requestDtoDetail.ItemCode; jobDetail.ItemDesc1 = requestDtoDetail.ItemDesc1; jobDetail.ItemDesc2 = requestDtoDetail.ItemDesc2; @@ -165,11 +231,14 @@ public class UnplannedIssueJobAppService jobDetail.RecommendSupplierBatch = balanceDto.SupplierBatch; var jobfacDetail = new UnplannedIssueJobFacDetail(); + + jobfacDetail.Number = job.Number; + jobfacDetail.SetIdAndNumber(GuidGenerator, job.Id, job.Number); jobfacDetail.CaseCode = requestDtoDetail.CaseCode; jobfacDetail.Explain = requestDtoDetail.Explain; jobfacDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode; jobfacDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode; - jobfacDetail.ReasonCode = requestDtoDetail.ReasonCode; + //jobfacDetail.ReasonCode = requestDtoDetail.ReasonCode; jobfacDetail.ItemCode = requestDtoDetail.ItemCode; jobfacDetail.ItemDesc1 = requestDtoDetail.ItemDesc1; jobfacDetail.ItemDesc2 = requestDtoDetail.ItemDesc2; @@ -182,6 +251,8 @@ public class UnplannedIssueJobAppService jobfacDetail.RecommendProduceDate = balanceDto.ProduceDate; jobfacDetail.RecommendQty = balanceDto.Qty; jobfacDetail.RecommendSupplierBatch = balanceDto.SupplierBatch; + + //jobDetail.recommendRecommendToLocationArea = balanceDto.LocationArea; //jobDetail.RecommendToLocationCode = balanceDto.LocationCode; //jobDetail.RecommendToLocationErpCode = balanceDto.LocationErpCode; @@ -190,8 +261,11 @@ public class UnplannedIssueJobAppService job.Details.Add(jobDetail); job.FacDetails.Add(jobfacDetail); - } + + + + //job.SetProperty("details", System.Text.Json.JsonSerializer.Serialize(job.Details)); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs index 2d88eecfd..b02c2ccaa 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs @@ -93,7 +93,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false); var inputFileBytes = ms.GetAllBytes(); var importList = _excelService.Import(inputFileBytes).ToList(); - await CreateByDYOAsync(importList).ConfigureAwait(false); + await CreateByDYOAsync(importList, EnumUnplannedIssueType.IMPORT).ConfigureAwait(false); //if (errors.Count > 0) @@ -123,16 +123,23 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA public async Task CreateByAsync(List p_list) { - return await CreateByDYOAsync(p_list, true).ConfigureAwait(false); + return await CreateByDYOAsync(p_list, EnumUnplannedIssueType.OA, true).ConfigureAwait(false); } - protected async Task CreateByDYOAsync(List p_list, bool isAutoSubmit=false) + protected async Task CreateByDYOAsync(List p_list, EnumUnplannedIssueType type, bool isAutoSubmit=false) { UnplannedIssueRequest request = new UnplannedIssueRequest(); + if (p_list.Count == 0) + { + throw new UserFriendlyException("导入内容为空请填写!"); + } + var first = p_list.FirstOrDefault(); + + request.UnplannedIssueType = type; request.SetId(GuidGenerator.Create()); request.AutoCompleteJob = false; request.AutoSubmit = isAutoSubmit; @@ -142,8 +149,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA List detailList = new List(); foreach (var itm in p_list) { - var detail = new UnplannedIssueRequestDetail(); - + var detail = new UnplannedIssueRequestDetail(); detail.ItemCode = itm.ItemCode; detail.Qty = itm.Qty; detail.LocationErpCode = itm.LocationErpCode; @@ -151,7 +157,6 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA detail.WarehouseCode ="Random"; detail.LocationGroup ="Random"; detail.LocationArea = "Random"; - await SetDetailPropertiesAsync(detail).ConfigureAwait(false); detailList.Add(detail); } 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 eea6611b1..922a5f395 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 @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Volo.Abp.Data; +using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; @@ -59,7 +60,7 @@ public class UnplannedIssueJob : SfsJobAggregateRootBase [IgnoreUpdate] public List FacDetails { get; set; } = new List(); - + diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/UnplannedIssueJobs/UnplannedIssueJobDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/UnplannedIssueJobs/UnplannedIssueJobDbContextModelCreatingExtensions.cs index 7c59346fa..6a02063b6 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/UnplannedIssueJobs/UnplannedIssueJobDbContextModelCreatingExtensions.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/UnplannedIssueJobs/UnplannedIssueJobDbContextModelCreatingExtensions.cs @@ -48,24 +48,24 @@ public static class UnplannedIssueJobDbContextModelCreatingExtensions //Indexes //b.HasIndex(q => new { q.PackingCode }).IsUnique(); }); - //builder.Entity(b => - //{ - // //Configure table & schema name - // b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(UnplannedIssueJobFacDetail), options.Schema); - // //Configure ABP properties - // b.ConfigureByConvention(); - // //Configure Sfs base properties - // b.ConfigureSfsBase(); - // //Configure Job base properties - // b.ConfigureJobRecommendFromDetail(); - // //Properties + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(UnplannedIssueJobFacDetail), options.Schema); + //Configure ABP properties + b.ConfigureByConvention(); + //Configure Sfs base properties + b.ConfigureSfsBase(); + //Configure Job base properties + b.ConfigureJobRecommendFromDetail(); + //Properties - // //Relations - // //None + //Relations + //None - // //Indexes - // //b.HasIndex(q => new { q.PackingCode }).IsUnique(); - //}); + //Indexes + //b.HasIndex(q => new { q.PackingCode }).IsUnique(); + }); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs index 233965ef9..db0b9bf9f 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +using System.Text.Json.Nodes; using System.Threading.Tasks; +using Omu.ValueInjecter; using Volo.Abp.Domain.Entities; using Volo.Abp.EventBus; using Volo.Abp.ObjectMapping; @@ -93,8 +95,21 @@ public class UnplannedIssueRequestEventHandler } else { - var job = await BuildUnplannedIssueJobCreateInputAsync(entity).ConfigureAwait(false); - await _unplannedIssueJobApp.CreateAsync(job).ConfigureAwait(false); + if (entity.UnplannedIssueType == EnumUnplannedIssueType.OA || entity.UnplannedIssueType == EnumUnplannedIssueType.IMPORT) + { + //var job = await BuildUnplannedIssueJobCreateInputAsync(entity).ConfigureAwait(false); + + var request= new UnplannedIssueRequest(); + request.InjectFrom(entity); + + await _unplannedIssueJobApp.CreateByRecommendAsync(request).ConfigureAwait(false); + } + else + { + var job = await BuildUnplannedIssueJobCreateInputAsync(entity).ConfigureAwait(false); + await _unplannedIssueJobApp.CreateAsync(job).ConfigureAwait(false); + } + } } public virtual async Task HandleEventAsync(SfsRefusedEntityEventData eventData) @@ -171,19 +186,26 @@ public class UnplannedIssueRequestEventHandler { await Task.CompletedTask.ConfigureAwait(false); var createInput = ObjectMapper.Map(entity); + + + + createInput.UnplannedIssueRequestNumber = entity.Number; createInput.JobType = EnumJobType.UnplannedIssueJob; createInput.JobStatus = EnumJobStatus.Open; createInput.IsAutoComplete = entity.AutoCompleteJob; + createInput.Worker = string.IsNullOrEmpty(createInput.Worker)?"导入":createInput.Worker; + createInput.Details = new List(); foreach (var inputDetail in entity.Details) { var detail = ObjectMapper.Map(inputDetail); - + detail.ExtraProperties = inputDetail.ExtraProperties; - + detail.HandledLot = string.IsNullOrEmpty(detail.HandledLot) ? "导入" : detail.HandledLot; + detail.RecommendLot = string.IsNullOrEmpty(detail.RecommendLot) ? "导入" : detail.RecommendLot; createInput.Details.Add(detail); } createInput.WarehouseCode = createInput.Details[0].RecommendFromWarehouseCode;