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 try
{ {
SyncChargeRequestFlagFromInterfaceAsync(chargeRequest.ChargeRequestId);
var result = SyncChargeRequestFlagFromInterfaceAsync(chargeRequest.ChargeRequestId);
} }
catch(Exception ex) catch(Exception ex)
{ {

6
src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs

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

2
src/Shentun.ColumnReferencePlugIns/PlugInsBase.cs

@ -117,7 +117,7 @@ namespace Shentun.Peis.PlugIns
public virtual Task DoWork() public virtual Task DoWork()
{ {
return Task.CompletedTask;
return Task.CompletedTask;
} }
public async Task<LoginOutDto> LoginAsync(string userId,string password) 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) foreach (var thirdInterfaceDto in thirdInterFaceForHostOutDto.Data)
{ {
if(thirdInterfaceDto.IsActive != 'Y')
{
continue;
}
var parmValue = thirdInterfaceDto.ParmValue; var parmValue = thirdInterfaceDto.ParmValue;
if (!string.IsNullOrWhiteSpace(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..!"); Logger.LogInformation("Executed ChargeRequestInterfaceQueryWorker..!");
return Task.CompletedTask; return Task.CompletedTask;
} }
[DisableConcurrentExecution(timeoutInSeconds: 10 * 60)]
public void DoWork(Guid interfaceId) public void DoWork(Guid interfaceId)
{ {
if (_isRunning) return; if (_isRunning) return;
lock (lockObject) lock (lockObject)
{ {
_isRunning = true; _isRunning = true;
try
{
try
{
Logger.LogInformation("Executed ChargeRequestInterfaceQueryWorker..!"); Logger.LogInformation("Executed ChargeRequestInterfaceQueryWorker..!");
var appServiceHelper = new AppServiceHelper(); var appServiceHelper = new AppServiceHelper();
appServiceHelper.Login(); appServiceHelper.Login();
var thirdInterFaceForHostOutDto = appServiceHelper.CallAppService<object, ThirdInterFaceForHostOutDto>("api/app/ThirdInterface/GetList", null); 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) if (thirdInterfaceDto == null)
{ {
_isRunning = false; _isRunning = false;
return ;
return;
} }
var parmValue = thirdInterfaceDto.ParmValue; var parmValue = thirdInterfaceDto.ParmValue;
@ -71,23 +72,23 @@ namespace Shentun.Peis.Schedulers
if (isActive != "Y") if (isActive != "Y")
{ {
_isRunning = false; _isRunning = false;
return ;
return;
} }
var assemblyName = interfaceConfig.GetSection("Interface").GetSection("AssemblyName").Value; var assemblyName = interfaceConfig.GetSection("Interface").GetSection("AssemblyName").Value;
var className = interfaceConfig.GetSection("Interface").GetSection("ClassName").Value; var className = interfaceConfig.GetSection("Interface").GetSection("ClassName").Value;
var funName = "DoWork"; var funName = "DoWork";
//object[] objects = new object[] { chargeRequestPlugInsInput }; //object[] objects = new object[] { chargeRequestPlugInsInput };
ReflectionHelper.InvokeAsync(assemblyName, className, parmValue, funName);
ReflectionHelper.Invoke(assemblyName, className, parmValue, funName);
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.LogError("Executed ChargeRequestInterfaceQueryWorker Error" + ex.Message); Logger.LogError("Executed ChargeRequestInterfaceQueryWorker Error" + ex.Message);
} }
_isRunning = false;
return ;
_isRunning = false;
return;
} }
} }
@ -99,7 +100,7 @@ namespace Shentun.Peis.Schedulers
_isRunning = true; _isRunning = true;
try try
{ {
} }
catch (Exception ex) 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 Microsoft.Extensions.Logging;
using Shentun.Utilities; using Shentun.Utilities;
using System; using System;
@ -12,7 +13,7 @@ namespace Shentun.Peis.Schedulers
{ {
public interface IImportLisResultInterfaceWorker public interface IImportLisResultInterfaceWorker
{ {
Task DoWork(Guid interfaceId);
public void DoWork(Guid interfaceId);
public void DoWork(); public void DoWork();
} }
public class ImportLisResultInterfaceWorker : HangfireBackgroundWorkerBase, IImportLisResultInterfaceWorker public class ImportLisResultInterfaceWorker : HangfireBackgroundWorkerBase, IImportLisResultInterfaceWorker
@ -21,54 +22,57 @@ namespace Shentun.Peis.Schedulers
private static long i; private static long i;
private static bool _isRunning = false; private static bool _isRunning = false;
private static readonly object lockObject = new object(); 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; 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; _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 };
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() public void DoWork()

20
src/Shentun.Utilities/ReflectionHelper.cs

@ -61,5 +61,25 @@ namespace Shentun.Utilities
} }
return ; 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