Browse Source

任务计划

bjmzak
wxd 1 year ago
parent
commit
0041e3ac29
  1. 5
      src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs
  2. 92
      src/Shentun.Peis.HttpApi.Host/Schedulers/ImportElectrocardiogramResultInterfaceWorker.cs
  3. 91
      src/Shentun.Peis.HttpApi.Host/Schedulers/SyncPatientRegisterReportInterfaceWorker.cs

5
src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs

@ -644,6 +644,11 @@ public class PeisHttpApiHostModule : AbpModule
{ {
RecurringJob.AddOrUpdate<IImportPatientRegisterInterfaceWorker>(thirdInterfaceDto.DisplayName, o => o.DoWork(thirdInterfaceDto.Id), corn, TimeZoneInfo.Local); RecurringJob.AddOrUpdate<IImportPatientRegisterInterfaceWorker>(thirdInterfaceDto.DisplayName, o => o.DoWork(thirdInterfaceDto.Id), corn, TimeZoneInfo.Local);
} }
else if (thirdInterfaceDto.ThirdInterfaceType == "08")
{
//心电图
RecurringJob.AddOrUpdate<IImportElectrocardiogramResultInterfaceWorker>(thirdInterfaceDto.DisplayName, o => o.DoWork(thirdInterfaceDto.Id), corn, TimeZoneInfo.Local);
}
} }
} }

92
src/Shentun.Peis.HttpApi.Host/Schedulers/ImportElectrocardiogramResultInterfaceWorker.cs

@ -0,0 +1,92 @@
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;
namespace Shentun.Peis.Schedulers
{
public interface IImportElectrocardiogramResultInterfaceWorker
{
public void DoWork(Guid interfaceId);
public void DoWork();
}
public class ImportElectrocardiogramResultInterfaceWorker : ThirdInterfaceWorkerBase, IImportElectrocardiogramResultInterfaceWorker
{
private static long i;
private static bool _isRunning = false;
private static readonly object lockObject = new object();
public virtual void DoWork(Guid interfaceId)
{
if (_isRunning) return;
//lock (lockObject)
//{
_isRunning = true;
try
{
//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 (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 NotImplementedException();
}
public override Task DoWorkAsync(CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}
}
}

91
src/Shentun.Peis.HttpApi.Host/Schedulers/SyncPatientRegisterReportInterfaceWorker.cs

@ -0,0 +1,91 @@
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;
namespace Shentun.Peis.Schedulers
{
public interface ISyncPatientRegisterReportInterfaceWorker
{
public void DoWork(Guid interfaceId);
public void DoWork();
}
public class SyncPatientRegisterReportInterfaceWorker : ThirdInterfaceWorkerBase, ISyncPatientRegisterReportInterfaceWorker
{
private static long i;
private static bool _isRunning = false;
private static readonly object lockObject = new object();
public virtual void DoWork(Guid interfaceId)
{
if (_isRunning) return;
//lock (lockObject)
//{
_isRunning = true;
try
{
//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 (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 NotImplementedException();
}
public override Task DoWorkAsync(CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}
}
}
Loading…
Cancel
Save