using System.Collections.Generic; using System.Linq; using System.Text.Json; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Volo.Abp.ObjectMapping; using Win_in.Sfs.Auth.Users.Inputs; using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.WMS.User; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.TyrpAgent.Incoming; public class UserConverter : IIncomingConverter { private readonly IIncomingToWmsManager _incomingToWmsManager; private readonly IObjectMapper _objectMapper; private readonly ILogger _logger; private readonly IIncomingFromExternalManager _incomingFromExternalManager; public UserConverter( IIncomingToWmsManager incomingToWmsManager , IObjectMapper objectMapper , ILogger logger, IIncomingFromExternalManager incomingFromExternalManager) { _incomingFromExternalManager = incomingFromExternalManager; _incomingToWmsManager = incomingToWmsManager; _objectMapper = objectMapper; _logger = logger; } public virtual async Task ConvertAsync(List incomingFromExternalList) { if (!incomingFromExternalList.Any()) { _logger.LogInformation("No Users"); return; } //按流水号创建单据 var materialRequestList = await BuildIncomingToWmsOfIdentityUserRequestAsync(incomingFromExternalList).ConfigureAwait(false); await _incomingToWmsManager.CreateManyAsync(materialRequestList).ConfigureAwait(false); //归档 await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false); } private async Task> BuildIncomingToWmsOfIdentityUserRequestAsync(List incomingDataList) { await Task.CompletedTask.ConfigureAwait(false); var incomingToWmsList = new List(); foreach (var item in incomingDataList) { var incomingToWms = new IncomingToWms() { DataType = item.DataType, DataAction = item.DataAction, SourceSystem = item.SourceSystem, DataIdentityCode = item.SourceDataGroupCode, }; incomingToWms.SetEffectiveDate(item.EffectiveDate); var exchangeIdentityUserRequest = JsonSerializer.Deserialize(item.DestinationDataContent); var wmsMaterialRequest = _objectMapper.Map(exchangeIdentityUserRequest); wmsMaterialRequest.Password = "123456"; wmsMaterialRequest.Email = "123@qq.com"; incomingToWms.DataContent = JsonSerializer.Serialize(wmsMaterialRequest); incomingToWmsList.Add(incomingToWms); } return incomingToWmsList; } }