From 739e6f53683d6a25c4bc80a05bc42c44d5d96459 Mon Sep 17 00:00:00 2001 From: Yuan <1450637472@qq.com> Date: Tue, 4 Nov 2025 10:59:08 +0800 Subject: [PATCH] =?UTF-8?q?bugfix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E9=A1=B5=E9=9D=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quartz/BaseQuartzConfigController.java | 10 ++++++++-- .../scheduler/MySchedulerFactory.java | 20 +++++++++++-------- .../templates/system/quartzManage.html | 13 ++++++------ 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/saye/hospitalgd/controller/quartz/BaseQuartzConfigController.java b/src/main/java/com/saye/hospitalgd/controller/quartz/BaseQuartzConfigController.java index 2567653..382d017 100644 --- a/src/main/java/com/saye/hospitalgd/controller/quartz/BaseQuartzConfigController.java +++ b/src/main/java/com/saye/hospitalgd/controller/quartz/BaseQuartzConfigController.java @@ -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(":"); diff --git a/src/main/java/com/saye/hospitalgd/scheduler/MySchedulerFactory.java b/src/main/java/com/saye/hospitalgd/scheduler/MySchedulerFactory.java index 4d29fb4..eab5ffd 100644 --- a/src/main/java/com/saye/hospitalgd/scheduler/MySchedulerFactory.java +++ b/src/main/java/com/saye/hospitalgd/scheduler/MySchedulerFactory.java @@ -78,10 +78,11 @@ public class MySchedulerFactory { if (StringDUtil.isNotBlank(classz)) { @SuppressWarnings("unchecked") Class clazz = (Class) 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 clazz = (Class) 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 clazz = (Class) 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); } diff --git a/src/main/resources/templates/system/quartzManage.html b/src/main/resources/templates/system/quartzManage.html index 88811e0..7a119de 100644 --- a/src/main/resources/templates/system/quartzManage.html +++ b/src/main/resources/templates/system/quartzManage.html @@ -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) {