|
|
@ -4,6 +4,7 @@ using System.Linq; |
|
|
|
using System.Text.Json; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Microsoft.Extensions.Logging; |
|
|
|
using Win_in.Sfs.Basedata.Application.Contracts; |
|
|
|
using Win_in.Sfs.Wms.DataExchange.Domain; |
|
|
|
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.EOS; |
|
|
|
using Win_in.Sfs.Wms.DataExchange.Domain.Shared; |
|
|
@ -17,16 +18,19 @@ public class ShipReader : IReader |
|
|
|
private readonly IShipManager _shipManager; |
|
|
|
private readonly IIncomingFromExternalManager _incomingFromExternalManager; |
|
|
|
private readonly ILogger<ShipReader> _logger; |
|
|
|
private readonly ISupplierItemAppService _supplierItemAppService; |
|
|
|
|
|
|
|
public ShipReader( |
|
|
|
IShipManager shipManager |
|
|
|
, IIncomingFromExternalManager incomingFromExternalManager |
|
|
|
, ILogger<ShipReader> logger |
|
|
|
, ILogger<ShipReader> logger, |
|
|
|
ISupplierItemAppService supplierItemAppService |
|
|
|
) |
|
|
|
{ |
|
|
|
_shipManager = shipManager; |
|
|
|
_incomingFromExternalManager = incomingFromExternalManager; |
|
|
|
_logger = logger; |
|
|
|
_supplierItemAppService = supplierItemAppService; |
|
|
|
} |
|
|
|
|
|
|
|
public virtual async Task<List<IncomingFromExternal>> ReadAsync() |
|
|
@ -39,6 +43,11 @@ public class ShipReader : IReader |
|
|
|
return new List<IncomingFromExternal>(); |
|
|
|
} |
|
|
|
|
|
|
|
var shipbillno = await GetNoSupplierItemNum(toBeProcessedShips).ConfigureAwait(false); |
|
|
|
if (shipbillno.Count > 0) |
|
|
|
{ |
|
|
|
toBeProcessedShips = toBeProcessedShips.Where(r => !shipbillno.Contains(r.ShipBillNo)).ToList(); |
|
|
|
} |
|
|
|
//Ship逐一转换为SupplierAsn
|
|
|
|
var incomingDataList = await BuildIncomingFromExternalFromShipAsync(toBeProcessedShips).ConfigureAwait(false); |
|
|
|
await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false); |
|
|
@ -83,6 +92,26 @@ public class ShipReader : IReader |
|
|
|
return incomingDataList; |
|
|
|
} |
|
|
|
|
|
|
|
private async Task<List<string>> GetNoSupplierItemNum(List<Ship> toBeProcessedShips) |
|
|
|
{ |
|
|
|
List<string> shipbillno = new List<string>(); |
|
|
|
|
|
|
|
foreach (var item in toBeProcessedShips) |
|
|
|
{ |
|
|
|
if (shipbillno.Contains(item.ShipBillNo)) |
|
|
|
{ |
|
|
|
continue; |
|
|
|
} |
|
|
|
var supplierItemDTO = await _supplierItemAppService.GetBySupplierCodeAndItemCodeAsync(item.SupplierCode, item.ERP).ConfigureAwait(false); |
|
|
|
if (supplierItemDTO == null) |
|
|
|
{ |
|
|
|
shipbillno.Add(item.ShipBillNo); |
|
|
|
} |
|
|
|
} |
|
|
|
return shipbillno; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static IncomingFromExternal BuildIncomingFromExternal(Ship ship) |
|
|
|
{ |
|
|
|
var incomingData = new IncomingFromExternal() |
|
|
|