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 "不允许过频繁执行任务!";
}
throw Oops.Bah("测试异常");
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);
//}
}
}