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.

92 lines
3.4 KiB

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