diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/EdiSeCompareService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/EdiSeCompareService.cs new file mode 100644 index 00000000..80e82e32 --- /dev/null +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/EdiSeCompareService.cs @@ -0,0 +1,88 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.OpenApi.Extensions; +using SettleAccount.Job.Services.Report; +using TaskJob.EventArgs; +using Volo.Abp.Application.Services; +using Win.Sfs.SettleAccount.Entities.BQ.Dtos; +using Win.Sfs.SettleAccount.Entities.TaskJobs; + +namespace Win.Sfs.SettleAccount.Entities.BQ; + +/// +/// Edi与发运对比服务 +/// +[AllowAnonymous] +[Route("api/settleaccount/[controller]/[action]")] +public class EdiSeCompareService : ApplicationService +{ + /// + /// 任务服务 + /// + private readonly TaskJobService _taskJobService; + + public EdiSeCompareService(TaskJobService taskJobService) + { + _taskJobService = taskJobService; + } + + #region 对比 + /// + /// BBACEdi与发运比对 + /// + [HttpPost] + public async Task BBACEdiSeCompare(PubSaSeCompareRequestDto pubSaSeCompareRequestDto) + { + var businessTypeDisplayName = pubSaSeCompareRequestDto.BusinessType.ToString(); + DisplayAttribute attributeOfType = pubSaSeCompareRequestDto.BusinessType.GetAttributeOfType(); + if (attributeOfType != null) + { + businessTypeDisplayName = attributeOfType.Name; + } + var projectName = $"{businessTypeDisplayName}结算与发运数据对比"; + + List customConditionList = new List(); + customConditionList.Add(new CustomCondition() { Name = "Version", Value = pubSaSeCompareRequestDto.Version }); + customConditionList.Add(new CustomCondition() { Name = "BusinessType", Value = ((int)pubSaSeCompareRequestDto.BusinessType).ToString() }); + customConditionList.Add(new CustomCondition() { Name = "LU", Value = pubSaSeCompareRequestDto.LU }); + customConditionList.Add(new CustomCondition() { Name = "PN", Value = pubSaSeCompareRequestDto.PN }); + customConditionList.Add(new CustomCondition() { Name = "ProjectName", Value = projectName }); + + var _taskid = await _taskJobService.ExportEnqueueAsync(projectName, ExportExtentsion.Excel, pubSaSeCompareRequestDto.Version, string.Empty, CurrentUser, typeof(BBACEdiSeCompareExportService), customConditionList, (rs) => + { + }); + return _taskid; + } + + /// + /// HBPOEdi与发运比对 + /// + [HttpPost] + public async Task HBPOEdiSeCompare(PubSaSeCompareRequestDto pubSaSeCompareRequestDto) + { + var businessTypeDisplayName = pubSaSeCompareRequestDto.BusinessType.ToString(); + DisplayAttribute attributeOfType = pubSaSeCompareRequestDto.BusinessType.GetAttributeOfType(); + if (attributeOfType != null) + { + businessTypeDisplayName = attributeOfType.Name; + } + var projectName = $"{businessTypeDisplayName}结算与发运数据对比"; + + List customConditionList = new List(); + customConditionList.Add(new CustomCondition() { Name = "Version", Value = pubSaSeCompareRequestDto.Version }); + customConditionList.Add(new CustomCondition() { Name = "BusinessType", Value = ((int)pubSaSeCompareRequestDto.BusinessType).ToString() }); + customConditionList.Add(new CustomCondition() { Name = "LU", Value = pubSaSeCompareRequestDto.LU }); + customConditionList.Add(new CustomCondition() { Name = "PN", Value = pubSaSeCompareRequestDto.PN }); + customConditionList.Add(new CustomCondition() { Name = "ProjectName", Value = projectName }); + + var _taskid = await _taskJobService.ExportEnqueueAsync(projectName, ExportExtentsion.Excel, pubSaSeCompareRequestDto.Version, string.Empty, CurrentUser, typeof(HBPOEdiSeCompareExportService), customConditionList, (rs) => + { + }); + return _taskid; + } + #endregion + +} 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 d0ec83ee..51850420 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs @@ -68,9 +68,12 @@ public class PubSaSeCompareDiff /// /// 差异数量 /// - [ExporterHeader(DisplayName = "差异数量")] - public decimal DiffQty { set; get; } + [Display(Name = "差异数量")] + public decimal DiffQty => SAQty - SEQty; + /// + /// 匹配类型 + /// [Display(Name = "匹配类型")] public string MateType { get; set; } @@ -98,12 +101,6 @@ public class PubSaSeCompareDiff [Display(Name = "零件号")] public string SeLU { set; get; } - /// - /// 生产号 - /// - [Display(Name = "生产号")] - public string SePN { set; get; } - /// /// 零件号 /// @@ -114,7 +111,7 @@ public class PubSaSeCompareDiff /// 生产号 /// [Display(Name = "生产号")] - public string SaPN { set; get; } + public string PN { set; get; } /// /// 类型 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 4f344b02..7491316f 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 @@ -38,9 +38,8 @@ public class PubSaSeCompareDapperRepository : DapperRepository + /// BBACEdi与发运对比导出服务 + /// + public class BBACEdiSeCompareExportService : ITransientDependency, IExportJob + { + /// + /// 文件容器 + /// + private readonly IBlobContainer _fileContainer; + + /// + /// AutoMapper + /// + private readonly IObjectMapper _objectMapper; + + /// + /// 构造 + /// + public BBACEdiSeCompareExportService( + IBlobContainer fileContainer, + IObjectMapper objectMapper) + { + _fileContainer = fileContainer; + _objectMapper = objectMapper; + } + + /// + /// 导出 + /// + public string ExportFile(Guid id, List exportName, List property) + { + return ""; + } + } +} diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HBPOEdiSeCompareExportService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HBPOEdiSeCompareExportService.cs new file mode 100644 index 00000000..56bfd61d --- /dev/null +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/HBPOEdiSeCompareExportService.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using TaskJob.EventArgs; +using TaskJob.Interfaces; +using Volo.Abp.BlobStoring; +using Volo.Abp.DependencyInjection; +using Volo.Abp.ObjectMapping; +using Win.Sfs.BaseData.ImportExcelCommon; + +namespace SettleAccount.Job.Services.Report +{ + /// + /// HBPOEdi与发运对比导出服务 + /// + public class HBPOEdiSeCompareExportService : ITransientDependency, IExportJob + { + /// + /// 文件容器 + /// + private readonly IBlobContainer _fileContainer; + + /// + /// AutoMapper + /// + private readonly IObjectMapper _objectMapper; + + /// + /// 构造 + /// + public HBPOEdiSeCompareExportService( + IBlobContainer fileContainer, + IObjectMapper objectMapper) + { + _fileContainer = fileContainer; + _objectMapper = objectMapper; + } + + /// + /// 导出 + /// + public string ExportFile(Guid id, List exportName, List property) + { + return ""; + } + } +} 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 e81438cd..8bca57d3 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 @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using EmptyFiles; +using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Excel; using Microsoft.OpenApi.Extensions; using NetTopologySuite.Operation.Buffer; @@ -31,38 +32,34 @@ namespace SettleAccount.Job.Services.Report public class PubSaSeCompareExportService : ITransientDependency, IExportJob { /// - /// Pub结算明细仓储 + /// 替换件关系仓储 /// - private readonly INormalEfCoreRepository _pubSaDetailRepository; + private readonly INormalEfCoreRepository _tbRePartsRelationshipRepository; /// - /// Pub发运数据仓储 + /// Pub结算发运对比Dapper /// - private readonly INormalEfCoreRepository _pubSeDetailRepository; + private readonly PubSaSeCompareDapperRepository _pubSaSeCompareDapperRepository; /// - /// 替换件关系仓储 + /// 文件容器 /// - private readonly INormalEfCoreRepository _tbRePartsRelationshipRepository; - - private readonly PubSaSeCompareDapperRepository _pubSaSeCompareDapperRepository; - private readonly IBlobContainer _fileContainer; + /// + /// AutoMapper + /// private readonly IObjectMapper _objectMapper; /// /// 构造 /// - public PubSaSeCompareExportService(INormalEfCoreRepository pubSaDetailRepository, - INormalEfCoreRepository pubSeDetailRepository, + public PubSaSeCompareExportService( INormalEfCoreRepository tbRePartsRelationshipRepository, PubSaSeCompareDapperRepository pubSaSeCompareDapperRepository, IBlobContainer fileContainer, IObjectMapper objectMapper) { - _pubSaDetailRepository = pubSaDetailRepository; - _pubSeDetailRepository = pubSeDetailRepository; _tbRePartsRelationshipRepository = tbRePartsRelationshipRepository; _pubSaSeCompareDapperRepository = pubSaSeCompareDapperRepository; _fileContainer = fileContainer; @@ -107,39 +104,64 @@ namespace SettleAccount.Job.Services.Report }); //有结算有发运 - var haveSaHaveSe = pubSaSeCompareDiffs.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaHaveSe); + var haveSaHaveSes = pubSaSeCompareDiffs.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaHaveSe); //有结算无发运 - var haveSaNotHaveSe = pubSaSeCompareDiffs.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaNotHaveSe); + var haveSaNotHaveSes = pubSaSeCompareDiffs.FindAll(t => t.Category == EnumPubSaSeCompareCategory.HaveSaNotHaveSe); //无结算有发运 - var notHaveSaHaveSe = pubSaSeCompareDiffs.FindAll(t => t.Category == EnumPubSaSeCompareCategory.NotHaveSaHaveSe); + var notHaveSaHaveSes = pubSaSeCompareDiffs.FindAll(t => t.Category == EnumPubSaSeCompareCategory.NotHaveSaHaveSe); - 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); + haveSaHaveSes.ForEach(t => t.PrimitiveLU = t.ReplaceLU = t.SaLU); + haveSaNotHaveSes.ForEach(t => t.PrimitiveLU = t.ReplaceLU = t.SaLU); + notHaveSaHaveSes.ForEach(t => t.PrimitiveLU = t.ReplaceLU = t.SeLU); #region 二次对比 //二次对比(替换零件号) - var repLUs = notHaveSaHaveSe.Select(t => t.SeLU).Distinct().ToList(); + var repLUs = notHaveSaHaveSes.Select(t => t.SeLU).Distinct().ToList(); var tbRePartsRelationships = _tbRePartsRelationshipRepository.GetListAsync(t => repLUs.Contains(t.RepLU) && ((int)t.BusinessType).ToString() == businessType).Result; tbRePartsRelationships.ForEach(tbRePartsRelationship => { - notHaveSaHaveSe.FindAll(t => t.SeLU == tbRePartsRelationship.RepLU).ForEach(t => + notHaveSaHaveSes.FindAll(t => t.SeLU == tbRePartsRelationship.RepLU).ForEach(t => { t.ReplaceLU = tbRePartsRelationship.LU; }); }); + var haveSaNotHaveSeLUPNs = haveSaNotHaveSes.Select(t => new { t.ReplaceLU, t.PN }); + var notHaveSaHaveSeLUPNs = notHaveSaHaveSes.Select(t => new { t.ReplaceLU, t.PN }); + //二次匹配 匹配上的零件号 + var secondMatchLUPNs = haveSaNotHaveSeLUPNs.Intersect(notHaveSaHaveSeLUPNs); + if (secondMatchLUPNs.Any() == true) + { + pubSaSeCompareDiffs.RemoveAll(t => secondMatchLUPNs.Contains(new { t.ReplaceLU, t.PN })); - var haveSaNotHaveSeReplaceLU = haveSaNotHaveSe.Select(t => t.ReplaceLU); - var notHaveSaHaveSeReplaceLU = notHaveSaHaveSe.Select(t => t.ReplaceLU); - //此次匹配上的零件号 - var secondMatchReplaceLU = notHaveSaHaveSeReplaceLU.Intersect(notHaveSaHaveSeReplaceLU); - //if (secondMatchReplaceLU) - //{ - - //} - + foreach (var secondMatchLUPN in secondMatchLUPNs) + { + var haveSaNotHaveSe = haveSaNotHaveSes.FirstOrDefault(t => t.ReplaceLU == secondMatchLUPN.ReplaceLU && t.PN == secondMatchLUPN.PN); + var notHaveSaHaveSe = notHaveSaHaveSes.FirstOrDefault(t => t.ReplaceLU == secondMatchLUPN.ReplaceLU && t.PN == secondMatchLUPN.PN); + pubSaSeCompareDiffs.Add(new PubSaSeCompareDiff() + { + WmsBillNum = notHaveSaHaveSe.WmsBillNum, + ShippingDate = notHaveSaHaveSe.ShippingDate, + SeqNumber = notHaveSaHaveSe.SeqNumber, + PJISSeqNumber = notHaveSaHaveSe.PJISSeqNumber, + MaterialNumber = haveSaNotHaveSe.MaterialNumber, + MaterialDes = haveSaNotHaveSe.MaterialDes, + CustomerOfflineTime = haveSaNotHaveSe.CustomerOfflineTime, + SAQty = haveSaNotHaveSe.SAQty, + SEQty = notHaveSaHaveSe.SEQty, + MateType = haveSaNotHaveSe.MateType, + FixPrice = haveSaNotHaveSe.FixPrice, + PrimitiveLU = haveSaNotHaveSe.PrimitiveLU, + ReplaceLU = haveSaNotHaveSe.ReplaceLU, + SeLU = notHaveSaHaveSe.SeLU, + SaLU = haveSaNotHaveSe.SaLU, + PN = haveSaNotHaveSe.PN, + Category = EnumPubSaSeCompareCategory.HaveSaHaveSe, + IsRemove = false + }); + } + } #endregion @@ -149,7 +171,7 @@ namespace SettleAccount.Job.Services.Report } if (string.IsNullOrEmpty(pn) == false) { - pubSaSeCompareDiffs = pubSaSeCompareDiffs.FindAll(p => p.SaPN == pn || p.SePN == pn); + pubSaSeCompareDiffs = pubSaSeCompareDiffs.FindAll(p => p.PN == pn); } //结算核对明细 diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs index 14bdd971..f7c77c44 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobModule.cs @@ -40,6 +40,9 @@ namespace Win.Sfs.SettleAccount GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute{ Attempts = 0}); context.Services.AddTransient(); + context.Services.AddTransient(); + context.Services.AddTransient(); + context.Services.AddTransient(); context.Services.AddTransient(); @@ -86,6 +89,15 @@ namespace Win.Sfs.SettleAccount { return implementationFactory.GetService(); } + if (key.Equals(typeof(BBACEdiSeCompareExportService).FullName)) + { + return implementationFactory.GetService(); + } + if (key.Equals(typeof(HBPOEdiSeCompareExportService).FullName)) + { + return implementationFactory.GetService(); + } + if (key.Equals(typeof(InvoiceSettledDiffExportService).FullName)) {