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.

89 lines
3.4 KiB

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