From 1f973fedfaf3ffe2ba84e3bcf22a214b35c72fa6 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Wed, 8 May 2024 10:51:58 +0800 Subject: [PATCH] =?UTF-8?q?LIS=E7=BB=93=E6=9E=9C=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChargeRequestPlugInsGem.cs | 2 +- .../LisResultImportPlugInsBase.cs | 6 +- .../PlugInsBase.cs | 2 +- .../PeisHttpApiHostModule.cs | 4 + .../ChargeRequestInterfaceQueryWorker.cs | 21 ++--- .../ImportLisResultInterfaceWorker.cs | 82 ++++++++++--------- src/Shentun.Utilities/ReflectionHelper.cs | 20 +++++ 7 files changed, 83 insertions(+), 54 deletions(-) diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs index 238eb86..1c2b771 100644 --- a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs +++ b/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) { diff --git a/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs b/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs index 9ace07e..8835880 100644 --- a/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs +++ b/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 LoginAsync() diff --git a/src/Shentun.ColumnReferencePlugIns/PlugInsBase.cs b/src/Shentun.ColumnReferencePlugIns/PlugInsBase.cs index e9a8958..4a65ba8 100644 --- a/src/Shentun.ColumnReferencePlugIns/PlugInsBase.cs +++ b/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 LoginAsync(string userId,string password) { diff --git a/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs b/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs index 9a68b73..ff4797c 100644 --- a/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs +++ b/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)) { diff --git a/src/Shentun.Peis.HttpApi.Host/Schedulers/ChargeRequestInterfaceQueryWorker.cs b/src/Shentun.Peis.HttpApi.Host/Schedulers/ChargeRequestInterfaceQueryWorker.cs index 84877ce..ebd1da7 100644 --- a/src/Shentun.Peis.HttpApi.Host/Schedulers/ChargeRequestInterfaceQueryWorker.cs +++ b/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("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) diff --git a/src/Shentun.Peis.HttpApi.Host/Schedulers/ImportLisResultInterfaceWorker.cs b/src/Shentun.Peis.HttpApi.Host/Schedulers/ImportLisResultInterfaceWorker.cs index e764277..156a89f 100644 --- a/src/Shentun.Peis.HttpApi.Host/Schedulers/ImportLisResultInterfaceWorker.cs +++ b/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("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("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() diff --git a/src/Shentun.Utilities/ReflectionHelper.cs b/src/Shentun.Utilities/ReflectionHelper.cs index a3be94c..26b3e4f 100644 --- a/src/Shentun.Utilities/ReflectionHelper.cs +++ b/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; + } } }