S5InventoryDailyReconJob.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Admin.NET.Plugin.AiDOP.MaterialWarehouse;
  2. using Furion.Schedule;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using Microsoft.Extensions.Logging;
  5. namespace Admin.NET.Plugin.AiDOP.Job;
  6. /// <summary>S5 库存日终对账:每天 01:15,165 vs mdp_std_inventory。</summary>
  7. [JobDetail("job_s5_inventory_daily_recon",
  8. Description = "S5库存日终对账",
  9. GroupName = "default", Concurrent = false)]
  10. [Cron("15 1 * * *",
  11. TriggerId = "trigger_s5_inventory_daily_recon",
  12. Description = "每天01:15")]
  13. public sealed class S5InventoryDailyReconJob : IJob
  14. {
  15. private readonly IServiceScopeFactory _scopeFactory;
  16. private readonly ILogger _logger;
  17. public S5InventoryDailyReconJob(IServiceScopeFactory scopeFactory, ILoggerFactory loggerFactory)
  18. {
  19. _scopeFactory = scopeFactory;
  20. _logger = loggerFactory.CreateLogger(nameof(S5InventoryDailyReconJob));
  21. }
  22. public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
  23. {
  24. using var scope = _scopeFactory.CreateScope();
  25. var recon = scope.ServiceProvider.GetRequiredService<InventoryReconService>();
  26. try
  27. {
  28. var diffs = await recon.RunDailyReconAsync(stoppingToken);
  29. _logger.LogInformation("[S5InventoryDailyReconJob] done diffs={Diffs}", diffs);
  30. }
  31. catch (OperationCanceledException) when (stoppingToken.IsCancellationRequested)
  32. {
  33. throw;
  34. }
  35. catch (Exception ex)
  36. {
  37. _logger.LogError(ex, "[S5InventoryDailyReconJob] failed");
  38. }
  39. }
  40. }