fix(scheduler): 修复固定频率调度类型的时间计算逻辑

- 修改了时间计算方式,使用 fromTime 而不是 triggerLastTime 作为基准
- 添加了秒级时间校准逻辑,确保时间精确到秒
- 移除了原有的条件判断分支,简化了时间计算流程
- 修复了时间戳毫秒部分不为0时的处理逻辑
3.4.0-release
xuxueli 6 months ago
parent f93d4f2820
commit 469d69f8f3

@ -10,16 +10,17 @@ public class FixRateScheduleType extends ScheduleType {
@Override @Override
public Date generateNextTriggerTime(XxlJobInfo jobInfo, Date fromTime) throws Exception { public Date generateNextTriggerTime(XxlJobInfo jobInfo, Date fromTime) throws Exception {
// generate next trigger time, fix rate delay // generate next trigger time, fix rate delay
Date nextTriggerTime = new Date(jobInfo.getTriggerLastTime() + Long.parseLong(jobInfo.getScheduleConf()) * 1000L); Date nextTriggerTime = new Date(fromTime.getTime() + Long.parseLong(jobInfo.getScheduleConf()) * 1000L);
if (nextTriggerTime.after(fromTime)) {
// fix rate delay, after last-trigger-time // assign second:
return nextTriggerTime; if (nextTriggerTime.getTime() % 1000 != 0) {
} else { nextTriggerTime = DateTool.addSeconds(DateTool.setMilliseconds(nextTriggerTime, 0), 1);
// fix rate delay, after fromTime (clear ms, second +1)
fromTime = DateTool.setMilliseconds(DateTool.addSeconds(fromTime, 1), 0);
return new Date(fromTime.getTime() + Long.parseLong(jobInfo.getScheduleConf()) * 1000L);
} }
return nextTriggerTime;
} }
} }

Loading…
Cancel
Save