package com.example.demo.controller; import com.example.demo.base.Constants; import com.example.demo.domain.dto.QrtzTaskAddNewDTO; import com.example.demo.domain.dto.QrtzTaskUpdateDTO; import com.example.demo.domain.dto.QueryPageDTO; import com.example.demo.domain.dto.QueryTaskDetailsDTO; import com.example.demo.domain.entity.QrtzTask; import com.example.demo.service.JobService; import com.example.demo.service.QrTaskDetailService; import com.example.demo.service.QrTaskService; import com.example.demo.util.Response; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.quartz.SchedulerException; import org.springframework.context.annotation.Lazy; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.List; @RestController @Tag(name = "任务条件管理") @RequestMapping(Constants.QUARTZ_API + "/task") @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class QuartzTaskController { private final JobService jobService; private final QrTaskService qrTaskService; private final QrTaskDetailService qrTaskDetailService; @Operation(summary = "添加任务条件") @PostMapping("/addTask") public String addTask(@RequestBody QrtzTaskAddNewDTO qrtzTaskAddNewDTO) throws SchedulerException { //添加任务 QrtzTask qrtzTask = qrTaskService.addQuartzTask(qrtzTaskAddNewDTO); if (qrtzTask == null) { return Response.error("未配置网站登录信息"); } //任务添加完,判断是定时任务则任务调度添加该定时任务 if (qrtzTask.getTaskType() == 1) { jobService.addJob(qrtzTask); } return Response.success("添加任务完成"); } @Operation(summary = "删除任务条件") @PostMapping("/deleteTasks") public String deleteTasks(@RequestBody List taskIds) throws SchedulerException { return Response.success(qrTaskService.deleteQuartzTask(taskIds)); } @Operation(summary = "查询任务条件列表") @PostMapping("/getTasks") public String getTasks(@RequestBody QueryPageDTO queryPageDTO) throws IOException { return Response.success(qrTaskService.getTasks(queryPageDTO)); } @Operation(summary = "查询任务执行情况列表") @PostMapping("/getTaskDetails") public String getTaskDetails(@RequestBody QueryTaskDetailsDTO queryTaskDetailsDTO) { return Response.success(qrTaskService.getTaskDetails(queryTaskDetailsDTO)); } @Operation(summary = "更新任务条件") @PostMapping("/update") public String update(@RequestBody QrtzTaskUpdateDTO qrtzTaskUpdateDTO) throws InterruptedException, SchedulerException { QrtzTask qrtzTask = qrTaskService.updateQuartzTask(qrtzTaskUpdateDTO); if (qrtzTask.getTaskType() == 1) { jobService.updateJob(qrtzTask); } return Response.success(); } @Operation(summary = "暂停任务条件") @GetMapping("/pauseJob") public String pauseJob(Integer taskId) throws SchedulerException { jobService.pauseJob(taskId); return Response.success(); } @Operation(summary = "继续任务") @GetMapping("/resumeJob") public String resumeJob(Integer taskId) throws SchedulerException { jobService.resumeJob(taskId); return Response.success(); } @Operation(summary = "更改任务详情状态") @GetMapping("/setDetailState") public String setDetailState(Integer taskId, Integer state) throws SchedulerException { Integer flag = qrTaskDetailService.setDetailState(taskId, state); if (flag.equals(-1)) { return Response.error("更改状态失败"); } return Response.success("更改状态成功"); } }