package com.stylefeng.guns.modular.system.controller.system;
|
|
import com.stylefeng.guns.core.base.controller.BaseController;
|
import com.stylefeng.guns.modular.system.service.IMyJobService;
|
import com.stylefeng.guns.modular.system.warpper.MyJobWrapper;
|
import org.quartz.Scheduler;
|
import org.quartz.SchedulerException;
|
import org.quartz.Trigger;
|
import org.quartz.TriggerKey;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import java.util.List;
|
import java.util.Map;
|
|
|
@Controller
|
@RequestMapping(value = "/job")
|
public class MyJobController extends BaseController {
|
|
private String PREFIX = "/quartz/";
|
|
//加入Qulifier注解,通过名称注入bean
|
@Autowired
|
//@Qualifier("Scheduler")
|
private Scheduler scheduler;
|
|
@Autowired
|
private IMyJobService myJobService;
|
|
/**
|
* 跳转到任务调度首页
|
*/
|
@RequestMapping("")
|
public String index() {
|
return PREFIX + "job.html";
|
}
|
|
/**
|
* 跳转到任务调度添加页面
|
*/
|
@RequestMapping("/job_add")
|
public String jobAdd() {
|
return PREFIX + "job_add.html";
|
}
|
|
/**
|
* 跳转到任务调度编辑页面
|
*/
|
@RequestMapping("/job_edit")
|
public String jobEdit(@RequestParam(value = "description") String description,
|
@RequestParam(value = "jobClassName") String jobClassName,
|
@RequestParam(value = "jobGroupName") String jobGroupName,
|
@RequestParam(value = "cronExpression") String cronExpression,
|
Model model) {
|
model.addAttribute("description", description);
|
model.addAttribute("jobClassName", jobClassName);
|
model.addAttribute("jobGroup", jobGroupName);
|
model.addAttribute("cronExpression", cronExpression);
|
return PREFIX + "job_edit.html";
|
}
|
|
/**
|
* 查询任务列表,使用客户端分页
|
*
|
* @return
|
*/
|
@ResponseBody
|
@RequestMapping(value = "/list")
|
public Object queryJob() {
|
List<Map<String, Object>> list = myJobService.findList();
|
list.forEach(item -> {
|
String triggerName = (String) item.get("triggerName");
|
String triggerGroup = (String) item.get("triggerGroup");
|
try {
|
// 获取任务状态
|
Trigger.TriggerState state = scheduler.getTriggerState(TriggerKey.triggerKey(triggerName, triggerGroup));
|
item.put("status", state.toString());
|
} catch (SchedulerException e) {
|
e.printStackTrace();
|
}
|
});
|
return super.warpObject(new MyJobWrapper(list));
|
}
|
|
/**
|
* 添加任务
|
*
|
* @param jobClassName 任务类名称
|
* @param jobGroupName 任务群组名称
|
* @param cronExpression cron表达式
|
* @throws Exception
|
*/
|
@ResponseBody
|
@PostMapping(value = "/addJob")
|
public Object addJob(@RequestParam(value = "jobClassName") String jobClassName,
|
@RequestParam(value = "jobGroupName") String jobGroupName,
|
@RequestParam(value = "cronExpression") String cronExpression,
|
@RequestParam(value = "description") String description) {
|
try {
|
myJobService.addJob(scheduler, jobClassName, jobGroupName, cronExpression,description);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 暂停任务
|
*
|
* @param jobClassName 任务类名称
|
* @param jobGroupName 任务群组名称
|
* @throws Exception
|
*/
|
@ResponseBody
|
@PostMapping(value = "/pauseJob")
|
public Object pauseJob(@RequestParam(value = "jobClassName") String jobClassName,
|
@RequestParam(value = "jobGroupName") String jobGroupName) {
|
try {
|
myJobService.pauseJob(scheduler, jobClassName, jobGroupName);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 继续任务
|
*
|
* @param jobClassName 任务类名称
|
* @param jobGroupName 任务群组名称
|
* @throws Exception
|
*/
|
@ResponseBody
|
@PostMapping(value = "/resumeJob")
|
public Object resumeJob(@RequestParam(value = "jobClassName") String jobClassName,
|
@RequestParam(value = "jobGroupName") String jobGroupName) {
|
try {
|
myJobService.resumeJob(scheduler, jobClassName, jobGroupName);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 重新执行任务-----修改
|
*
|
* @param jobClassName 任务类名称
|
* @param jobGroupName 任务群组名称
|
* @param cronExpression cron表达式
|
* @throws Exception
|
*/
|
@ResponseBody
|
@PostMapping(value = "/rescheduleJob")
|
public Object rescheduleJob(@RequestParam(value = "description") String description,
|
@RequestParam(value = "jobClassName") String jobClassName,
|
@RequestParam(value = "jobGroupName") String jobGroupName,
|
@RequestParam(value = "cronExpression") String cronExpression) {
|
try {
|
myJobService.rescheduleJob(scheduler, jobClassName, jobGroupName, cronExpression,description);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* @param jobClassName 任务类名称
|
* @param jobGroupName 任务群组名称
|
* @throws Exception
|
*/
|
@ResponseBody
|
@PostMapping(value = "/deleteJob")
|
public Object deleteJob(@RequestParam(value = "jobClassName") String jobClassName,
|
@RequestParam(value = "jobGroupName") String jobGroupName) {
|
try {
|
myJobService.deleteJob(scheduler, jobClassName, jobGroupName);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return SUCCESS_TIP;
|
}
|
|
}
|