|
@ -36,6 +36,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ; |
|
|
[Route("api/settleaccount/[controller]/[action]")]
|
|
|
[Route("api/settleaccount/[controller]/[action]")]
|
|
|
public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
{ |
|
|
{ |
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// DbContext
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public SettleAccountDbContext _settleAccountDbContext; |
|
|
/// <summary>
|
|
|
/// <summary>
|
|
|
/// PUB结算仓储
|
|
|
/// PUB结算仓储
|
|
|
/// </summary>
|
|
|
/// </summary>
|
|
@ -76,7 +80,8 @@ public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
/// <summary>
|
|
|
/// <summary>
|
|
|
/// 构造
|
|
|
/// 构造
|
|
|
/// </summary>
|
|
|
/// </summary>
|
|
|
public PUB_SA_SERVICE(INormalEfCoreRepository<PUB_SA, Guid> repository, |
|
|
public PUB_SA_SERVICE(SettleAccountDbContext settleAccountDbContext, |
|
|
|
|
|
INormalEfCoreRepository<PUB_SA, Guid> repository, |
|
|
INormalEfCoreRepository<PUB_SA_DETAIL, Guid> pubSaDetailRepository, |
|
|
INormalEfCoreRepository<PUB_SA_DETAIL, Guid> pubSaDetailRepository, |
|
|
INormalEfCoreRepository<PUB_CAN_SA, Guid> pubCanSaRepository, |
|
|
INormalEfCoreRepository<PUB_CAN_SA, Guid> pubCanSaRepository, |
|
|
INormalEfCoreRepository<PUB_CAN_SA_DETAIL, Guid> pubCanSaDetailRepository, |
|
|
INormalEfCoreRepository<PUB_CAN_SA_DETAIL, Guid> pubCanSaDetailRepository, |
|
@ -91,6 +96,7 @@ public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
ICommonManager commonManager |
|
|
ICommonManager commonManager |
|
|
) : base(cache, excelImportService, snowflakeIdGenerator, commonManager) |
|
|
) : base(cache, excelImportService, snowflakeIdGenerator, commonManager) |
|
|
{ |
|
|
{ |
|
|
|
|
|
_settleAccountDbContext = settleAccountDbContext; |
|
|
_repository = repository; |
|
|
_repository = repository; |
|
|
_pubSaDetailRepository = pubSaDetailRepository; |
|
|
_pubSaDetailRepository = pubSaDetailRepository; |
|
|
_pubCanSaRepository = pubCanSaRepository; |
|
|
_pubCanSaRepository = pubCanSaRepository; |
|
@ -105,7 +111,7 @@ public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
/// <summary>
|
|
|
/// <summary>
|
|
|
/// 期间
|
|
|
/// 期间
|
|
|
/// </summary>
|
|
|
/// </summary>
|
|
|
private int _version; |
|
|
private int version; |
|
|
/// <summary>
|
|
|
/// <summary>
|
|
|
/// 业务类别
|
|
|
/// 业务类别
|
|
|
/// </summary>
|
|
|
/// </summary>
|
|
@ -123,7 +129,7 @@ public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
public async Task<IActionResult> ImportAsync([FromForm] PUB_SAImportRequestDto pubSaImportRequestDto) |
|
|
public async Task<IActionResult> ImportAsync([FromForm] PUB_SAImportRequestDto pubSaImportRequestDto) |
|
|
{ |
|
|
{ |
|
|
IActionResult result = new JsonResult(new { Code = 400 }); |
|
|
IActionResult result = new JsonResult(new { Code = 400 }); |
|
|
_version = pubSaImportRequestDto.Version; |
|
|
version = pubSaImportRequestDto.Version; |
|
|
businessType = pubSaImportRequestDto.BusinessType; |
|
|
businessType = pubSaImportRequestDto.BusinessType; |
|
|
site = pubSaImportRequestDto.Site; |
|
|
site = pubSaImportRequestDto.Site; |
|
|
switch (pubSaImportRequestDto.BusinessType) |
|
|
switch (pubSaImportRequestDto.BusinessType) |
|
@ -376,7 +382,7 @@ public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
//验证客户对应厂内零件号是否存在
|
|
|
//验证客户对应厂内零件号是否存在
|
|
|
//导入的零件号集合
|
|
|
//导入的零件号集合
|
|
|
var importPubSaLUs = pubSaDetails.Select(t => t.LU).Distinct(); |
|
|
var importPubSaLUs = pubSaDetails.Select(t => t.LU).Distinct(); |
|
|
var materialRelationshipEntitys = await _materialRelationshipRepository.GetListAsync(t => importPubSaLUs.Contains(t.SettleMaterialCode)).ConfigureAwait(false); |
|
|
var materialRelationshipEntitys = await _materialRelationshipRepository.GetListAsync(t => t.BusinessType == businessType && importPubSaLUs.Contains(t.SettleMaterialCode)).ConfigureAwait(false); |
|
|
var materialRelationshipEntitySettleMaterialCodes = materialRelationshipEntitys.Select(t => t.SettleMaterialCode).Distinct(); |
|
|
var materialRelationshipEntitySettleMaterialCodes = materialRelationshipEntitys.Select(t => t.SettleMaterialCode).Distinct(); |
|
|
|
|
|
|
|
|
//不存在的客户零件号(差集)
|
|
|
//不存在的客户零件号(差集)
|
|
@ -429,9 +435,6 @@ public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
/// </summary>
|
|
|
/// </summary>
|
|
|
private async Task<IActionResult> InsertSaDataAsync(List<PUB_SA_DETAIL> pubSaDetails, EnumBusinessType businessType) |
|
|
private async Task<IActionResult> InsertSaDataAsync(List<PUB_SA_DETAIL> pubSaDetails, EnumBusinessType businessType) |
|
|
{ |
|
|
{ |
|
|
//客户零件关系
|
|
|
|
|
|
var materialRelationships = new List<MaterialRelationship>(); |
|
|
|
|
|
|
|
|
|
|
|
#region 处理结算数据
|
|
|
#region 处理结算数据
|
|
|
for (var i = 0; i < pubSaDetails.Count; i++) |
|
|
for (var i = 0; i < pubSaDetails.Count; i++) |
|
|
{ |
|
|
{ |
|
@ -439,7 +442,7 @@ public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
pubSaDetail.SetId(GuidGenerator.Create()); |
|
|
pubSaDetail.SetId(GuidGenerator.Create()); |
|
|
pubSaDetail.CustomerPartCodeNoSpace = pubSaDetail.LU.Replace(" ", ""); |
|
|
pubSaDetail.CustomerPartCodeNoSpace = pubSaDetail.LU.Replace(" ", ""); |
|
|
pubSaDetail.KeyCode = pubSaDetail.PN + pubSaDetail.LU; |
|
|
pubSaDetail.KeyCode = pubSaDetail.PN + pubSaDetail.LU; |
|
|
pubSaDetail.Version = _version; |
|
|
pubSaDetail.Version = version; |
|
|
pubSaDetail.BusinessType = businessType; |
|
|
pubSaDetail.BusinessType = businessType; |
|
|
pubSaDetail.IndexNum = i; |
|
|
pubSaDetail.IndexNum = i; |
|
|
} |
|
|
} |
|
@ -494,9 +497,8 @@ public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
|
|
|
|
|
|
//导入的零件号集合
|
|
|
//导入的零件号集合
|
|
|
var importPubSaLUs = pubSaDetails.Select(t => t.LU).Distinct(); |
|
|
var importPubSaLUs = pubSaDetails.Select(t => t.LU).Distinct(); |
|
|
var materialRelationshipEntitys = await _materialRelationshipRepository.GetListAsync(t => importPubSaLUs.Contains(t.SettleMaterialCode)).ConfigureAwait(false); |
|
|
var materialRelationshipEntitys = await _materialRelationshipRepository.GetListAsync(t => t.BusinessType == businessType && importPubSaLUs.Contains(t.SettleMaterialCode)).ConfigureAwait(false); |
|
|
|
|
|
|
|
|
var seAllMaterialRelationships = materialRelationshipEntitys.Union(materialRelationships); |
|
|
|
|
|
pubSaDetails.ForEach(pubSaDetail => |
|
|
pubSaDetails.ForEach(pubSaDetail => |
|
|
{ |
|
|
{ |
|
|
pubSaDetail.PartCode = materialRelationshipEntitys.FirstOrDefault(t => t.SettleMaterialCode == pubSaDetail.LU)?.ErpMaterialCode; |
|
|
pubSaDetail.PartCode = materialRelationshipEntitys.FirstOrDefault(t => t.SettleMaterialCode == pubSaDetail.LU)?.ErpMaterialCode; |
|
@ -505,10 +507,6 @@ public class PUB_SA_SERVICE : SettleAccountApplicationBase<PUB_SA> |
|
|
|
|
|
|
|
|
#region 添加入库
|
|
|
#region 添加入库
|
|
|
await SeDataEntryAsync(pubSaDetails).ConfigureAwait(false); |
|
|
await SeDataEntryAsync(pubSaDetails).ConfigureAwait(false); |
|
|
if (materialRelationships.Count > 0) |
|
|
|
|
|
{ |
|
|
|
|
|
await _materialRelationshipRepository.InsertManyAsync(materialRelationships).ConfigureAwait(false); |
|
|
|
|
|
} |
|
|
|
|
|
#endregion
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
return new JsonResult(new { Code = 200, Message = "导入成功" }); |
|
|
return new JsonResult(new { Code = 200, Message = "导入成功" }); |
|
|