Browse Source

LIS结果导入

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
1f973fedfa
  1. 2
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs
  2. 4
      src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs
  3. 4
      src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs
  4. 9
      src/Shentun.Peis.HttpApi.Host/Schedulers/ChargeRequestInterfaceQueryWorker.cs
  5. 16
      src/Shentun.Peis.HttpApi.Host/Schedulers/ImportLisResultInterfaceWorker.cs
  6. 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)
{

4
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)
{

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))
{

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

@ -40,6 +40,7 @@ namespace Shentun.Peis.Schedulers
Logger.LogInformation("Executed ChargeRequestInterfaceQueryWorker..!");
return Task.CompletedTask;
}
[DisableConcurrentExecution(timeoutInSeconds: 10 * 60)]
public void DoWork(Guid interfaceId)
{
if (_isRunning) return;
@ -56,7 +57,7 @@ namespace Shentun.Peis.Schedulers
if (thirdInterfaceDto == null)
{
_isRunning = false;
return ;
return;
}
var parmValue = thirdInterfaceDto.ParmValue;
@ -71,13 +72,13 @@ 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);
}
@ -87,7 +88,7 @@ namespace Shentun.Peis.Schedulers
Logger.LogError("Executed ChargeRequestInterfaceQueryWorker Error" + ex.Message);
}
_isRunning = false;
return ;
return;
}
}

16
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,10 +22,13 @@ 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;
lock (lockObject)
{
_isRunning = true;
try
{
@ -57,7 +61,7 @@ namespace Shentun.Peis.Schedulers
var className = interfaceConfig.GetSection("Interface").GetSection("ClassName").Value;
var funName = "DoWork";
//object[] objects = new object[] { chargeRequestPlugInsInput };
await ReflectionHelper.InvokeAsync(assemblyName, className, parmValue, funName);
ReflectionHelper.Invoke(assemblyName, className, parmValue, funName);
}
@ -68,7 +72,7 @@ namespace Shentun.Peis.Schedulers
}
_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