S2MdpSyncTransformJob.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Admin.NET.Plugin.AiDOP.DataPlatform.MdpRebuild;
  2. using Furion.Schedule;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using Microsoft.Extensions.Logging;
  5. using System.Text.Json;
  6. namespace Admin.NET.Plugin.AiDOP.Job;
  7. [JobDetail("job_s2_mdp_sync_transform", Description = "S2 MDP同步与KPI计算(含工单排程域原子聚合层)", GroupName = "default", Concurrent = false)]
  8. [Period(3600000, TriggerId = "trigger_s2_mdp_sync_transform", Description = "每60分钟执行")]
  9. public class S2MdpSyncTransformJob : IJob
  10. {
  11. private readonly IServiceScopeFactory _scopeFactory;
  12. private readonly ILogger _logger;
  13. public S2MdpSyncTransformJob(IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory)
  14. {
  15. _scopeFactory = scopeFactory;
  16. _logger = loggerFactory.CreateLogger(nameof(S2MdpSyncTransformJob));
  17. }
  18. public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
  19. {
  20. if (!AidopJobGate.ShouldRun(nameof(S2MdpSyncTransformJob), _logger)) return;
  21. using var scope = _scopeFactory.CreateScope();
  22. try
  23. {
  24. var payload = await ModuleRebuildJobRunner.EnqueueEnabledScopesAsync(scope.ServiceProvider, "S2", "AUTO", stoppingToken, _logger);
  25. _logger.LogInformation("S2MdpSyncTransformJob 入队 {Payload}", JsonSerializer.Serialize(payload));
  26. }
  27. catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested)
  28. {
  29. _logger.LogInformation("S2MdpSyncTransformJob 收到停止信号,结束本轮转换");
  30. }
  31. catch (Exception ex)
  32. {
  33. _logger.LogError(ex, "S2MdpSyncTransformJob 执行失败");
  34. }
  35. }
  36. }