You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
3.8 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using Microsoft.Extensions.Configuration;
  2. using Microsoft.Extensions.Logging;
  3. using Shentun.Peis.ThirdInterfaces;
  4. using Shentun.Utilities;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. using Volo.Abp.BackgroundWorkers.Hangfire;
  12. namespace Shentun.Peis.Schedulers
  13. {
  14. public interface IImportPacsResultInterfaceWorker
  15. {
  16. public void DoWork(Guid interfaceId);
  17. public void DoWork();
  18. }
  19. public class ImportPacsResultInterfaceWorker : ThirdInterfaceWorkerBase, IImportPacsResultInterfaceWorker
  20. {
  21. private static long i;
  22. private static bool _isRunning = false;
  23. private static readonly object lockObject = new object();
  24. private readonly IConfiguration _configuration;
  25. public ImportPacsResultInterfaceWorker(IConfiguration configuration)
  26. {
  27. _configuration = configuration;
  28. }
  29. public virtual void DoWork(Guid interfaceId)
  30. {
  31. if (_isRunning) return;
  32. //lock (lockObject)
  33. //{
  34. _isRunning = true;
  35. try
  36. {
  37. var backJobTypeIds = _configuration.GetSection("BackJobTypeId").Value;
  38. //Logger.LogInformation("Executed" + GetType().Name + "..!");
  39. var appServiceHelper = new AppServiceHelper();
  40. //appServiceHelper.Login();
  41. var thirdInterfaceDtos = appServiceHelper.CallAppService<object, List<ThirdInterfaceDto>>("api/app/ThirdInterface/GetList", null);
  42. var thirdInterfaceDto = thirdInterfaceDtos.Where(o => o.Id == interfaceId).FirstOrDefault();
  43. if (thirdInterfaceDto == null)
  44. {
  45. _isRunning = false;
  46. return;
  47. }
  48. if (!backJobTypeIds.Contains(thirdInterfaceDto.ThirdInterfaceType))
  49. {
  50. _isRunning = false;
  51. return;
  52. }
  53. if (thirdInterfaceDto.IsActive != 'Y')
  54. {
  55. _isRunning = false;
  56. return;
  57. }
  58. var parmValue = thirdInterfaceDto.ParmValue;
  59. if (!string.IsNullOrWhiteSpace(parmValue))
  60. {
  61. var configurationBuilder = new ConfigurationBuilder()
  62. .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  63. var interfaceConfig = configurationBuilder.Build();
  64. var isActive = interfaceConfig.GetSection("Interface").GetSection("Scheduler")
  65. .GetSection("IsActive").Value;
  66. if (isActive != "Y")
  67. {
  68. _isRunning = false;
  69. return;
  70. }
  71. var assemblyName = interfaceConfig.GetSection("Interface").GetSection("AssemblyName").Value;
  72. var className = interfaceConfig.GetSection("Interface").GetSection("ClassName").Value;
  73. var funName = "DoWork";
  74. object[] classConstructorArg = new object[] { thirdInterfaceDto.Id };
  75. ReflectionHelper.Invoke(assemblyName, className, classConstructorArg, funName);
  76. }
  77. }
  78. catch (Exception ex)
  79. {
  80. _isRunning = false;
  81. Logger.LogError("Executed " + GetType().Name + " Error" + ex.Message);
  82. }
  83. _isRunning = false;
  84. return;
  85. //}
  86. }
  87. public void DoWork()
  88. {
  89. throw new NotImplementedException();
  90. }
  91. public override Task DoWorkAsync(CancellationToken cancellationToken = default)
  92. {
  93. throw new NotImplementedException();
  94. }
  95. }
  96. }