bugfix:修复定时任务页面bug

This commit is contained in:
Yuan
2025-11-04 10:59:08 +08:00
parent 5339cd34b9
commit 739e6f5368
3 changed files with 27 additions and 16 deletions

View File

@@ -251,7 +251,6 @@ public class BaseQuartzConfigController{
String remark = StringDUtil.changeNullToEmpty(map.get("remark"));
String quartzType=StringDUtil.changeNullToEmpty(map.get("jobType"));
String time=StringDUtil.changeNullToEmpty(map.get("time"));
String status=StringDUtil.changeNullToEmpty(map.get("status"));
if(time==null || "".equals(time)){
throw new RuntimeException("time为空");
@@ -269,7 +268,9 @@ public class BaseQuartzConfigController{
updateMap.put("quartzType", quartzType);
this.baseQuartzConfigService.updateQuartzConfigById(updateMap);
if("0".equals(status)){
// 查询当前任务状态,如果是运行中状态则重启任务
BaseQuartzConfigEntity currentEntity = baseQuartzConfigService.get(configId);
if(currentEntity != null && "1".equals(currentEntity.getStatus())){
mySchedulerFactory.pauseJob(configId);
Thread.sleep(100);
mySchedulerFactory.resumeJob(configId);
@@ -341,6 +342,11 @@ public class BaseQuartzConfigController{
//拼接cron表达式
String cronStr= "";
// 如果dataStr包含空格说明是完整的cron表达式直接返回
if(StringDUtil.isNotBlank(dataStr) && dataStr.contains(" ")){
return dataStr;
}
//拆分时分秒
String[] split = dataStr.split(":");

View File

@@ -78,10 +78,11 @@ public class MySchedulerFactory {
if (StringDUtil.isNotBlank(classz)) {
@SuppressWarnings("unchecked")
Class<? extends Job> clazz = (Class<? extends Job>) Class.forName(classz);
JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(config.getConfigId(), config.getQuartzGroup())
String groupName = !StringDUtil.isNotBlank(config.getQuartzGroup()) ? "DEFAULT" : config.getQuartzGroup();
JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(config.getConfigId(), groupName)
.usingJobData("id", config.getConfigId()).usingJobData("name", config.getQuartzName()).build();
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(config.getExpression());
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(config.getConfigId(), config.getQuartzGroup())
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(config.getConfigId(), groupName)
.withSchedule(scheduleBuilder).build();
scheduler.scheduleJob(jobDetail, cronTrigger);
}
@@ -104,7 +105,8 @@ public class MySchedulerFactory {
public void pauseJob(String id) throws Exception {
Scheduler scheduler = getScheduler();
BaseQuartzConfigEntity QuartzConfig = baseQuartzConfigService.get(String.valueOf(id));
JobKey jobKey = JobKey.jobKey(QuartzConfig.getConfigId(), QuartzConfig.getQuartzGroup());
String groupName = !StringDUtil.isNotBlank(QuartzConfig.getQuartzGroup()) ? "DEFAULT" : QuartzConfig.getQuartzGroup();
JobKey jobKey = JobKey.jobKey(QuartzConfig.getConfigId(), groupName);
scheduler.deleteJob(jobKey);
}
@@ -118,14 +120,15 @@ public class MySchedulerFactory {
public void resumeJob(String id) throws Exception {
Scheduler scheduler = getScheduler();
BaseQuartzConfigEntity QuartzConfig = baseQuartzConfigService.get(String.valueOf(id));
JobKey jobKey = JobKey.jobKey(QuartzConfig.getConfigId(), QuartzConfig.getQuartzGroup());
String groupName = !StringDUtil.isNotBlank(QuartzConfig.getQuartzGroup()) ? "DEFAULT" : QuartzConfig.getQuartzGroup();
JobKey jobKey = JobKey.jobKey(QuartzConfig.getConfigId(), groupName);
Class<? extends Job> clazz = (Class<? extends Job>) Class.forName(QuartzConfig.getQuartzClass());
JobDetail jobDetail1 = scheduler.getJobDetail(jobKey);
if (jobDetail1 == null) {
JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(QuartzConfig.getConfigId(), QuartzConfig.getQuartzGroup())
JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(QuartzConfig.getConfigId(), groupName)
.usingJobData("id", QuartzConfig.getConfigId()).usingJobData("name", QuartzConfig.getQuartzName()).build();
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(QuartzConfig.getExpression());
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(QuartzConfig.getConfigId(), QuartzConfig.getQuartzGroup())
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(QuartzConfig.getConfigId(), groupName)
.withSchedule(scheduleBuilder).build();
scheduler.scheduleJob(jobDetail, cronTrigger);
} else {
@@ -149,10 +152,11 @@ public class MySchedulerFactory {
if (StringDUtil.isNotBlank(classz)) {
@SuppressWarnings("unchecked")
Class<? extends Job> clazz = (Class<? extends Job>) Class.forName(classz);
JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(id, group)
String groupName = !StringDUtil.isNotBlank(group) ? "DEFAULT" : group;
JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(id, groupName)
.usingJobData("id", id).usingJobData("name", name).build();
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(id, group)
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(id, groupName)
.withSchedule(scheduleBuilder).build();
scheduler.scheduleJob(jobDetail, cronTrigger);
}

View File

@@ -273,11 +273,11 @@
if (obj.event === 'edit') {
editQuartz(data);
} else if (obj.event === 'start') {
changeStatus(data.id, '1');
changeStatus(data.configId, '1');
} else if (obj.event === 'pause') {
changeStatus(data.id, '0');
changeStatus(data.configId, '0');
} else if (obj.event === 'del') {
deleteQuartz(data.id);
deleteQuartz(data.configId);
}
});
@@ -319,7 +319,7 @@
isEditMode = true;
form.val('quartzForm', {
configId: data.id,
configId: data.configId,
quartzName: data.quartzName,
jobType: data.quartzType,
quartz_class: data.quartzClass,
@@ -397,8 +397,9 @@
quartzName: quartzName,
jobType: jobType,
quartz_class: quartzClass,
time: cronExpression,
remark: remark
remark: remark,
dataStr: cronExpression, // 直接传递完整的cron表达式
time: '0' // 传递time参数供后端使用
};
if (isEditMode) {