using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Utils;
namespace PMS.NetCore.Service
{
public class QuartzTask
{
///
/// 运行定时任务
///
///
public async Task RunAsync()
{
NlogHelper.quartzLogger.Info("开始 RunAsync");
StdSchedulerFactory factory = new StdSchedulerFactory();
//通过工场类获得调度器
var _scheduler = await factory.GetScheduler();
//开启调度器
await _scheduler.Start();
#region 昆山项目使用定时任务
if (AppSettingsHelper.Configuration["company"]?.ToString() == "kunshan")
{
#region 执行发短信作业 注释掉,暂不执行
////创建触发器(也叫时间策略)
//var trigger = TriggerBuilder.Create()
// .StartNow()
// //.WithSimpleSchedule(x => x.WithIntervalInMinutes(2).RepeatForever())//每10秒执行一次
// //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
// .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
// .Build();
////创建作业实例
////Jobs即我们需要执行的作业
//var jobDetailkunshan = JobBuilder.Create()
// .WithIdentity("Myjobkunshan", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
// .Build();
////将触发器和作业任务绑定到调度器中
//await _scheduler.ScheduleJob(jobDetailkunshan, trigger);
#endregion
}
#endregion
#region 中浩德系统使用定时任务
if (AppSettingsHelper.Configuration["company"]?.ToString() == "zhonghaode")
{
#region 执行进度报告发邮件作业
////创建触发器(也叫时间策略)
var trigger = TriggerBuilder.Create()
.StartNow()
//.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
//.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
.Build();
//创建作业实例
//Jobs即我们需要执行的作业
var jobDetail = JobBuilder.Create()
.WithIdentity("Myjob", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
.Build();
//将触发器和作业任务绑定到调度器中
await _scheduler.ScheduleJob(jobDetail, trigger);
#endregion
#region 执行给王帅发邮件作业
//创建触发器(也叫时间策略)
var triggerWang = TriggerBuilder.Create()
.StartNow()
//.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
//.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
.Build();
//创建作业实例
//Jobs即我们需要执行的作业
var jobDetailWang = JobBuilder.Create()
.WithIdentity("MyjobWang", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
.Build();
//将触发器和作业任务绑定到调度器中
await _scheduler.ScheduleJob(jobDetailWang, triggerWang);
#endregion
}
#endregion
#region 物业缴费订单定时处理任务
////创建触发器(也叫时间策略)
var triggerBywy = TriggerBuilder.Create()
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(3).RepeatForever())//每3秒执行一次
.Build();
//创建作业实例
//Jobs即我们需要执行的作业
var jobDetailBywy = JobBuilder.Create()
.WithIdentity("Myjobwy", "group")//我们给这个作业取了个“Myjobwy”的名字,并取了个组名为“group”
.Build();
//将触发器和作业任务绑定到调度器中
await _scheduler.ScheduleJob(jobDetailBywy, triggerBywy);
#endregion
}
}
}