feat: 增加根据beanName及方法调用接口
This commit is contained in:
@@ -4,11 +4,16 @@ import com.sqx.common.annotation.SysLog;
|
|||||||
import com.sqx.common.utils.PageUtils;
|
import com.sqx.common.utils.PageUtils;
|
||||||
import com.sqx.common.utils.Result;
|
import com.sqx.common.utils.Result;
|
||||||
import com.sqx.common.validator.ValidatorUtils;
|
import com.sqx.common.validator.ValidatorUtils;
|
||||||
|
import com.sqx.modules.job.dto.RunJobDTO;
|
||||||
import com.sqx.modules.job.entity.ScheduleJobEntity;
|
import com.sqx.modules.job.entity.ScheduleJobEntity;
|
||||||
import com.sqx.modules.job.service.ScheduleJobService;
|
import com.sqx.modules.job.service.ScheduleJobService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -20,8 +25,15 @@ import java.util.Map;
|
|||||||
public class ScheduleJobController {
|
public class ScheduleJobController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ScheduleJobService scheduleJobService;
|
private ScheduleJobService scheduleJobService;
|
||||||
|
|
||||||
/**
|
private final ApplicationContext applicationContext;
|
||||||
|
|
||||||
|
public ScheduleJobController(ApplicationContext applicationContext) {
|
||||||
|
this.applicationContext = applicationContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
* 定时任务列表
|
* 定时任务列表
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/list")
|
@RequestMapping("/list")
|
||||||
@@ -30,17 +42,17 @@ public class ScheduleJobController {
|
|||||||
|
|
||||||
return Result.success().put("page", page);
|
return Result.success().put("page", page);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 定时任务信息
|
* 定时任务信息
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/info/{jobId}")
|
@RequestMapping("/info/{jobId}")
|
||||||
public Result info(@PathVariable("jobId") Long jobId){
|
public Result info(@PathVariable("jobId") Long jobId){
|
||||||
ScheduleJobEntity schedule = scheduleJobService.getById(jobId);
|
ScheduleJobEntity schedule = scheduleJobService.getById(jobId);
|
||||||
|
|
||||||
return Result.success().put("schedule", schedule);
|
return Result.success().put("schedule", schedule);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存定时任务
|
* 保存定时任务
|
||||||
*/
|
*/
|
||||||
@@ -48,12 +60,12 @@ public class ScheduleJobController {
|
|||||||
@RequestMapping("/save")
|
@RequestMapping("/save")
|
||||||
public Result save(@RequestBody ScheduleJobEntity scheduleJob){
|
public Result save(@RequestBody ScheduleJobEntity scheduleJob){
|
||||||
ValidatorUtils.validateEntity(scheduleJob);
|
ValidatorUtils.validateEntity(scheduleJob);
|
||||||
|
|
||||||
scheduleJobService.saveJob(scheduleJob);
|
scheduleJobService.saveJob(scheduleJob);
|
||||||
|
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改定时任务
|
* 修改定时任务
|
||||||
*/
|
*/
|
||||||
@@ -61,12 +73,12 @@ public class ScheduleJobController {
|
|||||||
@RequestMapping("/update")
|
@RequestMapping("/update")
|
||||||
public Result update(@RequestBody ScheduleJobEntity scheduleJob){
|
public Result update(@RequestBody ScheduleJobEntity scheduleJob){
|
||||||
ValidatorUtils.validateEntity(scheduleJob);
|
ValidatorUtils.validateEntity(scheduleJob);
|
||||||
|
|
||||||
scheduleJobService.update(scheduleJob);
|
scheduleJobService.update(scheduleJob);
|
||||||
|
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除定时任务
|
* 删除定时任务
|
||||||
*/
|
*/
|
||||||
@@ -74,13 +86,40 @@ public class ScheduleJobController {
|
|||||||
@RequestMapping("/delete")
|
@RequestMapping("/delete")
|
||||||
public Result delete(@RequestBody Long[] jobIds){
|
public Result delete(@RequestBody Long[] jobIds){
|
||||||
scheduleJobService.deleteBatch(jobIds);
|
scheduleJobService.deleteBatch(jobIds);
|
||||||
|
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 立即执行任务
|
* 立即执行任务
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@SysLog("立即执行任务")
|
||||||
|
@RequestMapping("/run")
|
||||||
|
public Result run(@RequestBody @Validated RunJobDTO jobDTO) throws Exception {
|
||||||
|
// 从Spring容器获取类的实例
|
||||||
|
Object classInstance = applicationContext.getBean(jobDTO.getClassName());
|
||||||
|
|
||||||
|
if (jobDTO.getArgs() != null && !jobDTO.getArgs().isEmpty()) {
|
||||||
|
Class<?>[] argTypes = new Class<?>[jobDTO.getArgs().size()];
|
||||||
|
for (int i = 0; i < jobDTO.getArgs().size(); i++) {
|
||||||
|
argTypes[i] = jobDTO.getArgs().get(i).getClass();
|
||||||
|
}
|
||||||
|
// 获取指定的Method对象
|
||||||
|
Method method = classInstance.getClass().getDeclaredMethod(jobDTO.getMethodName(), argTypes);
|
||||||
|
|
||||||
|
// 调用方法并返回结果
|
||||||
|
Object invoke = method.invoke(classInstance, jobDTO.getArgs().toArray());
|
||||||
|
return Result.success().put("data", invoke == null ? "ok" : invoke);
|
||||||
|
}
|
||||||
|
// 获取指定的Method对象
|
||||||
|
Method method = classInstance.getClass().getDeclaredMethod(jobDTO.getMethodName());
|
||||||
|
|
||||||
|
// 调用方法并返回结果
|
||||||
|
Object invoke = method.invoke(classInstance);
|
||||||
|
return Result.success().put("data", invoke == null ? "ok" : invoke);
|
||||||
|
}
|
||||||
|
|
||||||
// @SysLog("立即执行任务")
|
// @SysLog("立即执行任务")
|
||||||
// @RequestMapping("/run")
|
// @RequestMapping("/run")
|
||||||
// public Result run(@RequestBody Long[] jobIds){
|
// public Result run(@RequestBody Long[] jobIds){
|
||||||
@@ -88,7 +127,7 @@ public class ScheduleJobController {
|
|||||||
//
|
//
|
||||||
// return Result.success();
|
// return Result.success();
|
||||||
// }
|
// }
|
||||||
//
|
|
||||||
// /**
|
// /**
|
||||||
// * 暂停定时任务
|
// * 暂停定时任务
|
||||||
// */
|
// */
|
||||||
|
|||||||
Reference in New Issue
Block a user