| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using Admin.NET.Plugin.AiDOP.FinishedWarehouse;
- using Furion.Schedule;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Logging;
- using System.Text.Json;
- namespace Admin.NET.Plugin.AiDOP.Job;
- /// <summary>
- /// S7 成品仓储 T8 KPI 自动跑批任务。
- /// 每日 02:00 / 07:00 / 12:00 / 17:00 / 22:00 共 5 次(间隔 5h;22:00 是当天最后一次跑批,22:01~01:59 安静期)。
- /// 调用 S7MdpSyncTransformService.RunFullAsync(triggerType="AUTO");失败通知由 service 内部 MarkTransformRunFailedAsync 触发。
- /// </summary>
- [JobDetail("job_s7_t8_kpi_refresh",
- Description = "S7 T8 KPI 自动跑批(5 次/天:02/07/12/17/22)",
- GroupName = "default",
- Concurrent = false)]
- [Cron("0 2,7,12,17,22 * * *",
- TriggerId = "trigger_s7_t8_kpi_refresh",
- Description = "每日 02:00/07:00/12:00/17:00/22:00 触发(5 字段:分 时 日 月 周,默认 CronStringFormat.Default)")]
- public class S7MdpRefreshJob : IJob
- {
- private readonly IServiceScopeFactory _scopeFactory;
- private readonly ILogger _logger;
- public S7MdpRefreshJob(IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory)
- {
- _scopeFactory = scopeFactory;
- _logger = loggerFactory.CreateLogger(nameof(S7MdpRefreshJob));
- }
- public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
- {
- using var scope = _scopeFactory.CreateScope();
- var service = scope.ServiceProvider.GetRequiredService<S7MdpSyncTransformService>();
- try
- {
- var result = await service.RunFullAsync(stoppingToken, "AUTO");
- _logger.LogInformation("S7MdpRefreshJob 完成 {Payload}", JsonSerializer.Serialize(result));
- }
- catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested)
- {
- _logger.LogInformation("S7MdpRefreshJob 收到停止信号,结束本轮");
- }
- catch (Exception ex)
- {
- // 失败通知由 service 内部 MarkTransformRunFailedAsync 触发;此处仅记录 Job 层失败
- _logger.LogError(ex, "S7MdpRefreshJob 执行失败");
- }
- }
- }
|