You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.7 KiB
48 lines
1.7 KiB
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text.Json;
|
|
using System.Threading.Tasks;
|
|
using Win_in.Sfs.Wms.DataExchange.Domain;
|
|
using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.EOS;
|
|
using Win_in.Sfs.Wms.DataExchange.Domain.Shared;
|
|
|
|
namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent;
|
|
|
|
public class ArriveNoteWriter : IWriter
|
|
{
|
|
private readonly IArriveNoteManager _arriveNoteNoteManager;
|
|
private readonly IOutgoingToExternalManager _outgoingToExternalManager;
|
|
|
|
public ArriveNoteWriter(
|
|
IArriveNoteManager arriveNoteNoteManager
|
|
, IOutgoingToExternalManager outgoingToExternalManager)
|
|
{
|
|
_arriveNoteNoteManager = arriveNoteNoteManager;
|
|
_outgoingToExternalManager = outgoingToExternalManager;
|
|
}
|
|
|
|
public virtual async Task WriteAsync(List<OutgoingToExternal> outgoingDataList)
|
|
{
|
|
var outarrive = outgoingDataList.Where(r => r.Status != EnumExchangeDataStatus.Error).ToList() ;
|
|
var arriveNotes = await BuildArriveNotesAsync(outarrive).ConfigureAwait(false);
|
|
//写Arrive数据到EOS
|
|
await _arriveNoteNoteManager.PostListAsync(arriveNotes).ConfigureAwait(false);
|
|
|
|
await _outgoingToExternalManager.ArchiveManyAsync(outgoingDataList).ConfigureAwait(false);
|
|
}
|
|
|
|
private static async Task<List<ArriveNote>> BuildArriveNotesAsync(List<OutgoingToExternal> outgoingData)
|
|
{
|
|
await Task.CompletedTask.ConfigureAwait(false);
|
|
var arriveList = new List<ArriveNote>();
|
|
foreach (var outgoingToExternal in outgoingData)
|
|
{
|
|
var receipt =
|
|
JsonSerializer.Deserialize<ArriveNote>(outgoingToExternal.DestinationDataContent);
|
|
|
|
arriveList.Add(receipt);
|
|
}
|
|
return arriveList;
|
|
}
|
|
|
|
}
|
|
|