forked from github/dataease
feat(backend):定时任务优化
This commit is contained in:
parent
6fe0f5f178
commit
94aba8af70
@ -73,7 +73,7 @@ public class ScheduleManager {
|
|||||||
|
|
||||||
triggerBuilder.withIdentity(triggerKey);
|
triggerBuilder.withIdentity(triggerKey);
|
||||||
|
|
||||||
Date nTimeByCron = getNTimeByCron(cron);
|
Date nTimeByCron = getNTimeByCron(cron, startTime);
|
||||||
if (startTime.before(new Date())) {
|
if (startTime.before(new Date())) {
|
||||||
triggerBuilder.startAt(nTimeByCron);
|
triggerBuilder.startAt(nTimeByCron);
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ public class ScheduleManager {
|
|||||||
|
|
||||||
triggerBuilder.withIdentity(triggerKey);// 触发器名,触发器组
|
triggerBuilder.withIdentity(triggerKey);// 触发器名,触发器组
|
||||||
|
|
||||||
Date nTimeByCron = getNTimeByCron(cron);
|
Date nTimeByCron = getNTimeByCron(cron, startTime);
|
||||||
if (startTime.before(new Date())) {
|
if (startTime.before(new Date())) {
|
||||||
triggerBuilder.startAt(nTimeByCron);
|
triggerBuilder.startAt(nTimeByCron);
|
||||||
}
|
}
|
||||||
@ -410,22 +410,38 @@ public class ScheduleManager {
|
|||||||
return returnMap;
|
return returnMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Date getNTimeByCron(String cron) {
|
// public static Date getNTimeByCron(String cron) {
|
||||||
try {
|
// try {
|
||||||
CronTriggerImpl cronTriggerImpl = new CronTriggerImpl();
|
// CronTriggerImpl cronTriggerImpl = new CronTriggerImpl();
|
||||||
cronTriggerImpl.setCronExpression(cron);
|
// cronTriggerImpl.setCronExpression(cron);
|
||||||
Calendar calendar = Calendar.getInstance();
|
// Calendar calendar = Calendar.getInstance();
|
||||||
Date now = calendar.getTime();
|
// Date now = calendar.getTime();
|
||||||
// calendar.add(java.util.Calendar.YEAR, 1);
|
//// calendar.add(java.util.Calendar.YEAR, 1);
|
||||||
calendar.add(Calendar.MONTH, 2);
|
// calendar.add(Calendar.MONTH, 2);
|
||||||
|
//
|
||||||
|
// List<Date> 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);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
List<Date> dates = TriggerUtils.computeFireTimesBetween(cronTriggerImpl, null, now, calendar.getTime());
|
public static CronTrigger getCronTrigger(String cron) {
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
if (!CronExpression.isValidExpression(cron)) {
|
||||||
String nextTime = dateFormat.format(dates.get(0));
|
throw new RuntimeException("cron :" + cron + " error");
|
||||||
Date date = dateFormat.parse(nextTime);
|
}
|
||||||
return date;
|
return TriggerBuilder.newTrigger().withIdentity("Calculate Date").withSchedule(CronScheduleBuilder.cronSchedule(cron)).build();
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException(e);
|
}
|
||||||
}
|
|
||||||
|
public static Date getNTimeByCron(String cron, Date start) {
|
||||||
|
CronTrigger trigger = getCronTrigger(cron);
|
||||||
|
if (start == null) {
|
||||||
|
start = trigger.getStartTime();
|
||||||
|
}
|
||||||
|
return trigger.getFireTimeAfter(start);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user