diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/CompareService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/CompareService.cs index 9e8a9eac..b0d38a1f 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/CompareService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/CompareService.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.Diagnostics; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -75,13 +76,15 @@ public class CompareService : ApplicationService [HttpPost] public async Task SaSeCompare(SaSeCompareRequestDto saSeCompareRequestDto) { + var isWuLiuRole = CurrentUser.IsInRole("物流") == true ? "物流" : ""; + var businessTypeDisplayName = saSeCompareRequestDto.BusinessType.ToString(); var attributeOfType = saSeCompareRequestDto.BusinessType.GetAttributeOfType(); if (attributeOfType != null) { businessTypeDisplayName = attributeOfType.Name; } - var projectName = $"{businessTypeDisplayName}结算与发运数据对比"; + var projectName = $"{isWuLiuRole}{businessTypeDisplayName}结算与发运数据对比"; var customConditionList = new List(); customConditionList.Add(new CustomCondition() { Name = "Version", Value = saSeCompareRequestDto.Version }); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/HandSeSyncAppService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/HandSeSyncAppService.cs index e295ee4b..f19bf661 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/HandSeSyncAppService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/Syncs/HandSeSyncAppService.cs @@ -30,21 +30,22 @@ public class HandSeSyncAppService : ApplicationService /// [HttpPost] [UnitOfWork(IsDisabled = true)] - public virtual async Task SyncAsync([FromBody] EnumBusinessType businessType) + public virtual async Task SyncAsync([FromBody] EnumBusinessType businessType) { using var scope = this._applicationServices.CreateScope(); IInvocable seSyncAppService = businessType switch { - //EnumBusinessType.JisBBAC => scope.ServiceProvider.GetRequiredService(), - //EnumBusinessType.JisHBPO => scope.ServiceProvider.GetRequiredService(), - //EnumBusinessType.MaiDanJianBBAC => scope.ServiceProvider.GetRequiredService(), - //EnumBusinessType.MaiDanJianHBPO => scope.ServiceProvider.GetRequiredService(), - //EnumBusinessType.ZhiGongJianBBAC => scope.ServiceProvider.GetRequiredService(), - //EnumBusinessType.ZhiGongJianHBPO => scope.ServiceProvider.GetRequiredService(), - //EnumBusinessType.BeiJian => scope.ServiceProvider.GetRequiredService(), - //EnumBusinessType.YinDuJian => scope.ServiceProvider.GetRequiredService(), + EnumBusinessType.JisBBAC => scope.ServiceProvider.GetRequiredService(), + EnumBusinessType.JisHBPO => scope.ServiceProvider.GetRequiredService(), + EnumBusinessType.MaiDanJianBBAC => scope.ServiceProvider.GetRequiredService(), + EnumBusinessType.MaiDanJianHBPO => scope.ServiceProvider.GetRequiredService(), + EnumBusinessType.ZhiGongJianBBAC => scope.ServiceProvider.GetRequiredService(), + EnumBusinessType.ZhiGongJianHBPO => scope.ServiceProvider.GetRequiredService(), + EnumBusinessType.BeiJian => scope.ServiceProvider.GetRequiredService(), + EnumBusinessType.YinDuJian => scope.ServiceProvider.GetRequiredService(), _ => throw new UserFriendlyException($"{nameof(businessType)}参数值无效", "403") }; await seSyncAppService.Invoke().ConfigureAwait(false); + return new JsonResult(new { code = 200, message = "同步成功" }); } } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/TaskJobs/JobAppService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/TaskJobs/JobAppService.cs index 5624073a..edf6a75c 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/TaskJobs/JobAppService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/TaskJobs/JobAppService.cs @@ -1,11 +1,13 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Uow; +using Win.Sfs.SettleAccount.Entities.BQ; using Win.Sfs.SettleAccount.MaterialRelationships; namespace Win.Sfs.SettleAccount.Entities.TaskJobs; @@ -41,7 +43,11 @@ public class JobAppService: ApplicationService [UnitOfWork(false)] public virtual async Task> GetListAsync(JobRequestDto input) { - var lists = await _service.GetListAsync(input); + if (CurrentUser.IsInRole("物流") && input.Name.Contains("对比")) + { + input.Name = "物流" + input.Name; + } + var lists = await _service.GetListAsync(input).ConfigureAwait(false); return new PagedResultDto(lists.Count, lists); } 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 272ea75f..cebbed9e 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs @@ -303,7 +303,7 @@ public class PubSaSeCompareDetailExportZhiGongJianBBAC : PubSaSeCompareDetailExp /// [Display(Name = "定价")] [ExporterHeader(DisplayName = "定价")] - public decimal? FixPrice { get; set; } + public virtual decimal? FixPrice { get; set; } /// /// WMS目标库位 /// @@ -318,6 +318,19 @@ public class PubSaSeCompareDetailExportZhiGongJianBBAC : PubSaSeCompareDetailExp public string ToErpLocCode { get; set; } } +/// +/// 直供件BBAC结算与发运对比明细物流 +/// +public class PubSaSeCompareDetailExportZhiGongJianBBACWuLiu : PubSaSeCompareDetailExportZhiGongJianBBAC +{ + /// + /// 定价 + /// + [Display(Name = "定价")] + [ExporterHeader(IsIgnore = true)] + public override decimal? FixPrice { get; set; } +} + /// /// 直供件HBPO结算与发运对比明细 /// @@ -411,7 +424,7 @@ public class PubSaSeCompareDetailExportZhiGongJianHBPO : PubSaSeCompareDetailExp /// [Display(Name = "定价")] [ExporterHeader(DisplayName = "定价")] - public decimal? FixPrice { get; set; } + public virtual decimal? FixPrice { get; set; } /// /// WMS目标库位 /// @@ -426,6 +439,19 @@ public class PubSaSeCompareDetailExportZhiGongJianHBPO : PubSaSeCompareDetailExp public string ToErpLocCode { get; set; } } +/// +/// 直供件HBPO结算与发运对比明细物流 +/// +public class PubSaSeCompareDetailExportZhiGongJianHBPOWuLiu : PubSaSeCompareDetailExportZhiGongJianHBPO +{ + /// + /// 定价 + /// + [Display(Name = "定价")] + [ExporterHeader(IsIgnore = true)] + public override decimal? FixPrice { get; set; } +} + /// /// 买单件BBAC结算与发运对比明细 /// @@ -521,7 +547,7 @@ public class PubSaSeCompareDetailExportMaiDanJianBBAC : PubSaSeCompareDetailExpo /// [Display(Name = "定价")] [ExporterHeader(DisplayName = "定价")] - public decimal? FixPrice { get; set; } + public virtual decimal? FixPrice { get; set; } /// /// WMS目标库位 /// @@ -536,6 +562,19 @@ public class PubSaSeCompareDetailExportMaiDanJianBBAC : PubSaSeCompareDetailExpo public string ToErpLocCode { get; set; } } +/// +/// 买单件BBAC结算与发运对比明细物流 +/// +public class PubSaSeCompareDetailExportMaiDanJianBBACWuLiu : PubSaSeCompareDetailExportMaiDanJianBBAC +{ + /// + /// 定价 + /// + [Display(Name = "定价")] + [ExporterHeader(IsIgnore = true)] + public override decimal? FixPrice { get; set; } +} + /// /// 买单件HBPO结算与发运对比明细 /// @@ -631,7 +670,7 @@ public class PubSaSeCompareDetailExportMaiDanJianHBPO : PubSaSeCompareDetailExpo /// [Display(Name = "定价")] [ExporterHeader(DisplayName = "定价")] - public decimal? FixPrice { get; set; } + public virtual decimal? FixPrice { get; set; } /// /// WMS目标库位 /// @@ -646,6 +685,19 @@ public class PubSaSeCompareDetailExportMaiDanJianHBPO : PubSaSeCompareDetailExpo public string ToErpLocCode { get; set; } } +/// +/// 买单件HBPO结算与发运对比明细物流 +/// +public class PubSaSeCompareDetailExportMaiDanJianHBPOWuLiu : PubSaSeCompareDetailExportMaiDanJianHBPO +{ + /// + /// 定价 + /// + [Display(Name = "定价")] + [ExporterHeader(IsIgnore = true)] + public override decimal? FixPrice { get; set; } +} + /// /// 备件结算与发运对比明细 /// @@ -740,7 +792,7 @@ public class PubSaSeCompareDetailExportBeiJian : PubSaSeCompareDetailExport, IPu /// [Display(Name = "定价")] [ExporterHeader(DisplayName = "定价")] - public decimal? FixPrice { get; set; } + public virtual decimal? FixPrice { get; set; } /// /// WMS目标库位 /// @@ -755,6 +807,19 @@ public class PubSaSeCompareDetailExportBeiJian : PubSaSeCompareDetailExport, IPu public string ToErpLocCode { get; set; } } +/// +/// 备件结算与发运对比明细物流 +/// +public class PubSaSeCompareDetailExportBeiJianWuLiu : PubSaSeCompareDetailExportBeiJian +{ + /// + /// 定价 + /// + [Display(Name = "定价")] + [ExporterHeader(IsIgnore = true)] + public override decimal? FixPrice { get; set; } +} + /// /// 印度件结算与发运对比明细 /// @@ -848,7 +913,7 @@ public class PubSaSeCompareDetailExportYinDuJian : PubSaSeCompareDetailExport, I /// [Display(Name = "定价")] [ExporterHeader(DisplayName = "定价")] - public decimal? FixPrice { get; set; } + public virtual decimal? FixPrice { get; set; } /// /// WMS目标库位 /// @@ -862,3 +927,16 @@ public class PubSaSeCompareDetailExportYinDuJian : PubSaSeCompareDetailExport, I [ExporterHeader(DisplayName = "ERP目标库位")] public string ToErpLocCode { get; set; } } + +/// +/// 印度件结算与发运对比明细物流 +/// +public class PubSaSeCompareDetailExportYinDuJianWuLiu : PubSaSeCompareDetailExportYinDuJian +{ + /// + /// 定价 + /// + [Display(Name = "定价")] + [ExporterHeader(IsIgnore = true)] + public override decimal? FixPrice { get; set; } +} diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/SaSeEdiCompareDiff.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/SaSeEdiCompareDiff.cs index ff6939c8..bd15faa1 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/SaSeEdiCompareDiff.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/SaSeEdiCompareDiff.cs @@ -321,7 +321,7 @@ public class SaSeEdiCompareDetailExportJisBBAC : SaSeEdiCompareDetailExport, ISa /// [Display(Name = "定价")] [ExporterHeader(DisplayName = "定价")] - public decimal? FixPrice { get; set; } + public virtual decimal? FixPrice { get; set; } /// /// ERP销售库位 /// @@ -336,6 +336,19 @@ public class SaSeEdiCompareDetailExportJisBBAC : SaSeEdiCompareDetailExport, ISa public string ToLocCode { get; set; } } +/// +/// JisBBAC结算、发运、Eid对比明细物流 +/// +public class SaSeEdiCompareDetailExportJisBBACWuLiu : SaSeEdiCompareDetailExportJisBBAC +{ + /// + /// 定价 + /// + [Display(Name = "定价")] + [ExporterHeader(IsIgnore = true)] + public override decimal? FixPrice { get; set; } +} + /// /// JisHBPO结算、发运、Eid对比明细 /// @@ -468,7 +481,7 @@ public class SaSeEdiCompareDetailExportJisHBPO : SaSeEdiCompareDetailExport, ISa /// [Display(Name = "定价")] [ExporterHeader(DisplayName = "定价")] - public decimal? FixPrice { get; set; } + public virtual decimal? FixPrice { get; set; } /// /// ERP销售库位 /// @@ -483,6 +496,19 @@ public class SaSeEdiCompareDetailExportJisHBPO : SaSeEdiCompareDetailExport, ISa public string ToLocCode { get; set; } } +/// +/// JisHBPO结算、发运、Eid对比明细物流 +/// +public class SaSeEdiCompareDetailExportJisHBPOWuLiu : SaSeEdiCompareDetailExportJisHBPO +{ + /// + /// 定价 + /// + [Display(Name = "定价")] + [ExporterHeader(IsIgnore = true)] + public override decimal? FixPrice { get; set; } +} + /// /// PUB结算与发运对比汇总 /// diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/JisBBACSaSeEdiCompareExportService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/JisBBACSaSeEdiCompareExportService.cs index eb246978..b255c3c0 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/JisBBACSaSeEdiCompareExportService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/JisBBACSaSeEdiCompareExportService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Linq.Dynamic.Core; +using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.SignalR; using Microsoft.OpenApi.Extensions; using SettleAccount.Domain.BQ; @@ -70,7 +71,7 @@ namespace SettleAccount.Job.Services.Report var seStartDateTime = DateTime.Parse(strSeStartDateTime); var seEndDateTime = DateTime.Parse(strSeEndDateTime); var filename = exportName.FirstOrDefault(); - + var isWuLiu = filename.StartsWith("物流"); var ediSeSaCompareDiffs = GetEdiSeSaCompareData(version, seStartDateTime, seEndDateTime); HandleSaSeEdiCompareDiffList(ediSeSaCompareDiffs); @@ -89,8 +90,17 @@ namespace SettleAccount.Job.Services.Report } ediSeSaCompareDiffs = ediSeSaCompareDiffs.OrderBy(t => t.Category).ToList(); - var items = _objectMapper.Map, List>(ediSeSaCompareDiffs); - var excelExporter = BindExcelExporter(items, businessTypeDisplayName); + var excelExporter = new ExcelExporter(); + if (isWuLiu) + { + var items = _objectMapper.Map, List>(ediSeSaCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } + else + { + var items = _objectMapper.Map, List>(ediSeSaCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } var result = excelExporter.ExportAppendDataAsByteArray(); result.ShouldNotBeNull(); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/JisHBPOSaSeEdiCompareExportService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/JisHBPOSaSeEdiCompareExportService.cs index 8cc69f84..8a7fe7ab 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/JisHBPOSaSeEdiCompareExportService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/JisHBPOSaSeEdiCompareExportService.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.SignalR; using Microsoft.OpenApi.Extensions; using SettleAccount.Domain.BQ; @@ -14,6 +15,7 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.ObjectMapping; using Win.Sfs.BaseData.ImportExcelCommon; using Win.Sfs.SettleAccount; +using Win.Sfs.SettleAccount.Entities.BQ; using Win.Sfs.SettleAccount.Reports; namespace SettleAccount.Job.Services.Report @@ -69,27 +71,51 @@ namespace SettleAccount.Job.Services.Report var seStartDateTime = DateTime.Parse(strSeStartDateTime); var seEndDateTime = DateTime.Parse(strSeEndDateTime); var filename = exportName.FirstOrDefault(); + var isWuLiu = filename.StartsWith("物流"); + var saSeEdiCompareDiffs = GetSaSeEdiCompareData(version, seStartDateTime, seEndDateTime); - var ediSeSaCompareDiffs = GetEdiSeSaCompareData(version, seStartDateTime, seEndDateTime); + HandleSaSeEdiCompareDiffList(saSeEdiCompareDiffs); - HandleSaSeEdiCompareDiffList(ediSeSaCompareDiffs); + #region 二次对比 + //二次匹配上的记录 + var secondMatchHaveSaHaveSes = HandleSecondCompare(saSeEdiCompareDiffs, businessType); + if (secondMatchHaveSaHaveSes.Any()) + { + //二次匹配 匹配上的厂内零件号、PN + var secondMatchFPartCodePNs = secondMatchHaveSaHaveSes.Select(t => new { t.ReplaceFactoryPartCode, t.PN }); + saSeEdiCompareDiffs.RemoveAll(t => secondMatchFPartCodePNs.Contains(new { t.ReplaceFactoryPartCode, t.PN })); + saSeEdiCompareDiffs.AddRange(secondMatchHaveSaHaveSes); + //二次对比比对上的数据入库 + var seCDetailEntitys = _objectMapper.Map, List>(secondMatchHaveSaHaveSes); + _settleAccountDbContext.Set().AddRange(seCDetailEntitys); + } + #endregion #region 结算数据处理 - HandleSaDetails(ediSeSaCompareDiffs, businessType, version); + HandleSaDetails(saSeEdiCompareDiffs, businessType, version); #endregion if (string.IsNullOrEmpty(lu) == false) { - ediSeSaCompareDiffs = ediSeSaCompareDiffs.FindAll(p => p.CustomerPartCode == lu); + saSeEdiCompareDiffs = saSeEdiCompareDiffs.FindAll(p => p.CustomerPartCode == lu); } if (string.IsNullOrEmpty(pn) == false) { - ediSeSaCompareDiffs = ediSeSaCompareDiffs.FindAll(p => p.PN == pn); + saSeEdiCompareDiffs = saSeEdiCompareDiffs.FindAll(p => p.PN == pn); } - ediSeSaCompareDiffs = ediSeSaCompareDiffs.OrderBy(t => t.Category).ToList(); + saSeEdiCompareDiffs = saSeEdiCompareDiffs.OrderBy(t => t.Category).ToList(); - var items = _objectMapper.Map, List>(ediSeSaCompareDiffs); - var excelExporter = BindExcelExporter(items, businessTypeDisplayName); + var excelExporter = new ExcelExporter(); + if (isWuLiu) + { + var items = _objectMapper.Map, List>(saSeEdiCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } + else + { + var items = _objectMapper.Map, List>(saSeEdiCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } var result = excelExporter.ExportAppendDataAsByteArray(); result.ShouldNotBeNull(); @@ -103,7 +129,7 @@ namespace SettleAccount.Job.Services.Report /// /// 获取比对数据 /// - public List GetEdiSeSaCompareData(int version, DateTime seStartDateTime, DateTime seEndDateTime) + public List GetSaSeEdiCompareData(int version, DateTime seStartDateTime, DateTime seEndDateTime) { //结算 var saGroup = from sa in _settleAccountDbContext.Set() diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/MaiDanBBACSaSeCompareExportService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/MaiDanBBACSaSeCompareExportService.cs index eda291b1..34e71e1f 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/MaiDanBBACSaSeCompareExportService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/MaiDanBBACSaSeCompareExportService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Linq.Dynamic.Core; +using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.SignalR; using Microsoft.OpenApi.Extensions; using SettleAccount.Domain.BQ; @@ -71,7 +72,7 @@ namespace SettleAccount.Job.Services.Report var seStartDateTime = DateTime.Parse(strSeStartDateTime); var seEndDateTime = DateTime.Parse(strSeEndDateTime); var filename = exportName.FirstOrDefault(); - + var isWuLiu = filename.StartsWith("物流"); var pubSaSeCompareDiffs = GetSaSeCompareData(version, seStartDateTime, seEndDateTime); HandlePubSaSeCompareDiffList(pubSaSeCompareDiffs); @@ -104,9 +105,17 @@ namespace SettleAccount.Job.Services.Report pubSaSeCompareDiffs = pubSaSeCompareDiffs.FindAll(p => p.PN == pn); } pubSaSeCompareDiffs = pubSaSeCompareDiffs.OrderBy(t => t.Category).ToList(); - - var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); - var excelExporter = BindExcelExporter(items, businessTypeDisplayName); + var excelExporter = new ExcelExporter(); + if (isWuLiu) + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } + else + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } var result = excelExporter.ExportAppendDataAsByteArray(); result.ShouldNotBeNull(); diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/MaiDanHBPOSaSeCompareExportService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/MaiDanHBPOSaSeCompareExportService.cs index 3d4c3de2..e0fb6b2a 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/MaiDanHBPOSaSeCompareExportService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/MaiDanHBPOSaSeCompareExportService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Linq.Dynamic.Core; +using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.SignalR; using Microsoft.OpenApi.Extensions; using SettleAccount.Domain.BQ; @@ -71,7 +72,7 @@ namespace SettleAccount.Job.Services.Report var seStartDateTime = DateTime.Parse(strSeStartDateTime); var seEndDateTime = DateTime.Parse(strSeEndDateTime); var filename = exportName.FirstOrDefault(); - + var isWuLiu = filename.StartsWith("物流"); var pubSaSeCompareDiffs = GetSaSeCompareData(version, seStartDateTime, seEndDateTime); HandlePubSaSeCompareDiffList(pubSaSeCompareDiffs); @@ -104,9 +105,17 @@ namespace SettleAccount.Job.Services.Report pubSaSeCompareDiffs = pubSaSeCompareDiffs.FindAll(p => p.PN == pn); } pubSaSeCompareDiffs = pubSaSeCompareDiffs.OrderBy(t => t.Category).ToList(); - - var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); - var excelExporter = BindExcelExporter(items, businessTypeDisplayName); + var excelExporter = new ExcelExporter(); + if (isWuLiu) + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } + else + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } var result = excelExporter.ExportAppendDataAsByteArray(); result.ShouldNotBeNull(); 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 590edfa4..4809e404 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 @@ -101,6 +101,7 @@ namespace SettleAccount.Job.Services.Report businessTypeDisplayName = attributeOfType.Name; } var filename = exportName.FirstOrDefault(); + var isWuLiu = filename.StartsWith("物流"); //var pubSaSeCompareDiffs = _pubSaSeCompareDapperRepository.GetDetailDiffReportList(strBusinessType, version, seStartDateTime, seEndDateTime); var pubSaSeCompareDiffs = GetSaSeCompareData(businessType, version, DateTime.Parse(seStartDateTime), DateTime.Parse(seEndDateTime)); @@ -141,26 +142,58 @@ namespace SettleAccount.Job.Services.Report { case EnumBusinessType.ZhiGongJianBBAC: { - var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); - excelExporter = BindExcelExporter(items, businessTypeDisplayName); + if (isWuLiu) + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } + else + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } } break; case EnumBusinessType.ZhiGongJianHBPO: { - var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); - excelExporter = BindExcelExporter(items, businessTypeDisplayName); + if (isWuLiu) + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } + else + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } } break; case EnumBusinessType.BeiJian: { - var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); - excelExporter = BindExcelExporter(items, businessTypeDisplayName); + if (isWuLiu) + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } + else + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } } break; case EnumBusinessType.YinDuJian: { - var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); - excelExporter = BindExcelExporter(items, businessTypeDisplayName); + if (isWuLiu) + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } + else + { + var items = _objectMapper.Map, List>(pubSaSeCompareDiffs); + excelExporter = BindExcelExporter(items, businessTypeDisplayName); + } } break; default: diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SaSeEdiCompareExportBaseService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SaSeEdiCompareExportBaseService.cs index c4d44f4f..be05e1a7 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SaSeEdiCompareExportBaseService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/SaSeEdiCompareExportBaseService.cs @@ -5,9 +5,11 @@ using Magicodes.ExporterAndImporter.Core.Extension; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.SignalR; using SettleAccount.Bases; +using SettleAccount.Domain.BQ; using SettleAccount.Job.SignalR; using Win.Sfs.SettleAccount; using Win.Sfs.SettleAccount.Consts; +using Win.Sfs.SettleAccount.Entities.SettleAccountDomain; using Win.Sfs.SettleAccount.Enums; using Win.Sfs.SettleAccount.Reports; @@ -71,6 +73,66 @@ namespace SettleAccount.Job.Services.Report }); } + /// + /// 二次比对 + /// + public virtual List HandleSecondCompare(List saSeEdiCompareDiffs, EnumBusinessType businessType) + { + //二次匹配上的记录 + var secondMatchHaveSaHaveSes = new List(); + //有结算无发运 和 无结算有发运 + var haveSaNotHaveSeUnionNotHaveSaHaveSes = saSeEdiCompareDiffs.FindAll(t => t.Category == EnumSaSeEdiCompareCategory.HaveSaNotHaveSeHaveEdi || t.Category == EnumSaSeEdiCompareCategory.HaveSaNotHaveSeNotHaveEdi || t.Category == EnumSaSeEdiCompareCategory.NotHaveSaHaveSeHaveEdi || t.Category == EnumSaSeEdiCompareCategory.NotHaveSaHaveSeNotHaveEdi); + //有结算无发运 + var haveSaNotHaveSes = saSeEdiCompareDiffs.FindAll(t => t.Category == EnumSaSeEdiCompareCategory.HaveSaNotHaveSeHaveEdi || t.Category == EnumSaSeEdiCompareCategory.HaveSaNotHaveSeNotHaveEdi); + //无结算有发运 + var notHaveSaHaveSes = saSeEdiCompareDiffs.FindAll(t => t.Category == EnumSaSeEdiCompareCategory.NotHaveSaHaveSeHaveEdi || t.Category == EnumSaSeEdiCompareCategory.NotHaveSaHaveSeNotHaveEdi); + + //二次对比(替换发运数据的厂内零件号) + var repFactoryPartCodes = haveSaNotHaveSeUnionNotHaveSaHaveSes.Select(t => t.FactoryPartCode).Distinct().ToList(); + var tbRePartsRelationships = _settleAccountDbContext.Set().Where(t => repFactoryPartCodes.Contains(t.LU)).ToList(); + + tbRePartsRelationships.ForEach(tbRePartsRelationship => + { + haveSaNotHaveSeUnionNotHaveSaHaveSes.FindAll(t => t.FactoryPartCode == tbRePartsRelationship.LU).ForEach(t => + { + t.ReplaceFactoryPartCode = tbRePartsRelationship.RepLU; + }); + }); + + //获取二次比对上的数据 + secondMatchHaveSaHaveSes = (from notHaveSaHaveSe in notHaveSaHaveSes + join haveSaNotHaveSe in haveSaNotHaveSes + on new { notHaveSaHaveSe.PN, notHaveSaHaveSe.ReplaceFactoryPartCode } equals new { haveSaNotHaveSe.PN, haveSaNotHaveSe.ReplaceFactoryPartCode } + select new SaSeEdiCompareDiff() + { + Category = EnumSaSeEdiCompareCategory.HaveSaHaveSeHaveEdi, + WmsBillNum = notHaveSaHaveSe.WmsBillNum, + ShippingDate = notHaveSaHaveSe.ShippingDate, + SeqNumber = notHaveSaHaveSe.SeqNumber, + PJISSeqNumber = notHaveSaHaveSe.PJISSeqNumber, + CustomerOfflineTime = haveSaNotHaveSe.CustomerOfflineTime, + AssemblyCode = notHaveSaHaveSe.AssemblyCode, + InjectionCode = notHaveSaHaveSe.InjectionCode, + SAQty = haveSaNotHaveSe.SAQty, + SEQty = notHaveSaHaveSe.SEQty, + EdiQty = notHaveSaHaveSe.EdiQty, + FixPrice = haveSaNotHaveSe.FixPrice, + PN = haveSaNotHaveSe.PN, + ToLocCode = notHaveSaHaveSe.ToLocCode, + ToErpLocCode = notHaveSaHaveSe.ToErpLocCode, + EdiCustomerPartCode = notHaveSaHaveSe.EdiCustomerPartCode, + SeCustomerPartCode = notHaveSaHaveSe.SeCustomerPartCode, + SeFactoryPartCode = notHaveSaHaveSe.SeFactoryPartCode, + SaCustomerPartCode = haveSaNotHaveSe.SaCustomerPartCode, + SaFactoryPartCode = haveSaNotHaveSe.SaFactoryPartCode, + CustomerPartCode = haveSaNotHaveSe.CustomerPartCode, + PartCodeDesc = haveSaNotHaveSe.PartCodeDesc, + FactoryPartCode = haveSaNotHaveSe.FactoryPartCode, + ReplaceFactoryPartCode = haveSaNotHaveSe.ReplaceFactoryPartCode + }).ToList(); + return secondMatchHaveSaHaveSes; + } + /// /// 结算数据处理 /// 写入库位、替换零件号 @@ -192,7 +254,7 @@ namespace SettleAccount.Job.Services.Report excelExporter.Append(saSeEdiCompareSumExports.Take(sumMaxRowNumberOnASheet).ToList(), $"{businessTypeDisplayName}结算核对汇总输出"); for (var i = 1; i < saSeEdiCompareSumExports.Count / sumMaxRowNumberOnASheet + ((saSeEdiCompareSumExports.Count % sumMaxRowNumberOnASheet) > 0 ? 1 : 0); i++) { - var sheetDataItems = saSeEdiCompareSumExports.Skip(i * sumMaxRowNumberOnASheet).Take(sumMaxRowNumberOnASheet).ToList();; + var sheetDataItems = saSeEdiCompareSumExports.Skip(i * sumMaxRowNumberOnASheet).Take(sumMaxRowNumberOnASheet).ToList(); ; excelExporter.Append(sheetDataItems, $"{businessTypeDisplayName}结算核对汇总输出-{i}"); } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobAutoMapperProfile.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobAutoMapperProfile.cs index 2871cae2..fbec0db1 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobAutoMapperProfile.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Job/SettleAccountJobAutoMapperProfile.cs @@ -38,11 +38,17 @@ namespace SettleAccount.Job private void CreateMapSaSeCompare() { CreateMap(); + CreateMap(); CreateMap(); + CreateMap(); CreateMap(); + CreateMap(); CreateMap(); + CreateMap(); CreateMap(); + CreateMap(); CreateMap(); + CreateMap(); CreateMap(); } }