S3MdpSyncTransformJob.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Admin.NET.Plugin.AiDOP.Supply;
  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. /// <summary>
  8. /// S3 首批 MDP 同步与标准化转换定时任务。
  9. /// </summary>
  10. [JobDetail("job_s3_mdp_sync_transform", Description = "S3 MDP同步与标准化转换", GroupName = "default", Concurrent = false)]
  11. [Period(3600000, TriggerId = "trigger_s3_mdp_sync_transform", Description = "每60分钟执行")]
  12. public class S3MdpSyncTransformJob : IJob
  13. {
  14. private readonly IServiceScopeFactory _scopeFactory;
  15. private readonly ILogger _logger;
  16. public S3MdpSyncTransformJob(IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory)
  17. {
  18. _scopeFactory = scopeFactory;
  19. _logger = loggerFactory.CreateLogger(nameof(S3MdpSyncTransformJob));
  20. }
  21. public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
  22. {
  23. using var scope = _scopeFactory.CreateScope();
  24. var service = scope.ServiceProvider.GetRequiredService<S3MdpSyncTransformService>();
  25. try
  26. {
  27. var result = await service.RunFullAsync(stoppingToken);
  28. _logger.LogInformation("S3MdpSyncTransformJob 完成 {Payload}", JsonSerializer.Serialize(result));
  29. }
  30. catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested)
  31. {
  32. _logger.LogInformation("S3MdpSyncTransformJob 收到停止信号,结束本轮转换");
  33. }
  34. catch (Exception ex)
  35. {
  36. _logger.LogError(ex, "S3MdpSyncTransformJob 执行失败");
  37. }
  38. }
  39. }