123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using Quartz;
- using System;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using YiSha.Business.AutoJob.IBusiness;
- using YiSha.Business.AutoJob.IService;
- using YiSha.Entity.SystemManage;
- using YiSha.IBusiness.SystemManage;
- using YiSha.Util;
- using YiSha.Util.Model;
- namespace YiSha.Business.AutoJob.Service
- {
- public class JobCenterService : IJobCenterService
- {
- private IAutoJobBLL _autoJobBLL;
- private IJobSchedulerBusiness _jobSchedulerBusiness;
- public JobCenterService(IAutoJobBLL autoJobBLL, IJobSchedulerBusiness jobSchedulerBusiness)
- {
- _autoJobBLL = autoJobBLL;
- _jobSchedulerBusiness = jobSchedulerBusiness;
- }
- public void Start()
- {
- Task.Run(async () =>
- {
- TData<List<AutoJobEntity>> obj = await _autoJobBLL.GetListPartial(null);
- if (obj.Success)
- {
- AddScheduleJob(obj.Data);
- }
- });
- }
- #region 添加任务计划
- /// <summary>
- /// 添加任务计划
- /// </summary>
- /// <returns></returns>
- private void AddScheduleJob(List<AutoJobEntity> entityList)
- {
- try
- {
- foreach (AutoJobEntity entity in entityList)
- {
- if (entity.StartTime == null)
- {
- entity.StartTime = DateTime.Now;
- }
- DateTimeOffset starRunTime = DateBuilder.NextGivenSecondDate(entity.StartTime, 1);
- if (entity.EndTime == null)
- {
- entity.EndTime = DateTime.MaxValue.AddDays(-1);
- }
- DateTimeOffset endRunTime = DateBuilder.NextGivenSecondDate(entity.EndTime, 1);
- var scheduler = _jobSchedulerBusiness.GetScheduler();
- IJobDetail job = JobBuilder.Create<JobExecuteService>().WithIdentity(entity.JobName, entity.JobGroupName).Build();
- job.JobDataMap.Add("Id", entity.Id);
- ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
- .StartAt(starRunTime)
- .EndAt(endRunTime)
- .WithIdentity(entity.JobName, entity.JobGroupName)
- .WithCronSchedule(entity.CronExpression)
- .Build();
- scheduler.ScheduleJob(job, trigger);
- scheduler.Start();
- }
- }
- catch (Exception ex)
- {
- LogHelper.Error(ex);
- }
- }
- #endregion
- #region 添加任务计划
- /// <summary>
- /// 添加任务计划
- /// </summary>
- /// <returns></returns>
- public void ClearScheduleJob()
- {
- try
- {
- _jobSchedulerBusiness.GetScheduler().Clear();
- }
- catch (Exception ex)
- {
- LogHelper.Error(ex);
- }
- }
- #endregion
- }
- }
|