diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/BBAC_SA_DTO.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/BBAC_SA_DTO.cs index 4b5fd8b1..85ece7d0 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/BBAC_SA_DTO.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/BBAC_SA_DTO.cs @@ -79,7 +79,7 @@ public class BBAC_SA_DETAIL_IMPORT_DTO [Display(Name = "Material")] [Required(ErrorMessage = "{0}不能为空")] [ImporterHeader(Name = "Material")] - public string LU { get; set; } + public string PartCode { get; set; } /// /// 数量 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_SA_SERVICE.cs index 32d392d3..3ff82dcf 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/BBAC_SA_SERVICE.cs @@ -114,14 +114,7 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase #region 导入数据转换、数据校验 ExportImporter _exportImporter = new ExportImporter(); var importDtos = await _exportImporter.UploadExcelImport(files, _excelImportService); - - //JisBBAC - var importHBOPDtos = importDtos.FindAll(t => t.PN.Contains("R0") == false); - //买单件BBAC - var importMaiDanJianHBOPDtos = importDtos.FindAll(t => t.PN.Contains("R0")); - - var importBBACSaDetails = ObjectMapper.Map, List>(importHBOPDtos); - var importMaiDanJianBBACSaDetails = ObjectMapper.Map, List>(importHBOPDtos); + var importBBACSaDetails = ObjectMapper.Map, List>(importDtos); //数据校验 var checkList = new List(); @@ -139,14 +132,14 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase if (checkList.Count > 0) { - string fileName = await ExportErrorReportAsync(checkList); + string fileName = await ExportErrorReportAsync(checkList).ConfigureAwait(false); return new JsonResult(new { Code = ApplicationConsts.ImportFailCode, fileName = fileName }); } #endregion if (importBBACSaDetails.Any()) { - await SaDataHandleAsync(importBBACSaDetails, importMaiDanJianBBACSaDetails); + await SaDataHandleAsync(importBBACSaDetails).ConfigureAwait(false); } return new JsonResult(new { Code = 200, Message = "导入成功" }); @@ -286,7 +279,7 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase /// /// 结算数据处理 /// - private async Task SaDataHandleAsync(List bbacSaDetails, List maiDanJianBBACSaDetails) + private async Task SaDataHandleAsync(List bbacSaDetails) { //结算单号 var bbacSaBillNum = OrderNumberGenerator.GenerateOrderNumber("SA"); @@ -319,13 +312,13 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase bbacSaDetails.ForEach(bbacSaDetail => { - List luList = bbacSaDetail.LU.Split(" ").ToList(); - bbacSaDetail.LU = luList[0].Replace(" ", ""); - if (luList.Count > 1) + List partCodes = bbacSaDetail.PartCode.Split(" ").ToList(); + bbacSaDetail.PartCode = partCodes[0].Replace(" ", ""); + if (partCodes.Count > 1) { - luList.RemoveAt(0); - var luAssemble = luList.Select(t => t.Replace(" ", "")); - bbacSaDetail.LU += luAssemble.Aggregate(" ", (current, index) => current + index); + partCodes.RemoveAt(0); + var partCodeAssemble = partCodes.Select(t => t.Replace(" ", "")); + bbacSaDetail.PartCode += partCodeAssemble.Aggregate(" ", (current, index) => current + index); } bbacSaDetail.BillNum = bbacSaBillNum; @@ -334,6 +327,7 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase //根据物料号、结算日期获取价格 var priceListEntity = priceListEntitys.Find(t => t.LU == bbacSaDetail.LU && bbacSaDetail.SettleDate > t.BeginTime && bbacSaDetail.SettleDate < t.EndTime); bbacSaDetail.Price = priceListEntity?.Price ?? default; + bbacSaDetail.IsMaiDan = bbacSaDetail.PN.Contains("R0"); }); //导入的零件号集合 @@ -353,6 +347,13 @@ public class BBAC_SA_SERVICE : SettleAccountApplicationBase var materialRelationship = new MaterialRelationship(GuidGenerator.Create(), t.Replace(" ", "-"), "", t, _businessType.ToString()); materialRelationships.Add(materialRelationship); }); + + var seAllMaterialRelationships = materialRelationshipEntitys.Union(materialRelationships); + bbacSaDetails.ForEach(bbacSaDetail => + { + bbacSaDetail.LU = seAllMaterialRelationships.FirstOrDefault(t => t.SettleMaterialCode == bbacSaDetail.PartCode)?.ErpMaterialCode ?? bbacSaDetail.PartCode.Replace(" ", "-"); + bbacSaDetail.KeyCode = bbacSaDetail.PN + bbacSaDetail.LU; + }); #endregion #region 入库数据赋值 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_SA_SERVICE.cs index 430cc75e..460565f6 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/HBPO_SA_SERVICE.cs @@ -328,8 +328,8 @@ public class HBPO_SA_SERVICE : SettleAccountApplicationBase if (partCodes.Count > 1) { partCodes.RemoveAt(0); - var luAssemble = partCodes.Select(t => t.Replace(" ", "")); - hbpoSaDetail.PartCode += luAssemble.Aggregate(" ", (current, index) => current + index); + var partCodeAssemble = partCodes.Select(t => t.Replace(" ", "")); + hbpoSaDetail.PartCode += partCodeAssemble.Aggregate(" ", (current, index) => current + index); } hbpoSaDetail.BillNum = hbpoSaBillNum; diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/JisHBPOSeEdiCompareAppService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/JisHBPOSeEdiCompareAppService.cs index f0ae4698..427fc39f 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/JisHBPOSeEdiCompareAppService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/JisHBPOSeEdiCompareAppService.cs @@ -1,17 +1,15 @@ using System; +using System.Collections.Generic; using System.Diagnostics; +using System.Linq; using System.Threading.Tasks; using Coravel.Invocable; +using LinqToDB; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; using SettleAccount.Domain.BQ; using Volo.Abp.Application.Services; using Win.Sfs.Shared.RepositoryBase; -using System.Linq; -using DocumentFormat.OpenXml.Office2010.ExcelAc; -using System.Collections.Generic; -using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.Application; -using System.Runtime.Intrinsics.X86; namespace Win.Sfs.SettleAccount.Entities.BQ.Syncs; @@ -47,56 +45,38 @@ public class JisHBPOSeEdiCompareAppService : ApplicationService, IInvocable /// public async Task Invoke() { - await Task.CompletedTask; - Debug.WriteLine($"执行了 {this.GetType()}"); - + Debug.WriteLine($"执行了:{this.GetType()}"); using var serviceScope = _serviceProvider.CreateScope(); var db = serviceScope.ServiceProvider.GetRequiredService(); + //var query = from se in db.Set() + // join edi in db.Set() on new + // { + // se.LU, + // se.PN, + // se.Qty + // } equals new + // { + // edi.LU, + // edi.PN, + // edi.Qty + // } + // where se.IsHaveEdiData == false && edi.IsHaveSeData == false + // select new + // { + // se, + // edi + // }; + var query = db.Set().Join(db.Set(), a => new { a.PN, a.LU, a.Qty }, b => new { b.PN, b.LU, b.Qty }, (se, edi) => new { se, edi }).Where(t => t.se.IsHaveEdiData == false && t.edi.IsHaveSeData == false); + var ses = query.Select(t => t.se); + var edis = query.Select(t => t.edi); - //List hbpoSeDetails = await _hbpoSeDetailRepository.GetListAsync(t => t.IsHaveEdiData == false); - - //var hbpoSeDetails = db.Set().Where(t => t.IsHaveEdiData == false).OrderBy(t => t.BillTime); - - //var hbpoSeEdis = db.Set().Where(t => t.IsHaveSeData == false && hbpoSeDetails.Any(w => w.PN.Equals(t.PN) && w.LU.Equals(t.LU) && w.Qty.Equals(t.Qty))); - - var query = from se in db.Set() - join edi in db.Set() on new - { - se.LU, - se.PN, - se.Qty - } equals new - { - edi.LU, - edi.PN, - edi.Qty - } - where se.IsHaveEdiData == false && edi.IsHaveSeData == false - //select new - //{ - // SeID = se.Id, - // se.PN, - // se.LU, - // se.Qty, - // EdiID = edi.Id - //}; - select new - { - se, - edi - }; - - query.ForEach(item => - { - Debug.WriteLine($"{Newtonsoft.Json.JsonConvert.SerializeObject(item)}"); - }); - //var ses = query.SelectMany(t => t.se); - //var edis = query.SelectMany(t => t.edi); + ses.ForEach(t => t.IsHaveEdiData = true); + edis.ForEach(t => t.IsHaveSeData = true); - //hbpoSeEdis.ForEach(hbpoSeEdi => - //{ - // Debug.WriteLine($"{hbpoSeEdi.Id}"); - //}); + db.Set().UpdateRange(ses); + db.Set().UpdateRange(edis); + await db.SaveChangesAsync().ConfigureAwait(false); + Debug.WriteLine($"处理数量:{query.Count()}"); } }