diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PURCHASE_PRICE_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PURCHASE_PRICE_SERVICE.cs index e63f19c1..54de45dd 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PURCHASE_PRICE_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PURCHASE_PRICE_SERVICE.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using SettleAccount.Domain.BQ; @@ -48,7 +48,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ /// 导入 /// [HttpPost] - [Route("Import")] public async Task ImportAsync([FromForm] IFormFileCollection files) { ExportImporter _exportImporter = new ExportImporter(); @@ -94,7 +93,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ /// 导出 /// [HttpPost] - [Route("Export")] public async Task ExportAsync(RequestDto input) { string fileName = $"采购价格单_{Guid.NewGuid()}.xlsx"; @@ -115,7 +113,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ /// 获取列表 /// [HttpPost] - [Route("list")] public async Task> GetListAsync(RequestDto input) { var entities = await _repository.GetListByFilterAsync(input.Filters, input.Sorting, input.MaxResultCount, input.SkipCount, true); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs index 8dcb049b..d0ec83ee 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs @@ -80,11 +80,17 @@ public class PubSaSeCompareDiff [Display(Name = "定价")] public decimal FixPrice { get; set; } + /// + /// 原始零件号 + /// + [Display(Name = "原始零件号")] + public string PrimitiveLU { get; set; } + /// /// 替换零件号 /// [Display(Name = "替换零件号")] - public string RepLU { get; set; } + public string ReplaceLU { get; set; } /// /// 零件号 @@ -284,7 +290,7 @@ public class PubSaSeCompareSumExport /// 差异数量 /// [ExporterHeader(DisplayName = "差异数量")] - public decimal DiffQty { set; get; } + public decimal DiffQty => SAQty - SEQty; } [ExcelExporter(MaxRowNumberOnASheet = 900000)] diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/PubSaSeCompareDapperRepository.cs b/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/PubSaSeCompareDapperRepository.cs index d953ee3e..4f344b02 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/PubSaSeCompareDapperRepository.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/PubSaSeCompareDapperRepository.cs @@ -47,8 +47,8 @@ public class PubSaSeCompareDapperRepository : DapperRepository(strSqlText, null, null, true, 1200, null).ToList(); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/PubSaSeCompareExportService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/PubSaSeCompareExportService.cs index a80e96f6..e81438cd 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/PubSaSeCompareExportService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/PubSaSeCompareExportService.cs @@ -2,9 +2,12 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using EmptyFiles; using Magicodes.ExporterAndImporter.Excel; using Microsoft.OpenApi.Extensions; using NetTopologySuite.Operation.Buffer; +using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using SettleAccount.Domain.BQ; using Shouldly; using TaskJob.EventArgs; @@ -104,15 +107,15 @@ namespace SettleAccount.Job.Services.Report }); //有结算有发运 - var haveSaHaveSe = new List(); + var haveSaHaveSe = pubSaSeCompareDiffs.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaHaveSe); //有结算无发运 - var haveSaNotHaveSe = new List(); + var haveSaNotHaveSe = pubSaSeCompareDiffs.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaNotHaveSe); //无结算有发运 - var notHaveSaHaveSe = new List(); + var notHaveSaHaveSe = pubSaSeCompareDiffs.FindAll(t => t.Category == EnumPubSaSeCompareCategory.NotHaveSaHaveSe); - haveSaHaveSe = pubSaSeCompareDiffs.FindAll(t => !string.IsNullOrEmpty(t.SaLU) && !string.IsNullOrEmpty(t.SeLU)); - haveSaNotHaveSe = pubSaSeCompareDiffs.FindAll(t => !string.IsNullOrEmpty(t.SaLU) && string.IsNullOrEmpty(t.SeLU)); - notHaveSaHaveSe = pubSaSeCompareDiffs.FindAll(t => string.IsNullOrEmpty(t.SaLU) && !string.IsNullOrEmpty(t.SeLU)); + haveSaHaveSe.ForEach(t => t.PrimitiveLU = t.ReplaceLU = t.SaLU); + haveSaNotHaveSe.ForEach(t => t.PrimitiveLU = t.ReplaceLU = t.SaLU); + notHaveSaHaveSe.ForEach(t => t.PrimitiveLU = t.ReplaceLU = t.SaLU); #region 二次对比 //二次对比(替换零件号) @@ -123,10 +126,21 @@ namespace SettleAccount.Job.Services.Report { notHaveSaHaveSe.FindAll(t => t.SeLU == tbRePartsRelationship.RepLU).ForEach(t => { - t.RepLU = t.SeLU; - t.SeLU = tbRePartsRelationship.LU; + t.ReplaceLU = tbRePartsRelationship.LU; }); }); + + + var haveSaNotHaveSeReplaceLU = haveSaNotHaveSe.Select(t => t.ReplaceLU); + var notHaveSaHaveSeReplaceLU = notHaveSaHaveSe.Select(t => t.ReplaceLU); + //此次匹配上的零件号 + var secondMatchReplaceLU = notHaveSaHaveSeReplaceLU.Intersect(notHaveSaHaveSeReplaceLU); + //if (secondMatchReplaceLU) + //{ + + //} + + #endregion if (string.IsNullOrEmpty(lu) == false) @@ -138,27 +152,74 @@ namespace SettleAccount.Job.Services.Report pubSaSeCompareDiffs = pubSaSeCompareDiffs.FindAll(p => p.SaPN == pn || p.SePN == pn); } - var pubSaSeCompareDiffExports = _objectMapper.Map, List>(pubSaSeCompareDiffs); + //结算核对明细 + var pubSaSeCompareDetailExports = _objectMapper.Map, List>(pubSaSeCompareDiffs); + //结算核对汇总 + var pubSaSeCompareSumExports = pubSaSeCompareDetailExports.GroupBy(p => p.ReplaceLU).Select(p => new PubSaSeCompareSumExport() + { + LU = p.Key, + MaterialDes = p.FirstOrDefault().MaterialDes, + SAQty = p.Sum(t => t.SAQty), + SEQty = p.Sum(t => t.SEQty) + }).ToList(); //有结算有发运 - var haveSaHaveSeExports = pubSaSeCompareDiffExports.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaHaveSe); - ////有结算有发运汇总 - //var haveSaHaveSeSumExports = haveSaHaveSeExports.GroupBy(p => p.ReplaceLU).Select(p => new PubSaSeCompareSumExport() - //{ - // LU= p.Key, - // MaterialDes = p.FirstOrDefault().MaterialDes, - // SAQty = - //}); + var haveSaHaveSeExports = pubSaSeCompareDetailExports.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaHaveSe); + //有结算有发运汇总 + var haveSaHaveSeSumExports = haveSaHaveSeExports.GroupBy(p => p.ReplaceLU).Select(p => new PubSaSeCompareSumExport() + { + LU = p.Key, + MaterialDes = p.FirstOrDefault().MaterialDes, + SAQty = p.Sum(t => t.SAQty), + SEQty = p.Sum(t => t.SEQty) + }).ToList(); //有结算无发运 - var haveSaNotHaveSeExports = pubSaSeCompareDiffExports.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaNotHaveSe); + var haveSaNotHaveSeExports = pubSaSeCompareDetailExports.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaNotHaveSe); + //有结算无发运 + var haveSaNotHaveSeSumExports = haveSaHaveSeExports.GroupBy(p => p.ReplaceLU).Select(p => new PubSaSeCompareSumExport() + { + LU = p.Key, + MaterialDes = p.FirstOrDefault().MaterialDes, + SAQty = p.Sum(t => t.SAQty), + SEQty = p.Sum(t => t.SEQty) + }).ToList(); //无结算有发运 - var notHaveSaHaveSeExports = pubSaSeCompareDiffExports.FindAll(t => t.Category == EnumPubSaSeCompareCategory.NotHaveSaHaveSe); - + var notHaveSaHaveSeExports = pubSaSeCompareDetailExports.FindAll(t => t.Category == EnumPubSaSeCompareCategory.NotHaveSaHaveSe); + //无结算有发运 + var notHaveSaHaveSeSumExports = haveSaHaveSeExports.GroupBy(p => p.ReplaceLU).Select(p => new PubSaSeCompareSumExport() + { + LU = p.Key, + MaterialDes = p.FirstOrDefault().MaterialDes, + SAQty = p.Sum(t => t.SAQty), + SEQty = p.Sum(t => t.SEQty) + }).ToList(); #region MyRegion #endregion + ExcelExporter excelExporter = new ExcelExporter(); + var result = excelExporter + .Append(pubSaSeCompareDetailExports, $"{businessTypeDisplayName}结算核对明细输出") + .SeparateBySheet() + .Append(pubSaSeCompareSumExports, $"{businessTypeDisplayName}结算核对汇总输出") + .SeparateBySheet() + + .Append(haveSaHaveSeExports, $"{businessTypeDisplayName}有结算有发货明细输出") + .SeparateBySheet() + .Append(haveSaHaveSeSumExports, $"{businessTypeDisplayName}有结算有发货汇总输出") + .SeparateBySheet() + + .Append(haveSaNotHaveSeExports, $"{businessTypeDisplayName}有结算无发货明细输出") + .SeparateBySheet() + .Append(haveSaNotHaveSeSumExports, $"{businessTypeDisplayName}有结算无发货汇总输出") + .SeparateBySheet() + .ExportAppendDataAsByteArray(); + result.ShouldNotBeNull(); + _fileContainer.SaveAsync(filename, result.Result, true); + + return id.ToString(); + //var add = from item1 in pubSaSeCompareDiffs @@ -191,20 +252,7 @@ namespace SettleAccount.Job.Services.Report //var query = BlobProviderSelectorExtensions - ExcelExporter excelExporter = new ExcelExporter(); - var result = excelExporter - .Append(pubSaSeCompareDiffExports, $"{businessTypeDisplayName}汇总表") - .SeparateBySheet() - .Append(haveSaHaveSeExports, $"{businessTypeDisplayName}有结算有发运") - .SeparateBySheet() - .Append(haveSaNotHaveSeExports, $"{businessTypeDisplayName}有结算无发运") - .SeparateBySheet() - .Append(notHaveSaHaveSeExports, $"{businessTypeDisplayName}无结算有发运") - .ExportAppendDataAsByteArray(); - result.ShouldNotBeNull(); - _fileContainer.SaveAsync(filename, result.Result, true); - return id.ToString(); //结算 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobAutoMapperProfile.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobAutoMapperProfile.cs index 15bb71bf..7c754d78 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobAutoMapperProfile.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobAutoMapperProfile.cs @@ -15,7 +15,8 @@ namespace SettleAccount.Job /// private void CreateMapPubSaSeCompare() { - CreateMap().ReverseMap(); + CreateMap() + .ForMember(x => x.ReplaceLU, y => y.MapFrom(y => y.ReplaceLU)); } } }