Browse Source

fix: 修复间隔执行的未来任务生成规则

master
yinhuaiwei 3 weeks ago
parent
commit
f29fefd92b
1 changed files with 6 additions and 4 deletions
  1. +6
    -4
      inspect-main/inspect-main-task/src/main/java/com/inspect/calender/service/TaskCalendarGenerator.java

+ 6
- 4
inspect-main/inspect-main-task/src/main/java/com/inspect/calender/service/TaskCalendarGenerator.java View File

@ -124,9 +124,9 @@ public class TaskCalendarGenerator {
/** /**
* 获取指定年月日的完整日历包含已生成的任务和未来生成的任务 * 获取指定年月日的完整日历包含已生成的任务和未来生成的任务
* *
* @param year
* @param year
* @param month * @param month
* @param day
* @param day
* @return * @return
*/ */
public List<DailyTaskStatsDTO> getFullCalendar(int year, int month, int day) { public List<DailyTaskStatsDTO> getFullCalendar(int year, int month, int day) {
@ -300,12 +300,14 @@ public class TaskCalendarGenerator {
LocalDateTime intervalEndTime = task.getIntervalEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); LocalDateTime intervalEndTime = task.getIntervalEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
LocalTime executeTime = LocalTime.parse(task.getIntervalExecuteTime()); LocalTime executeTime = LocalTime.parse(task.getIntervalExecuteTime());
LocalDateTime startLdt = beginTime.isBefore(intervalStartTime) ? intervalStartTime : beginTime;
LocalDateTime startLdt = intervalStartTime;
LocalDateTime endLdt = endTime.isAfter(intervalEndTime) ? intervalEndTime : endTime; LocalDateTime endLdt = endTime.isAfter(intervalEndTime) ? intervalEndTime : endTime;
startLdt = LocalDateTime.of(startLdt.toLocalDate(), executeTime); startLdt = LocalDateTime.of(startLdt.toLocalDate(), executeTime);
for (LocalDateTime date = startLdt; date.isBefore(endLdt); date = date.plusHours(intervalNumber)) { for (LocalDateTime date = startLdt; date.isBefore(endLdt); date = date.plusHours(intervalNumber)) {
// 判断是否为目标星期
if (date.isBefore(beginTime)) {
continue;
}
DailyTaskStatsDTO dto = DailyTaskStatsDTO.builder() DailyTaskStatsDTO dto = DailyTaskStatsDTO.builder()
.name(task.getTaskName()) .name(task.getTaskName())
.taskState(TaskStateEnum.PENDING.getCode()) .taskState(TaskStateEnum.PENDING.getCode())


Loading…
Cancel
Save