diff --git a/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java b/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java index 53a2c4852d..79f06b6784 100644 --- a/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java +++ b/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java @@ -2,9 +2,16 @@ package io.dataease.job.sechedule; import io.dataease.commons.utils.LogUtil; import org.quartz.*; +import org.quartz.impl.triggers.CronTriggerImpl; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -73,7 +80,9 @@ public class ScheduleManager { triggerBuilder.withIdentity(triggerKey); - triggerBuilder.startAt(startTime); + if (startTime.before(new Date())) { + triggerBuilder.startAt(getNTimeByCron(cron)); + } if (endTime != null) { triggerBuilder.endAt(endTime); @@ -149,7 +158,9 @@ public class ScheduleManager { triggerBuilder.withIdentity(triggerKey);// 触发器名,触发器组 - triggerBuilder.startAt(startTime); + if (startTime.before(new Date())) { + triggerBuilder.startAt(getNTimeByCron(cron)); + } if (endTime != null) { triggerBuilder.endAt(endTime); @@ -395,4 +406,23 @@ public class ScheduleManager { return returnMap; } + + public static Date getNTimeByCron(String cron) { + try { + CronTriggerImpl cronTriggerImpl = new CronTriggerImpl(); + cronTriggerImpl.setCronExpression(cron); + Calendar calendar = Calendar.getInstance(); + Date now = calendar.getTime(); +// calendar.add(java.util.Calendar.YEAR, 1); + calendar.add(Calendar.MONTH, 2); + + List dates = TriggerUtils.computeFireTimesBetween(cronTriggerImpl, null, now, calendar.getTime()); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String nextTime = dateFormat.format(dates.get(0)); + Date date = dateFormat.parse(nextTime); + return date; + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/frontend/src/views/chart/group/Group.vue b/frontend/src/views/chart/group/Group.vue index 6e37a985d6..06d17d430f 100644 --- a/frontend/src/views/chart/group/Group.vue +++ b/frontend/src/views/chart/group/Group.vue @@ -445,6 +445,7 @@ export default { }, close() { + this.$refs['groupForm'].resetFields() this.editGroup = false this.groupForm = { name: '', diff --git a/frontend/src/views/dataset/group/Group.vue b/frontend/src/views/dataset/group/Group.vue index c41fcd43af..6aaac29707 100644 --- a/frontend/src/views/dataset/group/Group.vue +++ b/frontend/src/views/dataset/group/Group.vue @@ -458,6 +458,7 @@ export default { }, close() { + this.$refs['groupForm'].resetFields() this.editGroup = false this.groupForm = { name: '',