using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Quartz;
using System.Collections.Generic;
using System.Threading.Tasks;
using Utility.Entity;
using Utility;
namespace Wms.Controllers
{
///
/// 任务调度
///
[Route("api/[controller]/[Action]")]
[EnableCors("AllowSameDomain")] //允许跨域
[ServiceFilter(typeof(ApiResponseActionFilter))]
public class JobController : ControllerBase
{
private SchedulerCenter scheduler;
///
/// 任务调度对象
///
///
public JobController(SchedulerCenter schedulerCenter)
{
scheduler = schedulerCenter;
}
///
/// 添加任务
///
///
///
[HttpPost]
public async Task AddJob([FromBody] ScheduleEntity entity)
{
if (entity.TriggerType == TriggerTypeEnum.Cron &&
entity.Cron == "* * * * * ?")
{
return "不允许过频繁执行任务!";
}
return await scheduler.AddScheduleJobAsync(entity);
}
///
/// 暂停任务
///
///
[HttpPost]
public async Task StopJob([FromBody] JobKey job)
{
return await scheduler.StopOrDelScheduleJobAsync(job.Group, job.Name);
}
///
/// 删除任务
///
///
[HttpPost]
public async Task RemoveJob([FromBody] JobKey job)
{
return await scheduler.StopOrDelScheduleJobAsync(job.Group, job.Name, true);
}
///
/// 恢复运行暂停的任务
///
///
[HttpPost]
public async Task ResumeJob([FromBody] JobKey job)
{
return await scheduler.ResumeJobAsync(job.Group, job.Name);
}
///
/// 查询任务
///
///
[HttpPost]
public async Task QueryJob([FromBody] JobKey job)
{
return await scheduler.QueryJobAsync(job.Group, job.Name);
}
///
/// 修改
///
///
///
[HttpPost]
public async Task ModifyJob([FromBody] ModifyJobInput entity)
{
var jobKey = new JobKey(entity.OldScheduleEntity.JobName, entity.OldScheduleEntity.JobGroup);
var runNumber = await scheduler.GetRunNumberAsync(jobKey);
await scheduler.StopOrDelScheduleJobAsync(entity.OldScheduleEntity.JobGroup, entity.OldScheduleEntity.JobName, true);
await scheduler.AddScheduleJobAsync(entity.NewScheduleEntity, runNumber);
return "修改计划任务成功!";
}
///
/// 立即执行
///
///
///
[HttpPost]
public async Task TriggerJob([FromBody] JobKey job)
{
await scheduler.TriggerJobAsync(job);
return true;
}
///
/// 获取job日志
///
///
///
[HttpPost]
public async Task> GetJobLogs([FromBody] JobKey jobKey)
{
var logs = await scheduler.GetJobLogsAsync(jobKey);
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()
{
return await scheduler.GetAllJobAsync();
}
///
/// 获取所有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);
//}
}
}