diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/BaseAggInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/BaseAggInterval.java index e64ec117fd..08bea68d5b 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/BaseAggInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/BaseAggInterval.java @@ -15,6 +15,7 @@ */ package org.thingsboard.server.common.data.cf.configuration.aggregation.single.interval; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; @@ -34,6 +35,11 @@ public abstract class BaseAggInterval implements AggInterval { protected String tz; protected Long offsetSec; // delay seconds since start of interval + @JsonIgnore + protected long getOffsetSec() { + return offsetSec != null ? offsetSec : 0L; + } + @Override public long getIntervalDurationMillis() { return switch (getType()) { @@ -50,9 +56,10 @@ public abstract class BaseAggInterval implements AggInterval { public long getCurrentIntervalStartTs() { ZoneId zoneId = ZoneId.of(tz); ZonedDateTime now = ZonedDateTime.now(zoneId); - ZonedDateTime shiftedNow = now.minusSeconds(offsetSec); + long offset = getOffsetSec(); + ZonedDateTime shiftedNow = now.minusSeconds(offset); ZonedDateTime alignedStart = getAlignedBoundary(shiftedNow, false); - ZonedDateTime actualStart = alignedStart.plusSeconds(offsetSec); + ZonedDateTime actualStart = alignedStart.plusSeconds(offset); return actualStart.toInstant().toEpochMilli(); } @@ -60,9 +67,10 @@ public abstract class BaseAggInterval implements AggInterval { public long getCurrentIntervalEndTs() { ZoneId zoneId = ZoneId.of(tz); ZonedDateTime now = ZonedDateTime.now(zoneId); - ZonedDateTime shiftedNow = now.minusSeconds(offsetSec); + long offset = getOffsetSec(); + ZonedDateTime shiftedNow = now.minusSeconds(offset); ZonedDateTime alignedEnd = getAlignedBoundary(shiftedNow, true); - ZonedDateTime actualEnd = alignedEnd.plusSeconds(offsetSec); + ZonedDateTime actualEnd = alignedEnd.plusSeconds(offset); return actualEnd.toInstant().toEpochMilli(); } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java index 3a07029bc8..c8e3ee15a6 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/interval/CustomInterval.java @@ -51,13 +51,13 @@ public class CustomInterval extends BaseAggInterval { public long getCurrentIntervalStartTs() { ZoneId zoneId = ZoneId.of(tz); ZonedDateTime now = ZonedDateTime.now(zoneId); - ZonedDateTime shiftedNow = now.minusSeconds(offsetSec); + ZonedDateTime shiftedNow = now.minusSeconds(getOffsetSec()); long durationMillis = getIntervalDurationMillis(); long shiftedNowMillis = shiftedNow.toInstant().toEpochMilli(); long alignedStartMillis = (shiftedNowMillis / durationMillis) * durationMillis; - long offsetMillis = TimeUnit.SECONDS.toMillis(offsetSec); + long offsetMillis = TimeUnit.SECONDS.toMillis(getOffsetSec()); return alignedStartMillis + offsetMillis; }