Browse Source

对比

master
mahao 1 year ago
parent
commit
98e7c80bbb
  1. 14
      code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_SA_DTO.cs
  2. 14
      code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_SA_DETAIL_SERVICE.cs
  3. 74
      code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs
  4. 24
      code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/PubSaSeCompareDapperRepository.cs
  5. 75
      code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/PubSaSeCompareExportService.cs

14
code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_SA_DTO.cs

@ -175,6 +175,20 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos
[Required(ErrorMessage = "{0}不能为空")] [Required(ErrorMessage = "{0}不能为空")]
public string Version { get; set; } public string Version { get; set; }
/// <summary>
/// 零件号
/// </summary>
[Display(Name = "零件号")]
[Required(ErrorMessage = "{0}不能为空")]
public string LU { get; set; }
/// <summary>
/// 通用码
/// </summary>
[Display(Name = "通用码")]
[Required(ErrorMessage = "{0}不能为空")]
public string PN { get; set; }
/// <summary> /// <summary>
/// 业务类型 /// 业务类型
/// </summary> /// </summary>

14
code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_SA_DETAIL_SERVICE.cs

@ -108,12 +108,20 @@ public class PUB_SA_DETAIL_SERVICE : SettleAccountApplicationBase<PUB_SA_DETAIL>
[HttpPost] [HttpPost]
public async Task<string> PubSaSeCompare(PubSaSeCompareRequestDto pubSaSeCompareRequestDto) public async Task<string> PubSaSeCompare(PubSaSeCompareRequestDto pubSaSeCompareRequestDto)
{ {
var businessTypeDisplayName = pubSaSeCompareRequestDto.BusinessType.ToString();
DisplayAttribute attributeOfType = pubSaSeCompareRequestDto.BusinessType.GetAttributeOfType<DisplayAttribute>();
if (attributeOfType != null)
{
businessTypeDisplayName = attributeOfType.Name;
}
var projectName = $"{businessTypeDisplayName}结算与发运数据对比";
List<CustomCondition> customConditionList = new List<CustomCondition>(); List<CustomCondition> customConditionList = new List<CustomCondition>();
customConditionList.Add(new CustomCondition() { Name = "Version", Value = pubSaSeCompareRequestDto.Version }); customConditionList.Add(new CustomCondition() { Name = "Version", Value = pubSaSeCompareRequestDto.Version });
customConditionList.Add(new CustomCondition() { Name = "BusinessType", Value = pubSaSeCompareRequestDto.BusinessType.ToString() }); customConditionList.Add(new CustomCondition() { Name = "BusinessType", Value = ((int)pubSaSeCompareRequestDto.BusinessType).ToString() });
customConditionList.Add(new CustomCondition() { Name = "ProjectName", Value = projectName });
customConditionList.Add(new CustomCondition() { Name = "ProjectName", Value = "结算与发运数据对比" }); var _taskid = await _taskJobService.ExportEnqueueAsync(projectName, ExportExtentsion.Excel, pubSaSeCompareRequestDto.Version, string.Empty, CurrentUser, typeof(PubSaSeCompareExportService), customConditionList, (rs) =>
var _taskid = await _taskJobService.ExportEnqueueAsync("Pub结算与发运核对汇总表", ExportExtentsion.Excel, pubSaSeCompareRequestDto.Version, string.Empty, CurrentUser, typeof(PubSaSeCompareExportService), customConditionList, (rs) =>
{ {
Console.WriteLine("TaskJob 回调了"); Console.WriteLine("TaskJob 回调了");
}); });

74
code/src/Modules/SettleAccount/src/SettleAccount.Domain/Reports/PubSaSeCompareDiff.cs

@ -1,3 +1,5 @@
using System.ComponentModel.DataAnnotations;
using System;
using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Excel; using Magicodes.ExporterAndImporter.Excel;
@ -6,6 +8,78 @@ namespace Win.Sfs.SettleAccount.Reports;
[ExcelExporter(MaxRowNumberOnASheet = 900000)] [ExcelExporter(MaxRowNumberOnASheet = 900000)]
public class PubSaSeCompareDiff public class PubSaSeCompareDiff
{ {
//[Display(Name = "LU+ASN单号")]
//public string KeyCode { get; set; } = null!;
/// <summary>
/// 有结算无发货(无EDI数据)
///有结算无发货(有EDI数据)
///有结算有发货(无EDI数据)
///有结算有发货(无价格信息)
///有结算有发货(有EDI数据)
///无结算有发货(有EDI数据)
///无结算有发货(无EDI数据)
///有结算有发货(有EDI数据)
///有结算有发货(WMS多发)
/// </summary>
[Display(Name = "类别")]
public string Category { get; set; } = null!;
//[Display(Name = "Wms发货单号")]
//public string WmsBillNum { get; set; } = null!;
//[Display(Name = "发货时间")]
//public DateTime ShippingDate { get; set; }
//[Display(Name = "生产码")]
//public string PN { get; set; } = null!;
[Display(Name = "日顺序号")]
public string SeqNumber { get; set; } = null!;
[Display(Name = "PJIS日顺序号")]
public string PJISSeqNumber { get; set; } = null!;
[Display(Name = "物料号")]
public string MaterialNumber { get; set; } = null!;
[Display(Name = "物料描述")]
public string MaterialDes { get; set; } = null!;
//[Display(Name = "零件号")]
//public string LU { get; set; } = null!;
/// <summary>
/// 结算数据中的过账日期
/// </summary>
[Display(Name = "客户下线时间")]
public DateTime CustomerOfflineTime { get; set; }
[Display(Name = "小总成号")]
public string AssemblyCode { get; set; }
[Display(Name = "注塑码")]
public string InjectionCode { get; set; }
[Display(Name = "结算数量")]
public decimal SAQty { get; set; }
[Display(Name = "发货数量")]
public decimal SEQty { get; set; }
[Display(Name = "匹配类型")]
public string MateType { get; set; }
[Display(Name = "定价")]
public decimal FixPrice { get; set; }
[Display(Name = "期间")]
public int Version { get; set; }
[Display(Name = "替换零件号")]
public string RepLU { get; set; }
/// <summary> /// <summary>
/// 零件号 /// 零件号
/// </summary> /// </summary>

24
code/src/Modules/SettleAccount/src/SettleAccount.EntityFrameworkCore/Repository/SettleAccountJob/Report/PubSaSeCompareDapperRepository.cs

@ -24,20 +24,32 @@ public class PubSaSeCompareDapperRepository : DapperRepository<SettleAccountDbCo
/// <summary> /// <summary>
/// 获取差异 /// 获取差异
/// </summary> /// </summary>
public virtual List<PubSaSeCompareDiff> GetDetailDiffReportList(string version, string businessType) public virtual List<PubSaSeCompareDiff> GetDetailDiffReportList(string businessType)
{ {
string strSqlText = @$" string strSqlText = @$"
SELECT SELECT
A.WmsBillNum,
A.ShippingDate,
'' SeqNumber,
'' PJISSeqNumber,
'' MaterialNumber,
'' MaterialDes,
B.SettleDate CustomerOfflineTime,
'' AssemblyCode,
'' InjectionCode,
A.LU SeLU, A.LU SeLU,
A.PN SePN, A.PN SePN,
SeQty,
B.LU SaLU, B.LU SaLU,
B.PN SaPN, B.PN SaPN,
SaQty, A.SEQty,
(SaQty - SeQty) DiffQty B.SAQty,
(B.SAQty-A.SEQty) DiffQty,
'' MateType,
B.Price FixPrice
FROM FROM
(SELECT SUM(QTY) SeQty, LU, PN FROM Set_PUB_SE_DETAIL WHERE GROUP BY LU, PN) A (SELECT SUM(QTY) SEQty,LU,PN,WmsBillNum,ShippingDate FROM Set_PUB_SE_DETAIL WHERE BusinessType = {businessType} GROUP BY LU,PN,WmsBillNum,ShippingDate) A
FULL JOIN (SELECT SUM(QTY) SaQty, LU, PN FROM Set_PUB_SA_DETAIL GROUP BY LU, PN) B ON A.LU= B.LU AND A.PN= B.PN FULL JOIN (SELECT SUM(QTY) SAQty,LU,PN,Price,SettleDate FROM Set_PUB_SA_DETAIL WHERE BusinessType = {businessType} GROUP BY LU,PN,Price,SettleDate) B ON A.LU= B.LU AND A.PN= B.PN
ORDER BY B.SettleDate DESC;
"; ";
return DbConnection.Query<PubSaSeCompareDiff>(strSqlText, null, null, true, 1200, null).ToList(); return DbConnection.Query<PubSaSeCompareDiff>(strSqlText, null, null, true, 1200, null).ToList();
} }

75
code/src/Modules/SettleAccount/src/SettleAccount.Job/Services/Report/PubSaSeCompareExportService.cs

@ -11,6 +11,10 @@ using SettleAccount.Domain.BQ;
using Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report; using Win.Sfs.SettleAccount.Repository.SettleAccountJob.Report;
using Shouldly; using Shouldly;
using Volo.Abp.BlobStoring; using Volo.Abp.BlobStoring;
using Win.Sfs.SettleAccount.Reports;
using Newtonsoft.Json.Schema;
using Win.Sfs.SettleAccount;
using Win.Sfs.SettleAccount.Entities.Prices;
namespace SettleAccount.Job.Services.Report namespace SettleAccount.Job.Services.Report
{ {
@ -29,6 +33,11 @@ namespace SettleAccount.Job.Services.Report
/// </summary> /// </summary>
private readonly INormalEfCoreRepository<PUB_SE_DETAIL, Guid> _pubSeDetailRepository; private readonly INormalEfCoreRepository<PUB_SE_DETAIL, Guid> _pubSeDetailRepository;
/// <summary>
/// 替换件关系仓储
/// </summary>
private readonly INormalEfCoreRepository<TB_RePartsRelationship, Guid> _tbRePartsRelationshipRepository;
private readonly PubSaSeCompareDapperRepository _pubSaSeCompareDapperRepository; private readonly PubSaSeCompareDapperRepository _pubSaSeCompareDapperRepository;
private readonly IBlobContainer<MyFileContainer> _fileContainer; private readonly IBlobContainer<MyFileContainer> _fileContainer;
@ -38,11 +47,13 @@ namespace SettleAccount.Job.Services.Report
/// </summary> /// </summary>
public PubSaSeCompareExportService(INormalEfCoreRepository<PUB_SA_DETAIL, Guid> pubSaDetailRepository, public PubSaSeCompareExportService(INormalEfCoreRepository<PUB_SA_DETAIL, Guid> pubSaDetailRepository,
INormalEfCoreRepository<PUB_SE_DETAIL, Guid> pubSeDetailRepository, INormalEfCoreRepository<PUB_SE_DETAIL, Guid> pubSeDetailRepository,
INormalEfCoreRepository<TB_RePartsRelationship, Guid> tbRePartsRelationshipRepository,
PubSaSeCompareDapperRepository pubSaSeCompareDapperRepository, PubSaSeCompareDapperRepository pubSaSeCompareDapperRepository,
IBlobContainer<MyFileContainer> fileContainer) IBlobContainer<MyFileContainer> fileContainer)
{ {
_pubSaDetailRepository = pubSaDetailRepository; _pubSaDetailRepository = pubSaDetailRepository;
_pubSeDetailRepository = pubSeDetailRepository; _pubSeDetailRepository = pubSeDetailRepository;
_tbRePartsRelationshipRepository = tbRePartsRelationshipRepository;
_pubSaSeCompareDapperRepository = pubSaSeCompareDapperRepository; _pubSaSeCompareDapperRepository = pubSaSeCompareDapperRepository;
_fileContainer = fileContainer; _fileContainer = fileContainer;
} }
@ -55,21 +66,71 @@ namespace SettleAccount.Job.Services.Report
var version = property.Where(p => p.Name == "Version").FirstOrDefault().Value; var version = property.Where(p => p.Name == "Version").FirstOrDefault().Value;
var businessType = property.Where(t => t.Name == "BusinessType").FirstOrDefault().Value; var businessType = property.Where(t => t.Name == "BusinessType").FirstOrDefault().Value;
var filename = exportName.FirstOrDefault(); var filename = exportName.FirstOrDefault();
var pubSaSeCompareDiffs = _pubSaSeCompareDapperRepository.GetDetailDiffReportList(version, businessType); var pubSaSeCompareDiffs = _pubSaSeCompareDapperRepository.GetDetailDiffReportList(businessType);
//有结算有发运
var haveSaHaveSe = new List<PubSaSeCompareDiff>();
//有结算无发运
var haveSaNotHaveSe = new List<PubSaSeCompareDiff>();
//无结算有发运
var notHaveSaHaveSe = new List<PubSaSeCompareDiff>();
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));
//二次对比(替换零件号)
var repLUs = notHaveSaHaveSe.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 =>
{
t.RepLU = t.SeLU;
t.SeLU = tbRePartsRelationship.LU;
});
});
pubSaSeCompareDiffs.Join()
ExcelExporter excelExporter = new ExcelExporter();
//var add = from item1 in haveSaNotHaveSe
// join item2 in notHaveSaHaveSe
// on new { item1.SaLU, item1.SaPN }
// equals new { item2.SeLU, item2.SePN }
// into temp
// from itm3 in temp.DefaultIfEmpty()
// where itm3 == null
// select item1;
//var query = BlobProviderSelectorExtensions
ExcelExporter excelExporter = new ExcelExporter();
var result = excelExporter var result = excelExporter
.Append(pubSaSeCompareDiffs, "差异明细表") .Append(pubSaSeCompareDiffs, "汇总表")
.SeparateBySheet() .SeparateBySheet()
.Append(pubSaSeCompareDiffs, "数量差异汇总表") .Append(haveSaHaveSe, "有结算有发运")
.SeparateBySheet() .SeparateBySheet()
.Append(pubSaSeCompareDiffs, "按物料价格差异明细表") .Append(haveSaNotHaveSe, "有结算无发运")
.SeparateBySheet() .SeparateBySheet()
.Append(pubSaSeCompareDiffs, "差异汇总验证表") .Append(notHaveSaHaveSe, "无结算有发运")
.ExportAppendDataAsByteArray(); .ExportAppendDataAsByteArray();
result.ShouldNotBeNull(); result.ShouldNotBeNull();
_fileContainer.SaveAsync(filename, result.Result, true); //_fileContainer.SaveAsync(filename, result.Result, true);
return id.ToString(); return id.ToString();

Loading…
Cancel
Save