Job_SqlExecute.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Infrastructure;
  2. using Infrastructure.Attribute;
  3. using Infrastructure.Extensions;
  4. using Quartz;
  5. using Quartz.Impl;
  6. using Quartz.Impl.Triggers;
  7. using SqlSugar.IOC;
  8. using System.Threading.Tasks;
  9. using ZR.ServiceCore.Services;
  10. namespace ZR.Tasks.TaskScheduler
  11. {
  12. [AppService(ServiceType = typeof(Job_SqlExecute), ServiceLifetime = LifeTime.Scoped)]
  13. public class Job_SqlExecute : JobBase, IJob
  14. {
  15. private readonly ISysTasksQzService tasksQzService;
  16. private readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
  17. public Job_SqlExecute(ISysTasksQzService tasksQzService)
  18. {
  19. this.tasksQzService = tasksQzService;
  20. }
  21. public async Task Execute(IJobExecutionContext context)
  22. {
  23. await ExecuteJob(context, async () => await Run(context));
  24. }
  25. public async Task Run(IJobExecutionContext context)
  26. {
  27. AbstractTrigger trigger = (context as JobExecutionContextImpl).Trigger as AbstractTrigger;
  28. var info = await tasksQzService.GetByIdAsync(trigger.JobName);
  29. if (info != null && info.SqlText.IsNotEmpty())
  30. {
  31. var result = DbScoped.SugarScope.Ado.ExecuteCommandWithGo(info.SqlText);
  32. logger.Info($"任务【{info.Name}】sql请求执行结果=" + result);
  33. }
  34. else
  35. {
  36. throw new CustomException($"任务{trigger?.JobName}执行失败,任务不存在");
  37. }
  38. }
  39. }
  40. }