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.
106 lines
3.8 KiB
106 lines
3.8 KiB
using Hangfire;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Logging;
|
|
using Shentun.Peis.ThirdInterfaces;
|
|
using Shentun.Utilities;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp.BackgroundWorkers.Hangfire;
|
|
|
|
namespace Shentun.Peis.Schedulers
|
|
{
|
|
public interface IImportLisResultInterfaceWorker
|
|
{
|
|
public void DoWork(Guid interfaceId);
|
|
public void DoWork();
|
|
}
|
|
public class ImportLisResultInterfaceWorker : ThirdInterfaceWorkerBase, IImportLisResultInterfaceWorker
|
|
{
|
|
private static long i;
|
|
private static bool _isRunning = false;
|
|
private static readonly object lockObject = new object();
|
|
private readonly IConfiguration _configuration;
|
|
public ImportLisResultInterfaceWorker(IConfiguration configuration)
|
|
{
|
|
_configuration = configuration;
|
|
}
|
|
|
|
public virtual void DoWork(Guid interfaceId)
|
|
{
|
|
if (_isRunning) return;
|
|
//lock (lockObject)
|
|
//{
|
|
_isRunning = true;
|
|
try
|
|
{
|
|
var backJobTypeIds = _configuration.GetSection("BackJobTypeId").Value;
|
|
|
|
//Logger.LogInformation("Executed" + GetType().Name + "..!");
|
|
var appServiceHelper = new AppServiceHelper();
|
|
//appServiceHelper.Login();
|
|
var thirdInterfaceDtos = appServiceHelper.CallAppService<object, List<ThirdInterfaceDto>>("api/app/ThirdInterface/GetList", null);
|
|
var thirdInterfaceDto = thirdInterfaceDtos.Where(o => o.Id == interfaceId).FirstOrDefault();
|
|
if (thirdInterfaceDto == null)
|
|
{
|
|
_isRunning = false;
|
|
return;
|
|
}
|
|
|
|
if (!backJobTypeIds.Contains(thirdInterfaceDto.ThirdInterfaceType))
|
|
{
|
|
_isRunning = false;
|
|
return;
|
|
}
|
|
|
|
if (thirdInterfaceDto.IsActive != 'Y')
|
|
{
|
|
_isRunning = false;
|
|
return;
|
|
}
|
|
var parmValue = thirdInterfaceDto.ParmValue;
|
|
if (!string.IsNullOrWhiteSpace(parmValue))
|
|
{
|
|
var configurationBuilder = new ConfigurationBuilder()
|
|
.AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
|
|
var interfaceConfig = configurationBuilder.Build();
|
|
|
|
var isActive = interfaceConfig.GetSection("Interface").GetSection("Scheduler")
|
|
.GetSection("IsActive").Value;
|
|
if (isActive != "Y")
|
|
{
|
|
_isRunning = false;
|
|
return;
|
|
}
|
|
var assemblyName = interfaceConfig.GetSection("Interface").GetSection("AssemblyName").Value;
|
|
var className = interfaceConfig.GetSection("Interface").GetSection("ClassName").Value;
|
|
var funName = "DoWork";
|
|
object[] classConstructorArg = new object[] { thirdInterfaceDto.Id };
|
|
ReflectionHelper.Invoke(assemblyName, className, classConstructorArg, funName);
|
|
}
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_isRunning = false;
|
|
Logger.LogError("Executed " + GetType().Name + " Error" + ex.Message);
|
|
}
|
|
_isRunning = false;
|
|
return;
|
|
//}
|
|
}
|
|
public void DoWork()
|
|
{
|
|
throw new System.NotImplementedException();
|
|
}
|
|
|
|
public override Task DoWorkAsync(CancellationToken cancellationToken = default)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
}
|