2023-06-04 16:43:35 +08:00
|
|
|
|
using Quartz.Spi;
|
2023-06-13 12:09:32 +08:00
|
|
|
|
using SqlSugar.IOC;
|
|
|
|
|
|
using ZR.Model.System;
|
2021-08-23 16:57:25 +08:00
|
|
|
|
using ZR.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
namespace ZR.Admin.WebApi.Extensions
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 定时任务扩展方法
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static class TasksExtension
|
|
|
|
|
|
{
|
2023-06-04 16:43:35 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 注册任务
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="services"></param>
|
|
|
|
|
|
/// <exception cref="ArgumentNullException"></exception>
|
2021-08-23 16:57:25 +08:00
|
|
|
|
public static void AddTaskSchedulers(this IServiceCollection services)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (services == null) throw new ArgumentNullException(nameof(services));
|
|
|
|
|
|
|
|
|
|
|
|
//添加Quartz服务
|
|
|
|
|
|
services.AddSingleton<IJobFactory, JobFactory>();
|
|
|
|
|
|
services.AddTransient<ITaskSchedulerServer, TaskSchedulerServer>();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 程序启动后添加任务计划
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="app"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public static IApplicationBuilder UseAddTaskSchedulers(this IApplicationBuilder app)
|
|
|
|
|
|
{
|
2022-07-01 16:29:02 +08:00
|
|
|
|
ITaskSchedulerServer _schedulerServer = app.ApplicationServices.GetRequiredService<ITaskSchedulerServer>();
|
2021-08-23 16:57:25 +08:00
|
|
|
|
|
2023-06-13 12:09:32 +08:00
|
|
|
|
var tasks = DbScoped.SugarScope.Queryable<SysTasks>()
|
|
|
|
|
|
.Where(m => m.IsStart == 1).ToListAsync();
|
2021-08-23 16:57:25 +08:00
|
|
|
|
|
|
|
|
|
|
//程序启动后注册所有定时任务
|
2023-06-13 12:09:32 +08:00
|
|
|
|
foreach (var task in tasks.Result)
|
2021-08-23 16:57:25 +08:00
|
|
|
|
{
|
2022-03-17 21:24:40 +08:00
|
|
|
|
var result = _schedulerServer.AddTaskScheduleAsync(task);
|
|
|
|
|
|
if (result.Result.Code == 200)
|
|
|
|
|
|
{
|
|
|
|
|
|
Console.WriteLine($"注册任务[{task.Name}]ID:{task.ID}成功");
|
|
|
|
|
|
}
|
2021-08-23 16:57:25 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return app;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|