| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using Admin.NET.Plugin.AiDOP.ProcurementExecution;
- using Furion.Schedule;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Logging;
- using System.Text.Json;
- namespace Admin.NET.Plugin.AiDOP.Job;
- /// <summary>
- /// S4 采购执行 MDP 同步与转换定时任务。
- /// </summary>
- [JobDetail("job_s4_mdp_sync_transform", Description = "S4 MDP同步与标准化转换", GroupName = "default", Concurrent = false)]
- [Period(3600000, TriggerId = "trigger_s4_mdp_sync_transform", Description = "每60分钟执行")]
- public class S4MdpSyncTransformJob : IJob
- {
- private readonly IServiceScopeFactory _scopeFactory;
- private readonly ILogger _logger;
- public S4MdpSyncTransformJob(IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory)
- {
- _scopeFactory = scopeFactory;
- _logger = loggerFactory.CreateLogger(nameof(S4MdpSyncTransformJob));
- }
- public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
- {
- using var scope = _scopeFactory.CreateScope();
- var service = scope.ServiceProvider.GetRequiredService<S4MdpSyncTransformService>();
- try
- {
- var result = await service.RunFullAsync(stoppingToken);
- _logger.LogInformation("S4MdpSyncTransformJob 完成 {Payload}", JsonSerializer.Serialize(result));
- }
- catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested)
- {
- _logger.LogInformation("S4MdpSyncTransformJob 收到停止信号,结束本轮转换");
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "S4MdpSyncTransformJob 执行失败");
- }
- }
- }
|