예제 #1
0
        public async Task ResetCache()
        {
            var AllJobs = await Quartzservice.QueryAsync();

            memoryCache.Remove(QuartzHomeBase.JobCacheKey);
            memoryCache.Set(QuartzHomeBase.JobCacheKey, AllJobs);
        }
예제 #2
0
        protected async Task Submit()
        {
            formAlign = LabelAlign.Right;
            if (!demoForm.IsValid())
            {
                return;
            }
            bool result    = false;
            var  taskCount = await Quartzservice.CountAsync();

            if (taskCount > 15)
            {
                return;
            }
            var quartzOption = demoForm.GetValue <QuartzOptionDTO>();
            var quartzModel  = mapper.Map <QuartzModel>(quartzOption);

            quartzModel.LastRunTime = DateTime.Now;
            quartzModel.Describe ??= quartzOption.TaskName;

            if (Operation == Operation.Update)
            {
                if (quartzModel.Id == 1000 || quartzModel.Id == 1001)
                {
                    this.MessageService.Show($"默认任务不可修改 ", MessageType.Error);
                    return;
                }
                var          oldjob          = mapper.Map <QuartzOptionDTO>(Quartzservice.QueryById(quartzModel.Id));
                QuartzResult operationResult = null;
                if (oldjob != null)
                {
                    if (oldjob.TaskStatus != quartzOption.TaskStatus)
                    {
                        switch (quartzOption.TaskStatus)
                        {
                        case TriggerState.Normal:
                            operationResult = await schedulerFactory.Start(mapper.Map <QuartzOption>(oldjob));

                            break;

                        case TriggerState.Paused:
                            operationResult = await schedulerFactory.Pause(mapper.Map <QuartzOption> (oldjob));

                            break;

                        case TriggerState.Complete:
                        case TriggerState.Error:
                        case TriggerState.Blocked:
                        case TriggerState.None:
                            operationResult = await schedulerFactory.Remove(mapper.Map <QuartzOption>(oldjob));

                            break;

                        default:
                            throw new NotImplementedException(" unkown TriggerState");
                        }
                    }

                    result = await Quartzservice.UpdateAsync(quartzModel);

                    if (operationResult != null && operationResult.status)
                    {
                        this.MessageService.Show($"操作结果:{JsonConvert.SerializeObject(operationResult)} ");
                    }
                }
            }
            else
            {
                var AddJobResult = await schedulerFactory.AddJob(mapper.Map <QuartzOption>(quartzOption));

                if (!AddJobResult.status)
                {
                    this.MessageService.Show($"添加调度任务失败:{JsonConvert.SerializeObject(AddJobResult)} ");
                    return;
                }
                result = await Quartzservice.InsertAsync(quartzModel);

                if (!result)
                {
                    await schedulerFactory.Remove(mapper.Map <QuartzOption>(quartzOption));
                }
            }
            if (result)
            {
                await ResetCache();
            }
            this.MessageService.Show($"操作结果:{result} ");
            await DialogService.CloseDialogAsync(this, result);
        }