From f3d05af16d596b846e4f79c9eb05aea4dbcf67e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Sat, 12 Oct 2024 08:49:44 +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 --- .vs/WMS/v17/.wsuo | Bin 0 -> 16896 bytes .vs/WMS/v17/DocumentLayout.json | 39 ++++++ .../Enums/Store/EnumUnplannedIssueType.cs | 7 + .../DTOs/UnplannedIssueJobDTO.cs | 9 ++ .../DTOs/UnplannedIssueJobDetailDTO.cs | 36 +++++ .../IUnplannedIssueJobAppService.cs | 4 + .../Inputs/UnplannedIssueRequestEditInput.cs | 12 ++ .../UnplannedIssueJobAppService.cs | 124 ++++++++++++++---- ...lannedIssueRequestForDongyangAppService.cs | 17 ++- .../UnplannedIssueJobs/UnplannedIssueJob.cs | 3 +- ...ssueJobDbContextModelCreatingExtensions.cs | 32 ++--- .../UnplannedIssueRequestEventHandler.cs | 30 ++++- 12 files changed, 261 insertions(+), 52 deletions(-) create mode 100644 .vs/WMS/v17/.wsuo create mode 100644 .vs/WMS/v17/DocumentLayout.json diff --git a/.vs/WMS/v17/.wsuo b/.vs/WMS/v17/.wsuo new file mode 100644 index 0000000000000000000000000000000000000000..308a39d56d5652d44c099d669d184b6114e54e83 GIT binary patch literal 16896 zcmeHOUyK_^86T%DPzsci5}+;VsfwzivWIuQ_S!*Im%B?zP_7}pOH!y&*+2H>5?_3> zFX=_lHy)4>&mbWLNUcB!Aywi9gpjCs0;E)xcmW>TKJZXgs(1n+n(+J0?AT-9?t0I@ zUjE=Yt#@~JX1`~2gF@Hn%^~|*W9VM|9$->j(v#J|8jB6=y_suw%m8BY;o6NS`(@eELgg;;|O6dLOU|Z4Hp0-!_Z5Vag5u zUvKSs;ZqLvaEpK$0Mo1Zqu+a0VmuV*@Rmex-A~_V#(+=%lQdu%hCh!vG%$w?@W$J~ z2r2PJ)U`3kjf5FFz(3bbU6XhHO@)j0f0gs&tZ!Ym>gk7doLG6sC&J`MhplI9VjAX2;|agn|f zxqd-@qDNHdCRao_c0qz z+MjYa34Hni?B5?_V-Bym%cS$q4Jf0bqTOJFN$LhidT-wf2Ij|s#N78Jg>;|CwIB|Q zx;PCDL;csqa}^rjf$sP4+=cGb-e?`)>7O$;uER%Lg08HOJq704o)upkyMLc=#~Xrn zn=&MX$;qej&XJE55h$B~R_`tQ$?U`D)UqrN-Sh5|$G`jgV=w>p=U4Z?boSm8;?>{$ z^OIdwRPFQqGIm=6ZCkJ` zYke^ONDF;@uVizN~ z=tY%kMIu$YOB`oyPGIwF-dbKcT*TiueBZI{vTs{8&vq=g>;+b>=z3NZ1fCuGP8dbb z3-g~tbGu}-gWU|Bq7%6m#s|n^DYR^Y3{U7qYmfK~>5;0C|PAG)@H0l_0GWI_ON>C!18|n7E z#QqGb@V}UE)cZ^QFX>OF|6|5jOVY3K<4njb=+FGaML>?klbC}qvt)xF={WH(^XZf} zmMr*ZlfjfdZm^0FF7T5cfL%q9wlAt($6Qgvs%rHW3vASdT(Ied{;b@)oZYi?m_O- zbDPCXh&^KBwfAiG^Pn5;39---^sdR(b=aGv`dPU~?m@F1_nuYWvu~A5{?z%}I%cmk zh&J$}*0mq&T8Y;+2;G4)c7%)H8m?06Z0g8FGBd~#Df=oTtMV-0oET%5rBu_dD!%FK zo4U+?XgZOHE=e3RCOI!@#_ZJ}CZ2(YY;pymCDSIY-sH#Ro>|;Si}IflD^dD)QSyV2 z`7sJ3ceL^%a^{3@?c!>eFg7D+#_Lwstvr=@K?qa$S(m}l)(>WyxZvC z#22;+7GNDTRp%+rjo^uNZ&c%CSiXFzJ-5petw3wnp^@UuVo;uZ zN&j;_>80KK@5B((C`2hpvp2d=dYg0&tj&#HSIWbI)!AW(d(rG)jb2>Ity_0dv znC0v7ItN?iw|kTo?ldV*A}&|)rmPPwp^BG&cGF-}TNv5{GkVedMsM@=n`X9Yv`^O7 z$*oQP)2n2@BN|~#)M&}JbOrQY2i@tzlJd-S(g*Y5l`$)9#{WfFKU!2~2wZ6~Jy_1F z^r}j+eQjct5-egBcCv=Hw)D2>dAU+kFv4j|h}4vQZ*LTIogY@QX+LAD@)bUyI{2gg zZpc~Mfahb5wDdM$a!xh;vK?)_hp$c4(Pk@8at*Um*=O>82yL=~Hm#o3X2xKvkZrYZ zZ%mWsq%%FF3OIqk#HAI1XGZ+o7UdQgaa7Dq5ng zp|z*?t2}$=t$%gXNONEJ_#?F@GyZoLviWATXOm`wsO|UO@}CE70>q>Z$Ord~=zDMX z476_3G-STw{KPcudjQl@^tc#-o6(w%n0VfS`!>vQj zg|wGJ6Y5z;Lm_HhXoLvQKJ)SV7}I zYyBqt6JclrG1j^)qXe;md?9158bdDhVBd0eY62A)P<9jXRb0I zF@8CO9iPDykX?8KXW)}F%QGu~vqoojjpfDPJ^OCVG@=tzFpSHXiG4MaNhHn=D literal 0 HcmV?d00001 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;