Browse Source

LIS结果导入

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
1f973fedfa
  1. 2
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs
  2. 6
      src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs
  3. 2
      src/Shentun.ColumnReferencePlugIns/PlugInsBase.cs
  4. 4
      src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs
  5. 21
      src/Shentun.Peis.HttpApi.Host/Schedulers/ChargeRequestInterfaceQueryWorker.cs
  6. 82
      src/Shentun.Peis.HttpApi.Host/Schedulers/ImportLisResultInterfaceWorker.cs
  7. 20
      src/Shentun.Utilities/ReflectionHelper.cs

2
ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs

@ -245,7 +245,7 @@ namespace Shentun.Peis.PlugIns.Gem
{
try
{
SyncChargeRequestFlagFromInterfaceAsync(chargeRequest.ChargeRequestId);
var result = SyncChargeRequestFlagFromInterfaceAsync(chargeRequest.ChargeRequestId);
}
catch(Exception ex)
{

6
src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs

@ -91,10 +91,10 @@ ORDER BY lis_request.creation_time
{
try
{
ImportResultAsync(new LisResultImportPlugInsInput()
var result = ImportResultAsync(new LisResultImportPlugInsInput()
{
PatientRegisterId = patientRegister.PatientRegisterId,
});
}).Result;
}
catch (Exception ex)
{
@ -102,7 +102,7 @@ ORDER BY lis_request.creation_time
}
}
return Task.CompletedTask;
return Task.CompletedTask;
}
protected async Task<LoginOutDto> LoginAsync()

2
src/Shentun.ColumnReferencePlugIns/PlugInsBase.cs

