Commit d0fafb95d45879039696d9442081d3e72377f512
Merge branch 'master' of github.com:thingsboard/thingsboard
Showing
1 changed file
with
12 additions
and
6 deletions
... | ... | @@ -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); | ... | ... |