TimeWorkService.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using Abp.Dependency;
  2. using Quartz;
  3. using Quartz.Impl;
  4. using ToolLibrary.LogHelper;
  5. using Yunda.ISAS.DataMonitoringServer.DataAnalysis;
  6. using Yunda.ISAS.DataMonitoringServer.DataAnalysis.DataCollection;
  7. using Yunda.ISAS.DataMonitoringServer.DataAnalysis.Helper;
  8. using Yunda.ISAS.DataMonitoringServer.DataAnalysis.Model;
  9. using Yunda.ISAS.DataMonitoringServer.DataCenter;
  10. using Yunda.ISAS.DataMonitoringServer.WebSocket;
  11. namespace Yunda.ISAS.DataMonitoringServer
  12. {
  13. public class TimeWorkService : ISingletonDependency
  14. {
  15. public static RedisDataRepository _redisDataRepository;
  16. public static WebApiRequest _webApiRequest;
  17. public static RunningDataCache _runningDataCache;
  18. public static WebSocketServer _webSocketServer;
  19. public static CameraDataCenter _cameraDataCenter;
  20. public static ConfigurationHepler _configurationHepler;
  21. public static TeleCommandDataSendTask _teleCommandDataSendTask;
  22. public TimeWorkService(
  23. RedisDataRepository redisDataRepository,
  24. WebApiRequest webApiRequest,
  25. RunningDataCache runningDataCache,
  26. WebSocketServer webSocketController,
  27. CameraDataCenter cameraDataCenter,
  28. TeleCommandDataSendTask teleCommandDataSendTask,
  29. ConfigurationHepler configurationHepler
  30. )
  31. {
  32. _redisDataRepository = redisDataRepository;
  33. _webApiRequest = webApiRequest;
  34. _runningDataCache = runningDataCache;
  35. _webSocketServer = webSocketController;
  36. _cameraDataCenter = cameraDataCenter;
  37. _configurationHepler = configurationHepler;
  38. _teleCommandDataSendTask = teleCommandDataSendTask;
  39. //FixedTimeTaskAsync<SafetyStateFixedTimeJob>(15); //布防撤防
  40. //FixedTimeTaskAsync<CamAuthFixedTimeJob>(10); // 摄像机权限释放
  41. //FixedTimeTaskAsync<DownloadAndTranscodeLinkResult>(60 * 5);//联动录像下载
  42. //FixedTimeTaskAsync<AlarmQueueTimeJob>(60);//报警队列主动推送
  43. //FixedTimeTaskAsync<TelecommandPlanJob>(30);//遥控计划定时任务
  44. //FixedTimeTaskAsync<LightingControlTimeJob>(120);
  45. }
  46. /// <summary>
  47. /// 定时任务开启
  48. /// </summary>
  49. /// <typeparam name="T">执行内容</typeparam>
  50. /// <param name="intval">执行间隔</param>
  51. private async void FixedTimeTaskAsync<T>(int intval) where T : IJob
  52. {
  53. StdSchedulerFactory factory = new StdSchedulerFactory();
  54. // get a scheduler
  55. IScheduler scheduler = await factory.GetScheduler();
  56. await scheduler.Start();
  57. Guid guid = Guid.NewGuid();
  58. IJobDetail job = JobBuilder.Create<T>()
  59. .WithIdentity(guid.ToString())
  60. .Build();
  61. guid = Guid.NewGuid();
  62. //定义执行时间间隔
  63. ITrigger trigger = TriggerBuilder.Create()
  64. .WithIdentity(guid.ToString())
  65. .StartNow()
  66. .WithSimpleSchedule(x => x
  67. .WithIntervalInSeconds(intval)
  68. .RepeatForever()
  69. )
  70. .Build();
  71. await scheduler.ScheduleJob(job, trigger);
  72. }
  73. /// <summary>
  74. /// 巡检灯光控制
  75. /// </summary>
  76. [DisallowConcurrentExecution]
  77. public class LightingControlTimeJob : IJob
  78. {
  79. public async Task Execute(IJobExecutionContext context)
  80. {
  81. try
  82. {
  83. var telecomands = _webApiRequest.GetLightingControlTelecommand(_configurationHepler.SubstationId);
  84. if (telecomands == null)
  85. {
  86. return;
  87. }
  88. foreach (var telecomand in telecomands)
  89. {
  90. var telecom = new TelecommandModel();
  91. ToolLibrary.MapValue.Map(telecomand, telecom);
  92. telecom.Value = telecomand.Value;
  93. _teleCommandDataSendTask.TelecommandTActionBlock.Post(new TelcommandDataModel()
  94. {
  95. Telecommand = telecom
  96. });
  97. }
  98. }
  99. catch (Exception ex)
  100. {
  101. Log4Helper.Error(this.GetType(), "定时布防撤防数据更新发生错误", ex);
  102. }
  103. }
  104. }
  105. }
  106. }