@ -117,7 +117,7 @@ namespace Shentun.Peis.PlugIns
public virtual Task DoWork()
{
return Task.CompletedTask;
return Task.CompletedTask;
}
public async Task<LoginOutDto> LoginAsync(string userId,string password)
{

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

@ -575,6 +575,10 @@ public class PeisHttpApiHostModule : AbpModule
{
foreach (var thirdInterfaceDto in thirdInterFaceForHostOutDto.Data)
{
if(thirdInterfaceDto.IsActive != 'Y')
{
continue;
}
var parmValue = thirdInterfaceDto.ParmValue;
if (!string.IsNullOrWhiteSpace(parmValue))
{

21
src/Shentun.Peis.HttpApi.Host/Schedulers/ChargeRequestInterfaceQueryWorker.cs

@ -40,23 +40,24 @@ namespace Shentun.Peis.Schedulers
Logger.LogInformation("Executed ChargeRequestInterfaceQueryWorker..!");
return Task.CompletedTask;
}
[DisableConcurrentExecution(timeoutInSeconds: 10 * 60)]
public void DoWork(Guid interfaceId)
{
if (_isRunning) return;
lock (lockObject)
{
_isRunning = true;
try
{
try
{
Logger.LogInformation("Executed ChargeRequestInterfaceQueryWorker..!");
var appServiceHelper = new AppServiceHelper();
appServiceHelper.Login();
var thirdInterFaceForHostOutDto = appServiceHelper.CallAppService<object, ThirdInterFaceForHostOutDto>("api/app/ThirdInterface/GetList", null);
var thirdInterfaceDto = thirdInterFaceForHostOutDto.Data.Where(o => o.Id == interfaceId).FirstOrDefault();
var thirdInterfaceDto = thirdInterFaceForHostOutDto.Data.Where(o => o.Id == interfaceId).FirstOrDefault();
if (thirdInterfaceDto == null)
{
_isRunning = false;
return ;
return;
}
var parmValue = thirdInterfaceDto.ParmValue;
@ -71,23 +72,23 @@ namespace Shentun.Peis.Schedulers
if (isActive != "Y")
{
_isRunning = false;
return ;
return;
}
var assemblyName = interfaceConfig.GetSection("Interface").GetSection("AssemblyName").Value;
var className = interfaceConfig.GetSection("Interface").GetSection("ClassName").Value;
var funName = "DoWork";
//object[] objects = new object[] { chargeRequestPlugInsInput };
ReflectionHelper.InvokeAsync(assemblyName, className, parmValue, funName);
ReflectionHelper.Invoke(assemblyName, className, parmValue, funName);
}
}
catch (Exception ex)
{
Logger.LogError("Executed ChargeRequestInterfaceQueryWorker Error" + ex.Message);
}
_isRunning = false;
return ;
_isRunning = false;
return;
}
}
@ -99,7 +100,7 @@ namespace Shentun.Peis.Schedulers
_isRunning = true;
try
{
}
catch (Exception ex)

82
src/Shentun.Peis.HttpApi.Host/Schedulers/ImportLisResultInterfaceWorker.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.Configuration;
using Hangfire;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Shentun.Utilities;
using System;
@ -12,7 +13,7 @@ namespace Shentun.Peis.Schedulers
{
public interface IImportLisResultInterfaceWorker
{
Task DoWork(Guid interfaceId);
public void DoWork(Guid interfaceId);
public void DoWork();
}
public class ImportLisResultInterfaceWorker : HangfireBackgroundWorkerBase, IImportLisResultInterfaceWorker
@ -21,54 +22,57 @@ namespace Shentun.Peis.Schedulers
private static long i;
private static bool _isRunning = false;
private static readonly object lockObject = new object();
public async Task DoWork(Guid interfaceId)
[DisableConcurrentExecution(timeoutInSeconds: 10 * 60)]
public void DoWork(Guid interfaceId)
{
if (_isRunning) return;
_isRunning = true;
try
lock (lockObject)
{
Logger.LogInformation("Executed ImportLisResultInterfaceWorker..!");
var appServiceHelper = new AppServiceHelper();
appServiceHelper.Login();
var thirdInterFaceForHostOutDto = appServiceHelper.CallAppService<object, ThirdInterFaceForHostOutDto>("api/app/ThirdInterface/GetList", null);
var thirdInterfaceDto = thirdInterFaceForHostOutDto.Data.Where(o => o.Id == interfaceId).FirstOrDefault();
if (thirdInterfaceDto == null)
{
_isRunning = false;
return;
}
var parmValue = thirdInterfaceDto.ParmValue;
if (!string.IsNullOrWhiteSpace(parmValue))
_isRunning = true;
try
{
var configurationBuilder = new ConfigurationBuilder()
.AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
var interfaceConfig = configurationBuilder.Build();
isActive = interfaceConfig.GetSection("Interface").GetSection("Scheduler")
.GetSection("IsActive").Value;
if (isActive != "Y")
Logger.LogInformation("Executed ImportLisResultInterfaceWorker..!");
var appServiceHelper = new AppServiceHelper();
appServiceHelper.Login();
var thirdInterFaceForHostOutDto = appServiceHelper.CallAppService<object, ThirdInterFaceForHostOutDto>("api/app/ThirdInterface/GetList", null);
var thirdInterfaceDto = thirdInterFaceForHostOutDto.Data.Where(o => o.Id == interfaceId).FirstOrDefault();
if (thirdInterfaceDto == null)
{
_isRunning = false;
return;
}
var assemblyName = interfaceConfig.GetSection("Interface").GetSection("AssemblyName").Value;
var className = interfaceConfig.GetSection("Interface").GetSection("ClassName").Value;
var funName = "DoWork";
//object[] objects = new object[] { chargeRequestPlugInsInput };
await ReflectionHelper.InvokeAsync(assemblyName, className, parmValue, funName);
}
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();
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[] objects = new object[] { chargeRequestPlugInsInput };
ReflectionHelper.Invoke(assemblyName, className, parmValue, funName);
}
}
catch (Exception ex)
{
Logger.LogError("Executed ImportLisResultInterfaceWorker Error" + ex.Message);
}
_isRunning = false;
return;
}
catch (Exception ex)
{
Logger.LogError("Executed ImportLisResultInterfaceWorker Error" + ex.Message);
}
_isRunning = false;
return;
}
}
public void DoWork()

20
src/Shentun.Utilities/ReflectionHelper.cs

@ -61,5 +61,25 @@ namespace Shentun.Utilities
}
return ;
}
public static void Invoke(string assemblyName, string className, string classConstructorArg, string methodName, object[] args = null)
{
Assembly assembly = Assembly.Load(assemblyName);
Type type = assembly.GetType(className);
// 创建类的实例
object instance = Activator.CreateInstance(type, classConstructorArg);
// 获取方法信息
MethodInfo method = type.GetMethod(methodName);
// 调用方法,如果方法需要参数,可以传入对应的参数数组,例如: new object[] { arg1, arg2 }
//var isAsync = (method.ReturnType == typeof(Task) ||
// (method.ReturnType.IsGenericType && method.ReturnType.GetGenericTypeDefinition() == typeof(Task<>)));
//if (isAsync)
//{
// throw new Exception("该方法不支持异步");
//}
method.Invoke(instance, args);
return;
}
}
}
Loading…
Cancel
Save