|
|
@ -5,6 +5,7 @@ using System.Text.Json; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Microsoft.Extensions.Logging; |
|
|
|
using Volo.Abp.Guids; |
|
|
|
using Win_in.Sfs.Basedata.Application.Contracts; |
|
|
|
using Win_in.Sfs.Shared.Domain.Shared; |
|
|
|
using Win_in.Sfs.Wms.DataExchange.Domain; |
|
|
|
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.EOS; |
|
|
@ -20,17 +21,20 @@ public class PlanReader : IReader |
|
|
|
private readonly IIncomingFromExternalManager _incomingFromExternalManager; |
|
|
|
private readonly ILogger<PlanReader> _logger; |
|
|
|
private readonly IGuidGenerator _guidGenerator; |
|
|
|
private readonly IPurchasePriceSheetAppService _purchasePriceSheetAppService; |
|
|
|
public PlanReader( |
|
|
|
IPlanManager planManager |
|
|
|
, IIncomingFromExternalManager incomingFromExternalManager |
|
|
|
, ILogger<PlanReader> logger |
|
|
|
, IGuidGenerator guidGenerator |
|
|
|
, IGuidGenerator guidGenerator, |
|
|
|
IPurchasePriceSheetAppService purchasePriceSheetAppService |
|
|
|
) |
|
|
|
{ |
|
|
|
_planManager = planManager; |
|
|
|
_incomingFromExternalManager = incomingFromExternalManager; |
|
|
|
_logger = logger; |
|
|
|
_guidGenerator = guidGenerator; |
|
|
|
_purchasePriceSheetAppService = purchasePriceSheetAppService; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
@ -43,6 +47,12 @@ public class PlanReader : IReader |
|
|
|
_logger.LogInformation("no plans"); |
|
|
|
return new List<IncomingFromExternal>(); |
|
|
|
} |
|
|
|
var pobillno = await GetPriceItems(toBeProcessedPlans).ConfigureAwait(false); |
|
|
|
if (pobillno.Count > 0) |
|
|
|
{ |
|
|
|
toBeProcessedPlans = toBeProcessedPlans.Where(r => !pobillno.Contains(r.PlanBillNo)).ToList(); |
|
|
|
} |
|
|
|
|
|
|
|
//Plan逐一转换为PurchaseOrder
|
|
|
|
var incomingDataList = BuildIncomingFromExternalFromPlanAsync(toBeProcessedPlans); |
|
|
|
await _incomingFromExternalManager.CreateBulkAsync(incomingDataList).ConfigureAwait(false); |
|
|
@ -50,7 +60,22 @@ public class PlanReader : IReader |
|
|
|
await _planManager.UpdateProcessedListAsync(toBeProcessedPlans).ConfigureAwait(false); |
|
|
|
return incomingDataList; |
|
|
|
} |
|
|
|
private async Task<List<string>> GetPriceItems(List<Plan> toBeProcessedPlans) |
|
|
|
{ |
|
|
|
List<string> pobillno = new List<string>(); |
|
|
|
|
|
|
|
foreach (var plan in toBeProcessedPlans) |
|
|
|
{ |
|
|
|
if (pobillno.Contains(plan.PlanBillNo)) continue; |
|
|
|
var price = await _purchasePriceSheetAppService.GetByItemCodeAsync(plan.ERP).ConfigureAwait(false); |
|
|
|
if (price == null) |
|
|
|
{ |
|
|
|
pobillno.Add(plan.PlanBillNo); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return pobillno; |
|
|
|
} |
|
|
|
private List<IncomingFromExternal> BuildIncomingFromExternalFromPlanAsync(List<Plan> toBeProcessedPlans) |
|
|
|
{ |
|
|
|
var incomingDataList = new List<IncomingFromExternal>(); |
|
|
|