Commit d0fafb95d45879039696d9442081d3e72377f512

Authored by Igor Kulikov
2 parents 40be6e58 3ae7957a

Merge branch 'master' of github.com:thingsboard/thingsboard

... ... @@ -165,9 +165,7 @@ class AlarmRuleState {
165 165 return false;
166 166 }
167 167 }
168   - long startOfDay = zdt.toLocalDate().atStartOfDay(zoneId).toInstant().toEpochMilli();
169   - long msFromStartOfDay = eventTs - startOfDay;
170   - return schedule.getStartsOn() <= msFromStartOfDay && schedule.getEndsOn() > msFromStartOfDay;
  168 + return isActive(eventTs, zoneId, zdt, schedule.getStartsOn(), schedule.getEndsOn());
171 169 }
172 170
173 171 private boolean isActiveCustom(CustomTimeSchedule schedule, long eventTs) {
... ... @@ -177,9 +175,7 @@ class AlarmRuleState {
177 175 for (CustomTimeScheduleItem item : schedule.getItems()) {
178 176 if (item.getDayOfWeek() == dayOfWeek) {
179 177 if (item.isEnabled()) {
180   - long startOfDay = zdt.toLocalDate().atStartOfDay(zoneId).toInstant().toEpochMilli();
181   - long msFromStartOfDay = eventTs - startOfDay;
182   - return item.getStartsOn() <= msFromStartOfDay && item.getEndsOn() > msFromStartOfDay;
  178 + return isActive(eventTs, zoneId, zdt, item.getStartsOn(), item.getEndsOn());
183 179 } else {
184 180 return false;
185 181 }
... ... @@ -188,6 +184,16 @@ class AlarmRuleState {
188 184 return false;
189 185 }
190 186
  187 + private boolean isActive(long eventTs, ZoneId zoneId, ZonedDateTime zdt, long startsOn, long endsOn) {
  188 + long startOfDay = zdt.toLocalDate().atStartOfDay(zoneId).toInstant().toEpochMilli();
  189 + long msFromStartOfDay = eventTs - startOfDay;
  190 + if (startsOn <= endsOn) {
  191 + return startsOn <= msFromStartOfDay && endsOn > msFromStartOfDay;
  192 + } else {
  193 + return startsOn < msFromStartOfDay || (0 < msFromStartOfDay && msFromStartOfDay < endsOn);
  194 + }
  195 + }
  196 +
191 197 public void clear() {
192 198 if (state.getEventCount() > 0 || state.getLastEventTs() > 0 || state.getDuration() > 0) {
193 199 state.setEventCount(0L);
... ...