diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/DTOs/UnplannedIssueRequestDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/DTOs/UnplannedIssueRequestDTO.cs index 9688315e9..d47dcfb48 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/DTOs/UnplannedIssueRequestDTO.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/DTOs/UnplannedIssueRequestDTO.cs @@ -40,6 +40,10 @@ public class UnplannedIssueRequestDTO : SfsStoreRequestDTOBase [Display(Name = "调出库位")] [Required(ErrorMessage = "{0}是必填项")] - public string LocationErpCode { get; set; } + public string FromLocationErpCode { get; set; } /// /// 专案 /// diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestImportInput.cs index f4edec33c..34b9fbc36 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestImportInput.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/Inputs/UnplannedIssueRequestImportInput.cs @@ -36,9 +36,10 @@ public class UnplannedIssueRequestImportInput : SfsStoreImportInputBase /// /// 调出库位 /// - [Display(Name = "调出库位")] - [Required(ErrorMessage = "调出库位不能为空")] - public string LocationErpCode { get; set; } + [Display(Name = "储位")] + [Required(ErrorMessage = "储位不能为空")] + + public string FromErpLocationCode { get; set; } /// /// 专案 @@ -89,77 +90,7 @@ public class UnplannedIssueRequestImportInput : SfsStoreImportInputBase public string Explain { get; set; } - - - ///// - ///// 部门代码 - ///// - //[Display(Name = "部门代码")] - //public string DeptCode { get; set; } - - ///// - ///// 部门名称 - ///// - //[Display(Name = "部门名称")] - //public string DeptName { get; set; } - - ///// - ///// 料号 - ///// - //[Display(Name = "料号")] - //[Required(ErrorMessage = "{0}是必填项")] - //public string ItemCode { get; set; } - - - - - - ///// - ///// 数量 - ///// - //[Display(Name = "数量")] - //[Required(ErrorMessage = "{0}是必填项")] - //public decimal Qty { get; set; } - - ///// - ///// 单位 - ///// - //[Display(Name = "单位")] - //public string Uom { get; set; } - - - - ///// - ///// 调出库位 - ///// - //[Display(Name = "调出库位")] - //[Required(ErrorMessage = "{0}是必填项")] - //public string LocationErpCode { get; set; } - ///// - ///// 专案 - ///// - //[Display(Name = "专案")] - //[Required(ErrorMessage = "{0}是必填项")] - //public string CaseCode { get; set; } - ///// - ///// 项目分类 - ///// - //[Display(Name = "项目分类")] - //[Required(ErrorMessage = "{0}是必填项")] - //public string ProjCapacityCode { get; set; } - - ///// - ///// 次交易码 - ///// - //[Display(Name = "次交易码")] - //[Required(ErrorMessage = "{0}是必填项")] - //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/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs index 8139bf9a6..431be17f9 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 @@ -89,10 +89,20 @@ public class UnplannedIssueJobAppService { List useBalancesOut = new EditableList(); var jobs = await BuildUnplannedIssueJobAsync(requestDto, useBalancesOut).ConfigureAwait(false); + if (useBalancesOut.Count == 0) + { + 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; @@ -113,10 +123,12 @@ public class UnplannedIssueJobAppService //} - - private async Task> DeductInventory(List inventory, decimal quantityToDeduct, EnumLocationType enumLocationType) + + private async Task,List>> DeductInventory(List inventory, decimal quantityToDeduct, EnumLocationType enumLocationType) { + List balanceDTOs = new List(); + List unbalanceDTOs = new List(); decimal totalDeducted = 0; foreach (var item in inventory) @@ -128,16 +140,25 @@ public class UnplannedIssueJobAppService { var locationDto = await _locationAppService.GetByCodeAsync(item.LocationCode).ConfigureAwait(false); BalanceDTO dto = new BalanceDTO(); + BalanceDTO undto = new BalanceDTO(); + dto.InjectFrom(item); + dto.Qty = availableToDeduct; + balanceDTOs.Add(dto); if (enumLocationType == EnumLocationType.RAW) { - dto.InjectFrom(item); - dto.Qty = availableToDeduct; - balanceDTOs.Add(dto); + + undto.InjectFrom(item); + unbalanceDTOs.Add(dto); + } else { - dto.InjectFrom(item); - balanceDTOs.Add(dto); + + undto.InjectFrom(item); + undto.Qty = availableToDeduct; + unbalanceDTOs.Add(dto); + + } } @@ -147,8 +168,12 @@ public class UnplannedIssueJobAppService break; } } + + Tuple, List> tuple = new Tuple, List>( balanceDTOs,unbalanceDTOs); + + // 返回实际扣减的库存数量 - return balanceDTOs; + return tuple; } @@ -277,8 +302,9 @@ public class UnplannedIssueJobAppService //实际要用库存 List useBalances = new List(); var returnlist=await DeductInventory(usableList, requestDtoDetail.Qty, locationDto.Type).ConfigureAwait(false); - useBalances.AddRange(returnlist); - useBalancesOut.AddRange(returnlist); + + useBalances.AddRange(returnlist.Item1); + useBalancesOut.AddRange(returnlist.Item2); @@ -307,9 +333,11 @@ public class UnplannedIssueJobAppService // useBalancesOut.Add(balanceDto); // } //} - if (returnlist.Count == 0) + if (returnlist.Item1.Count == 0) { - Errors.Add($"{"非生产领料"+requestDto.Number+"零件号:"+requestDtoDetail.ItemCode + "库存不够" + requestDtoDetail.Qty.ToString()}"); + _logger.LogError($"{"非生产领料" + requestDto.Number + "零件号:" + requestDtoDetail.ItemCode + "库存不够" + requestDtoDetail.Qty.ToString()}"); + // Errors.Add($"{"非生产领料"+requestDto.Number+"零件号:"+requestDtoDetail.ItemCode + "库存不够" + requestDtoDetail.Qty.ToString()}"); + continue; } foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationCode)) { @@ -322,7 +350,6 @@ public class UnplannedIssueJobAppService else { job.UnplannedIssueType = EnumUnplannedIssueType.Wip; - } job.SetId(GuidGenerator.Create()); @@ -397,13 +424,13 @@ public class UnplannedIssueJobAppService jobs.Add(job); } } - if (Errors.Count > 0) - { - foreach (var itm in Errors) - { - _logger.LogError(itm); - } - } + //if (Errors.Count > 0) + //{ + // foreach (var itm in Errors) + // { + // _logger.LogError(itm); + // } + //} return jobs; } @@ -474,6 +501,15 @@ public class UnplannedIssueJobAppService public override async Task CompleteAsync(Guid id, UnplannedIssueJobDTO dto) { 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 errorList = errorQuery.ToList(); + if (errorList.Count > 0) + { + throw new UserFriendlyException($"零件{string.Join(",",errorList)}实际数量大于推荐数量!"); + } + var handleDto = new UnplannedIssueJobDTO(); //using (var uow = _unitOfWorkManager.Begin()) //{ @@ -486,9 +522,7 @@ public class UnplannedIssueJobAppService var handleEntity = ObjectMapper.Map(dto); var handleResult = await _unplannedIssueJobManager.CompleteAsync(handleEntity, CurrentUser).ConfigureAwait(false); handleDto = ObjectMapper.Map(handleResult); - await _expectOutAppService.RemoveAsync(dto.Number).ConfigureAwait(false); - - + await _expectOutAppService.RemoveAsync(job.Number).ConfigureAwait(false); handleResult.CompleteUserName = dto.Worker; handleResult.JobStatus = EnumJobStatus.Done; 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 090493880..27218ff9b 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 @@ -4,6 +4,8 @@ using System.ComponentModel.DataAnnotations; using System.IO; using System.Linq; using System.Threading.Tasks; +using DocumentFormat.OpenXml.Bibliography; +using DocumentFormat.OpenXml.Office2016.Excel; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -82,7 +84,6 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA entity.AutoAgree = true; entity.AutoHandle = true; entity.DirectCreateNote = false; - await _unplannedIssueRequestManager.CreateAsync(entity).ConfigureAwait(false); @@ -96,55 +97,98 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA /// /// /// - [HttpPost("import-dongyang")] - public async Task ImportDYAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file) - { - - try - { + //[HttpPost("import-dongyang")] + //public async Task ImportDYAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file) + //{ + // try + // { + // using var ms = new MemoryStream(); + // await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false); + // var inputFileBytes = ms.GetAllBytes(); + // var importList = _excelService.Import(inputFileBytes).ToList(); + // await CreateByDYOAsync(importList).ConfigureAwait(false); + // List errorsList = new List(); + // foreach (var itm in importList) + // { + // if (string.IsNullOrEmpty(itm.CaseCode) + // || string.IsNullOrEmpty(itm.ItemCode) + // || itm.Qty == 0 + // || string.IsNullOrEmpty(itm.ProjCapacityCode) + // || string.IsNullOrEmpty(itm.FromLocationErpCode) + + // ) + // { + // itm.Explain = "此项错误"; + // errorsList.Add(itm); + // } + // } + + // if (errorsList.Count > 0) + // { + // var fileContent = _excelService.Export(errorsList); + // return new TestResult(fileContent.FileContents, ExportImportService.ContentType) { FileDownloadName = fileContent.FileDownloadName }; + // } + + // var fileContent1 = _excelService.Export(importList); + + // return new JsonResult(new { Code = 200, FileDownloadName = fileContent1.FileDownloadName }); + // } + // catch (Exception e) + // { + // throw new UserFriendlyException(e.Message); + // } + //} + + + //[HttpPost("import")] + //[Consumes("multipart/form-data")] + ////[UnitOfWork] + //public override async Task ImportAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file) + //{ + // try + // { + // using var ms = new MemoryStream(); + // await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false); + // var inputFileBytes = ms.GetAllBytes(); + // var importList = _excelService.Import(inputFileBytes).ToList(); + // await CreateByDYOAsync(importList).ConfigureAwait(false); + // List errorsList = new List(); + // foreach (var itm in importList) + // { + // if (string.IsNullOrEmpty(itm.CaseCode) + // || string.IsNullOrEmpty(itm.ItemCode) + // || itm.Qty == 0 + // || string.IsNullOrEmpty(itm.ProjCapacityCode) + // || string.IsNullOrEmpty(itm.FromErpLocationCode) + + // ) + // { + // itm.Explain = "此项错误"; + // errorsList.Add(itm); + // } + // } + + // if (errorsList.Count > 0) + // { + // var fileContent = _excelService.Export(errorsList); + // return new TestResult(fileContent.FileContents, ExportImportService.ContentType) { FileDownloadName = fileContent.FileDownloadName }; + // } + + // var fileContent1 = _excelService.Export(importList); + + // return new JsonResult(new { Code = 200, FileDownloadName = fileContent1.FileDownloadName }); + // } + // catch (Exception e) + // { + // throw new UserFriendlyException(e.Message); + // } + //} - using var ms = new MemoryStream(); - await file.OpenReadStream().CopyToAsync(ms).ConfigureAwait(false); - var inputFileBytes = ms.GetAllBytes(); - var importList = _excelService.Import(inputFileBytes).ToList(); - await CreateByDYOAsync(importList, EnumUnplannedIssueType.IMPORT).ConfigureAwait(false); - List errorsList = new List(); - - foreach (var itm in importList) - { - if (string.IsNullOrEmpty(itm.CaseCode) - || string.IsNullOrEmpty(itm.ItemCode) - || itm.Qty == 0 - || string.IsNullOrEmpty(itm.ProjCapacityCode) - || string.IsNullOrEmpty(itm.LocationErpCode) - - ) - { - itm.Explain = "此项错误"; - errorsList.Add(itm); - } - } - - if (errorsList.Count > 0) - { - var fileContent = _excelService.Export(errorsList); - return new TestResult(fileContent.FileContents, ExportImportService.ContentType) { FileDownloadName =fileContent.FileDownloadName }; - } - var fileContent1 = _excelService.Export(importList); - - return new JsonResult(new { Code = 200, FileDownloadName = fileContent1.FileDownloadName }); - } - catch (Exception e) - { - throw new UserFriendlyException(e.Message); - } - } - @@ -189,7 +233,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA UnplannedIssueRequestDTO request = new UnplannedIssueRequestDTO(); try { - return await CreateByDYOAsync(p_list, EnumUnplannedIssueType.OA, true).ConfigureAwait(false); + return await CreateByDYOAsync(p_list, true).ConfigureAwait(false); } catch (Exception e) { @@ -202,17 +246,16 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA - - protected async Task CreateByDYOAsync(List p_list, EnumUnplannedIssueType type, bool isAutoSubmit=false) + protected async Task CreateByDYOAsync(List p_list, 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; @@ -221,8 +264,60 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA request.DirectCreateNote = false; request.DeptCode = first.DeptCode; request.DeptName = first.DeptName; + request.BuildDate = DateTime.Now; + request.OANumber = first.OANumber; + + await SetEntityPropertiesAsync(request).ConfigureAwait(false); + List detailList = new List(); + foreach (var itm in p_list) + { + var detail = new UnplannedIssueRequestDetail(); + detail.ItemCode = itm.ItemCode; + detail.Qty = itm.Qty; + + detail.LocationErpCode = itm.FromLocationErpCode; + detail.LocationCode = "Random"; + detail.WarehouseCode = "Random"; + detail.LocationGroup = "Random"; + detail.LocationArea = "Random"; + detail.CaseCode = first.CaseCode; + detail.ProjCapacityCode = first.ProjCapacityCode; + detail.OnceBusiCode = first.OnceBusiCode; + detail.Explain = first.Explain; + detail.ExpireDate = DateTime.MaxValue; + + + + await SetDetailPropertiesAsync(detail).ConfigureAwait(false); + detailList.Add(detail); + } + + request.Details = detailList; + await _unplannedIssueRequestManager.CreateAsync(request).ConfigureAwait(false); + var dto = ObjectMapper.Map(request); + return dto; + + } + + protected async Task CreateByDYOAsync(List p_list, bool isAutoSubmit=false) + { + UnplannedIssueRequest request = new UnplannedIssueRequest(); + if (p_list.Count == 0) + { + throw new UserFriendlyException("导入内容为空请填写!"); + } + + var first = p_list.FirstOrDefault(); + + request.SetId(GuidGenerator.Create()); + request.AutoCompleteJob = false; + request.AutoSubmit = isAutoSubmit; + request.AutoAgree = false; + request.AutoHandle = false; + request.DirectCreateNote = false; + request.BuildDate= DateTime.Now; - request.OANumber=first.OANumber; + await SetEntityPropertiesAsync(request).ConfigureAwait(false); List detailList = new List(); @@ -232,7 +327,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA detail.ItemCode = itm.ItemCode; detail.Qty = itm.Qty; - detail.LocationErpCode = itm.LocationErpCode; + detail.LocationErpCode = itm.FromErpLocationCode; detail.LocationCode = "Random"; detail.WarehouseCode ="Random"; detail.LocationGroup ="Random"; @@ -241,9 +336,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA detail.ProjCapacityCode = first.ProjCapacityCode; detail.OnceBusiCode = first.OnceBusiCode; detail.Explain = first.Explain; - - - + await SetDetailPropertiesAsync(detail).ConfigureAwait(false); detailList.Add(detail); } @@ -314,11 +407,27 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA // $"不是{EnumUnplannedReceiptType.Wip.GetDisplayName()}" + // $"或{EnumUnplannedReceiptType.Raw.GetDisplayName()}】"); //} + //unplannedReceiptRequest.UnplannedIssueType = type; + + unplannedReceiptRequest.AutoCompleteJob = false; + unplannedReceiptRequest.AutoSubmit = true; + unplannedReceiptRequest.AutoAgree = false; + unplannedReceiptRequest.AutoHandle = false; + unplannedReceiptRequest.DirectCreateNote = false; + unplannedReceiptRequest.BuildDate = DateTime.Now; await SetRequestAutoPropertiesAsync(unplannedReceiptRequest).ConfigureAwait(false); await SetEntityPropertiesAsync(unplannedReceiptRequest).ConfigureAwait(false); - foreach (var detail in unplannedReceiptRequest.Details) { + detail.LocationErpCode = unplannedReceiptRequest.FromErpLocationCode; + detail.LocationCode = "Random"; + detail.WarehouseCode = "Random"; + detail.LocationGroup = "Random"; + detail.LocationArea = "Random"; + //detail.CaseCode = unplannedReceiptRequest.CaseCode; + //detail.ProjCapacityCode = first.ProjCapacityCode; + //detail.OnceBusiCode = first.OnceBusiCode; + //detail.Explain = first.Explain; await SetDetailPropertiesAsync(detail).ConfigureAwait(false); } } @@ -386,74 +495,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA detail.LocationArea = location.AreaCode; detail.LocationCode = location.Code; } - //string packingcode = string.Empty; - //if(type!= EnumUnplannedIssueType.Wip) - //{ - // packingcode = detail.PackingCode; - //} - //var balance = await _balanceAppService.GetByItemLocationAndPackingAsync( - // packingcode, - // detail.ItemCode, - // detail.LocationCode).ConfigureAwait(false); - - //if (balance != null) - //{ - // detail.SupplierBatch = balance.SupplierBatch; - // detail.ArriveDate = balance.ArriveDate; - // detail.ProduceDate = balance.ProduceDate; - // detail.ExpireDate = balance.ExpireDate; - - // detail.Lot = balance.Lot; - // detail.ContainerCode = balance.ContainerCode; - // detail.PackingCode = balance.PackingCode; - // detail.Qty = detail.Qty; - // detail.Status = balance.Status; - //} - - //if (!string.IsNullOrEmpty(detail)) - //{ - // var dict = await DictAppService.GetByCodeAsync(nameof(input.OnceBusiCode)).ConfigureAwait(false); - - // if (dict.Items != null && dict.Items.Count > 0) - // { - // var item = dict.Items.FirstOrDefault(t => t.Code == input.OnceBusiCode); - - // Check.NotNull(item, "次交易码", "次交易码不存在"); - - // detail.SetProperty("OnceBusiCode", item.Code); - // detail.SetProperty("OnceBusiName", item.Name); - // } - //} - - //if (!string.IsNullOrEmpty(input.CaseCode)) - //{ - // var dict = await DictAppService.GetByCodeAsync(nameof(input.CaseCode)).ConfigureAwait(false); - - // if (dict.Items != null && dict.Items.Count > 0) - // { - // var item = dict.Items.FirstOrDefault(t => t.Code == input.CaseCode); - - // Check.NotNull(item, "专案代码", "专案代码不存在"); - - // detail.SetProperty("CaseCode", item.Code); - // detail.SetProperty("CaseName", item.Name); - // } - //} - - //if (!string.IsNullOrEmpty(input.ProjCapacityCode)) - //{ - // var dict = await DictAppService.GetByCodeAsync(nameof(input.ProjCapacityCode)).ConfigureAwait(false); - - // if (dict.Items != null && dict.Items.Count > 0) - // { - // var item = dict.Items.FirstOrDefault(t => t.Code == input.ProjCapacityCode); - - // Check.NotNull(item, "项目分类代码", "项目分类代码不存在"); - - // detail.SetProperty("ProjCapacityCode", item.Code); - // detail.SetProperty("ProjCapacityName", item.Name); - // } - //} + } @@ -511,16 +553,19 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA } } + + + protected async Task CheckBalanceAsync(UnplannedIssueRequestImportInput importInput, List validationRresult) { var balance = await BalanceAclService.GetByItemLocationAndPackingAsync( string.Empty, importInput.ItemCode, - importInput.LocationErpCode).ConfigureAwait(false); + importInput.FromErpLocationCode).ConfigureAwait(false); if (balance == null) { - validationRresult.Add(new ValidationResult($"ERP料号{importInput.ItemCode}在库位{importInput.LocationErpCode}没有库存记录", new string[] { "库存余额" })); + validationRresult.Add(new ValidationResult($"ERP料号{importInput.ItemCode}在库位{importInput.FromErpLocationCode}没有库存记录", new string[] { "库存余额" })); } else { @@ -568,7 +613,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA protected override async Task ValidateImportModelAsync(UnplannedIssueRequestImportInput model, List validationRresult) { _ = await CheckItemBasicAsync(model, validationRresult).ConfigureAwait(false); - await CheckErpLocationAsync(model.LocationErpCode, validationRresult).ConfigureAwait(false); + await CheckErpLocationAsync(model.FromErpLocationCode, validationRresult).ConfigureAwait(false); await CheckOnceBusiCodeAsync(model, validationRresult).ConfigureAwait(false);//次交易码 //await CheckCaseCodeAsync(model, validationRresult).ConfigureAwait(false);//专案代码 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs index e9aa8610a..285e49c05 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs @@ -7,20 +7,27 @@ using System.Threading.Tasks; using DocumentFormat.OpenXml.Office.CustomUI; using DocumentFormat.OpenXml.Office2010.Excel; using Microsoft.EntityFrameworkCore; +using Volo.Abp; using Volo.Abp.Domain.Repositories; using Volo.Abp.Users; using Volo.Abp.Validation; using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; +using Win_in.Sfs.Wms.Inventory.Domain; namespace Win_in.Sfs.Wms.Store.Domain; public class UnplannedIssueJobManager : SfsJobManagerBase, IUnplannedIssueJobManager { - + private readonly IBalanceRepository _balanceRepository; public UnplannedIssueJobManager( + IBalanceRepository balanceRepository, + IUnplannedIssueJobRepository repository ) : base(repository) { + _balanceRepository = balanceRepository; + } /// @@ -39,23 +46,44 @@ public class UnplannedIssueJobManager : SfsJobManagerBase + /// 储位 + /// + [Display(Name = "储位")] + + public string FromErpLocationCode { get; set; } + + + } 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 db0b9bf9f..b1154c030 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 @@ -88,29 +88,29 @@ public class UnplannedIssueRequestEventHandler //{ // entity.RequestStatus = EnumRequestStatus.Completed; //} - if (entity.DirectCreateNote) - { - var note = await BuildUnplannedIssueNoteCreateInputAsync(entity).ConfigureAwait(false); - await _unplannedIssueNoteAppService.CreateAsync(note).ConfigureAwait(false); - } - else - { - if (entity.UnplannedIssueType == EnumUnplannedIssueType.OA || entity.UnplannedIssueType == EnumUnplannedIssueType.IMPORT) - { + //if (entity.DirectCreateNote) + //{ + // var note = await BuildUnplannedIssueNoteCreateInputAsync(entity).ConfigureAwait(false); + // await _unplannedIssueNoteAppService.CreateAsync(note).ConfigureAwait(false); + //} + //else + //{ + //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); - } + //} + //else + //{ + // var job = await BuildUnplannedIssueJobCreateInputAsync(entity).ConfigureAwait(false); + // await _unplannedIssueJobApp.CreateAsync(job).ConfigureAwait(false); + //} - } + //} } public virtual async Task HandleEventAsync(SfsRefusedEntityEventData eventData) {