S3MdpSyncTransformJob.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_s3_mdp_sync_transform", Description = "S3 MDP同步与标准化转换(含供应采购/仓储库存域原子聚合层)", GroupName = "default", Concurrent = false)]
  8. [Period(3600000, TriggerId = "trigger_s3_mdp_sync_transform", Description = "每60分钟执行")]
  9. public class S3MdpSyncTransformJob : IJob
  10. {
  11. private readonly IServiceScopeFactory _scopeFactory;
  12. private readonly ILogger _logger;
  13. public S3MdpSyncTransformJob(IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory)
  14. {
  15. _scopeFactory = scopeFactory;
  16. _logger = loggerFactory.CreateLogger(nameof(S3MdpSyncTransformJob));
  17. }
  18. public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
  19. {
  20. if (!AidopJobGate.ShouldRun(nameof(S3MdpSyncTransformJob), _logger)) return;
  21. using var scope = _scopeFactory.CreateScope();
  22. try
  23. {
  24. var payload = await ModuleRebuildJobRunner.EnqueueEnabledScopesAsync(scope.ServiceProvider, "S3", "AUTO", stoppingToken, _logger);
  25. _logger.LogInformation("S3MdpSyncTransformJob 入队 {Payload}", JsonSerializer.Serialize(payload));
  26. }
  27. catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested)
  28. {
  29. _logger.LogInformation("S3MdpSyncTransformJob 收到停止信号,结束本轮转换");
  30. }
  31. catch (Exception ex)
  32. {
  33. _logger.LogError(ex, "S3MdpSyncTransformJob 执行失败");
  34. }
  35. }
  36. }