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

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;
}
}