/// <summary>
        /// 更新任务通过盘点计划(已有同样的任务的时候)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="trigger"></param>
        /// <param name="groupName"></param>
        /// <param name="jobDetailName"></param>
        public async Task SchedulerUpdateByPlan(InventoryPlan inventoryPlan)
        {
            if (Scheduler == null)
            {
                CreateScheduler();
            }

            var triggerKey = GetTriggerKeyByPlan(inventoryPlan);

            var trigger = (ICronTrigger)await Scheduler.GetTrigger(triggerKey);

            var currentCron = QuartzUtils.GetQuartzCron(inventoryPlan);

            //处理是否更新任务的定时时间
            if (trigger.CronExpressionString != currentCron)
            {
                var triggerNew = TriggerBuilder.Create()
                                 .WithIdentity(triggerKey.Name, triggerKey.Group)
                                 .ForJob(trigger.JobKey)
                                 .WithCronSchedule(currentCron)
                                 .Build();
                await Scheduler.RescheduleJob(trigger.Key, triggerNew);
            }


            //处理是否更新任务的执行状态
            TriggerState triggerState = await Scheduler.GetTriggerState(triggerKey);

            switch (triggerState)
            {
            case TriggerState.Normal:

                if (!inventoryPlan.Enabled)
                {
                    await Scheduler.PauseTrigger(triggerKey);
                }

                break;

            case TriggerState.Paused:

                if (inventoryPlan.Enabled)
                {
                    await Scheduler.ResumeTrigger(triggerKey);
                }

                break;

            //如果处于其他状态,暂不进行任何处理
            default:
                LogUtils.Error($"{triggerKey.Name}定时任务更新时,原定时任务出现其他状态{triggerState.ToString()}");
                break;
            }
        }
 public override void Up()
 {
     QuartzUtils.AddQuartzIndexes(x => Sql(x));
 }
 public override void Down()
 {
     QuartzUtils.RollbackQuartzIndexes(x => Sql(x));
 }
        /// <summary>
        /// 开始任务通过盘点计划
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="trigger"></param>
        /// <param name="groupName"></param>
        /// <param name="jobDetailName"></param>
        public async Task SchedulerStartByPlan(InventoryPlan inventoryPlan)
        {
            if (Scheduler == null)
            {
                CreateScheduler();
            }

            var currentTrigger = CustomizeTrigger.GetExecuteInventoryPlanTrigger(inventoryPlan.id, QuartzUtils.GetQuartzCron(inventoryPlan));

            IJobDetail jobDetail = JobBuilder.Create <ExecuteInventoryPlanJoB>().WithIdentity(inventoryPlan.id, GroupName.ExecuteInventoryPlan.ToString()).Build();
            //将任务与触发器添加到调度器中
            await Scheduler.ScheduleJob(jobDetail, currentTrigger);

            //开始执行
            await Scheduler.Start();
        }