diff options
author | Anton Tananaev <anton@traccar.org> | 2024-04-20 09:28:20 -0700 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2024-04-20 09:28:20 -0700 |
commit | 7b3fda2da562ce7b259a232bf9fc5f519c138283 (patch) | |
tree | cb83e41b95e318e5236cf66676dfa3a613805395 /src/main | |
parent | 0a5683733c7b01a0af07cee7a4340c45e19b6ceb (diff) | |
download | trackermap-server-7b3fda2da562ce7b259a232bf9fc5f519c138283.tar.gz trackermap-server-7b3fda2da562ce7b259a232bf9fc5f519c138283.tar.bz2 trackermap-server-7b3fda2da562ce7b259a232bf9fc5f519c138283.zip |
Fix overlapping report schedules
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/org/traccar/model/Calendar.java | 5 | ||||
-rw-r--r-- | src/main/java/org/traccar/schedule/TaskReports.java | 2 |
2 files changed, 3 insertions, 4 deletions
diff --git a/src/main/java/org/traccar/model/Calendar.java b/src/main/java/org/traccar/model/Calendar.java index 03f1995ba..feef7286f 100644 --- a/src/main/java/org/traccar/model/Calendar.java +++ b/src/main/java/org/traccar/model/Calendar.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 - 2022 Anton Tananaev (anton@traccar.org) + * Copyright 2016 - 2024 Anton Tananaev (anton@traccar.org) * Copyright 2016 Andrey Kunitsyn (andrey@traccar.org) * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -79,9 +79,8 @@ public class Calendar extends ExtendedModel { } public Collection<Period> findPeriods(Date date) { - var calendarDate = new net.fortuna.ical4j.model.Date(date); return findEvents(date).stream() - .flatMap((event) -> event.getConsumedTime(calendarDate, calendarDate).stream()) + .flatMap((e) -> e.calculateRecurrenceSet(new Period(new DateTime(date), Duration.ZERO)).stream()) .collect(Collectors.toSet()); } diff --git a/src/main/java/org/traccar/schedule/TaskReports.java b/src/main/java/org/traccar/schedule/TaskReports.java index 2102b2ee1..3989cd6a0 100644 --- a/src/main/java/org/traccar/schedule/TaskReports.java +++ b/src/main/java/org/traccar/schedule/TaskReports.java @@ -81,7 +81,7 @@ public class TaskReports implements ScheduleTask { var lastEvents = calendar.findPeriods(lastCheck); var currentEvents = calendar.findPeriods(currentCheck); - if (!lastEvents.isEmpty() && currentEvents.isEmpty()) { + if (!lastEvents.isEmpty() && !currentEvents.equals(lastEvents)) { Period period = lastEvents.iterator().next(); RequestScoper scope = ServletScopes.scopeRequest(Collections.emptyMap()); try (RequestScoper.CloseableScope ignored = scope.open()) { |