using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.BackgroundWorkers; using Volo.Abp.Threading; using Volo.Abp.Uow; using Win_in.Sfs.Store.Application.Contracts; using Win_in.Sfs.Wms.DataExchange.Domain; using IObjectMapper = Volo.Abp.ObjectMapping.IObjectMapper; namespace Win_in.Sfs.Wms.DataExchange.Agent; public class OutgoingFromWmsWorker : AsyncPeriodicBackgroundWorkerBase { private readonly OutgoingOptions _options; public OutgoingFromWmsWorker( AbpAsyncTimer timer, IOptions options, IServiceScopeFactory serviceScopeFactory ) : base(timer, serviceScopeFactory) { _options = options.Value.OutgoingOptions; Timer.Period = options.Value.OutgoingOptions.PeriodSeconds * 1000; //default 5 minutes } [UnitOfWork] protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) { //Resolve dependencies var exchangeDataAppService = workerContext.ServiceProvider.GetRequiredService(); var objectMapper = workerContext.ServiceProvider.GetRequiredService(); var outgoingFromWmsManager = workerContext.ServiceProvider.GetRequiredService(); //Do the work var batchSize = _options.BatchSize; //List filters = new List(); //filters.Add( new Filter("Status", EnumExchangeDataStatus.Unread.ToString())); //var input = new SfsStoreRequestInputBase //{ // Condition = new Condition { Filters = filters }, // MaxResultCount = batchSize, // SkipCount = 0, // Sorting = "WriteTime" //}; //var exchangeDataList = await exchangeDataAppService.GetAllListByFilterAsync(input).ConfigureAwait(false); var exchangeDataList = await exchangeDataAppService.GetToBeProcessedListAsync(batchSize).ConfigureAwait(false); var outgoingFromWmsList = objectMapper.Map, List>(exchangeDataList); await outgoingFromWmsManager.CreateManyAsync(outgoingFromWmsList).ConfigureAwait(false); } }