using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Quartz; using System; using System.Collections.Generic; using System.Threading.Tasks; using Utility.Entity; using Utility; using Model.ModelVm; using Microsoft.AspNetCore.Authorization; namespace Wms.Controllers { /// /// 任务调度 /// [Route("api/[controller]/[action]")] [ApiController] [Authorize] [ServiceFilter(typeof(ApiResponseActionFilter))] public class JobController : ControllerBase { private SchedulerCenter scheduler; /// /// 任务调度对象 /// /// public JobController(SchedulerCenter schedulerCenter) { scheduler = schedulerCenter; } /// /// 添加任务 /// /// /// [HttpPost] public async Task AddJob(ScheduleEntity entity) { if (entity.TriggerType == TriggerTypeEnum.Cron && entity.Cron == "* * * * * ?") { return "不允许过频繁执行任务!"; } return await scheduler.AddScheduleJobAsync(entity); } /// /// 暂停任务 /// /// [HttpPost] public async Task StopJob(JobVm job) { return await scheduler.StopOrDelScheduleJobAsync(job.Group, job.Name); } /// /// 删除任务 /// /// [HttpPost] public async Task RemoveJob(JobVm job) { return await scheduler.StopOrDelScheduleJobAsync(job.Group, job.Name, true); } /// /// 恢复运行暂停的任务 /// /// [HttpPost] public async Task ResumeJob(JobVm job) { return await scheduler.ResumeJobAsync(job.Group, job.Name); } /// /// 查询任务 /// /// [HttpPost] public async Task QueryJob(JobVm job) { return await scheduler.QueryJobAsync(job.Group, job.Name); } /// /// 修改 /// /// /// [HttpPost] public async Task ModifyJob(ModifyJobInput entity) { var jobKey = new JobKey(entity.OldScheduleEntity.JobName, entity.OldScheduleEntity.JobGroup); long runNumber = 0; try { runNumber = await scheduler.GetRunNumberAsync(jobKey); } catch (Exception) { } await scheduler.StopOrDelScheduleJobAsync(entity.OldScheduleEntity.JobGroup, entity.OldScheduleEntity.JobName, true); await scheduler.AddScheduleJobAsync(entity.NewScheduleEntity, runNumber); return "修改计划任务成功!"; } /// /// 立即执行 /// /// /// [HttpPost] public async Task TriggerJob(JobVm job) { JobKey modKey = new JobKey(job.Name, job.Group); await scheduler.TriggerJobAsync(modKey); return true; } /// /// 获取job日志 /// /// /// [HttpPost] public async Task> GetJobLogs(JobVm job) { JobKey modKey = new JobKey(job.Name, job.Group); var logs = await scheduler.GetJobLogsAsync(modKey); logs?.Reverse(); return logs; } /// /// 启动调度 /// /// [HttpGet] public async Task StartSchedule() { return await scheduler.StartScheduleAsync(); } /// /// 停止调度 /// /// [HttpGet] public async Task StopSchedule() { return await scheduler.StopScheduleAsync(); } /// /// 获取所有任务 /// /// [HttpGet] public async Task> GetAllJob() { var list = await scheduler.GetAllJobAsync(); var listJob = new List(); foreach (var mod in list) { mod.JobInfoList.ForEach(s => s.GroupName = mod.GroupName); listJob.AddRange(mod.JobInfoList); } return listJob; } /// /// 获取所有Job信息(简要信息 - 刷新数据的时候使用) /// /// [HttpGet] public async Task> GetAllJobBriefInfo() { return await scheduler.GetAllJobBriefInfoAsync(); } ///// ///// 移除异常信息 ///// ///// ///// //[HttpPost] //public async Task RemoveErrLog([FromBody] JobKey jobKey) //{ // return await scheduler.RemoveErrLog(jobKey.Group, jobKey.Name); //} } }