package org.springblade.modules.quartz.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.AllArgsConstructor; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.modules.quartz.config.ScheduledManager; import org.springblade.modules.quartz.entity.ScheduledJob; import org.springblade.modules.quartz.service.ScheduledJobService; import org.springblade.modules.quartz.vo.ScheduledJobVO; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 定时任务控制层 * @author zhongrj * @since 2022-03-07 */ @AllArgsConstructor @RestController @RequestMapping("/scheduled") public class ScheduledController { private final ScheduledJobService scheduledJobService; private final ScheduledManager scheduleManager; /** * 查询定时任务的分页数据 * @param page * @param scheduledJob * @return */ @GetMapping("/list") public R list(Query query, ScheduledJob scheduledJob){ return R.data(scheduledJobService.page(Condition.getPage(query),Condition.getQueryWrapper(scheduledJob))); } /** * 自定义定时任务的分页数据 * @param page * @param scheduledJob * @return */ @GetMapping("/page") public R page(ScheduledJobVO scheduledJob,Query query){ return R.data(scheduledJobService.selectPageScheduledJobList(Condition.getPage(query),scheduledJob)); } /** * 定时任务详情信息 * @param scheduledJob * @return */ @GetMapping("/detail") public R detail(ScheduledJob scheduledJob){ return R.data(scheduledJobService.getOne(new QueryWrapper<>(scheduledJob))); } /** * 定时任务新增 * @param scheduledJob * @return */ @PostMapping("/save") public R save(@RequestBody ScheduledJob scheduledJob){ scheduledJob.setCreateTime(new Date()); boolean status = scheduledJobService.save(scheduledJob); if (status){ //创建定时任务 scheduleManager.createScheduledJob(scheduledJob); } return R.status(status); } /** * 定时任务修改 * @param scheduledJob * @return */ @PostMapping("/update") public R update(@RequestBody ScheduledJob scheduledJob){ scheduledJob.setUpdateTime(new Date()); boolean status = scheduledJobService.updateById(scheduledJob); if (status){ //修改定时任务 scheduleManager.updateScheduledJob(scheduledJob); } return R.status(status); } /** * 删除,批量删除 * @param ids * @return */ @PostMapping("/remove") public R remove(@NotNull String ids){ List list = Arrays.asList(ids.split(",")); list.forEach(s -> { ScheduledJob scheduledJob = new ScheduledJob(); scheduledJob.setId(Integer.parseInt(s)); //删除定时任务 scheduleManager.deleteScheduledJob(scheduledJob); }); return R.status(scheduledJobService.removeByIds(Func.toLongList(ids))); } /** * 定时任务恢复 * @param scheduledJob * @return */ @PostMapping("/activateQuartz") public R activateQuartz(@RequestBody ScheduledJob scheduledJob){ scheduledJob.setUpdateTime(new Date()); boolean status = scheduledJobService.updateById(scheduledJob); if (status){ //恢复定时任务 scheduleManager.resumeJob(scheduledJob); } return R.status(status); } /** * 启动定时任务 * @param scheduledJob * @return */ @PostMapping("/runQuartz") public R runQuartz(@RequestBody ScheduledJob scheduledJob){ scheduledJob.setUpdateTime(new Date()); boolean status = scheduledJobService.updateById(scheduledJob); if (status){ //立即启动任务 scheduleManager.run(scheduledJob); } return R.status(status); } /** * 定时任务恢复 * @param scheduledJob * @return */ @PostMapping("/stopQuartz") public R stopQuartz(@RequestBody ScheduledJob scheduledJob){ scheduledJob.setUpdateTime(new Date()); boolean status = scheduledJobService.updateById(scheduledJob); if (status){ //暂停定时任务 scheduleManager.pauseJob(scheduledJob); } return R.status(status); } }