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> 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; } }