diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceAlarmRecordServiceImpl.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceAlarmRecordServiceImpl.java index 583a56a..347ae9e 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceAlarmRecordServiceImpl.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceAlarmRecordServiceImpl.java @@ -21,6 +21,7 @@ import com.yfd.platform.modules.auxcontrol.mapper.MeterDeviceMapper; import com.yfd.platform.modules.auxcontrol.service.IDeviceAlarmRecordService; import com.yfd.platform.system.domain.SysDictionaryItems; import com.yfd.platform.system.mapper.SysDictionaryItemsMapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -41,6 +42,7 @@ import java.util.regex.Pattern; * @since 2025-04-23 */ @Service +@Slf4j public class DeviceAlarmRecordServiceImpl extends ServiceImpl implements IDeviceAlarmRecordService { @Resource @@ -86,7 +88,7 @@ public class DeviceAlarmRecordServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(DeviceAlarmRecord::getSignalId, map.get("signalId").toString()); queryWrapper.eq(DeviceAlarmRecord::getAlarmClass, "2"); @@ -282,43 +284,37 @@ public class DeviceAlarmRecordServiceImpl extends ServiceImpl listSymbol = new ArrayList<>(); - List values = new ArrayList<>(); + // //获取告警触发条件 String str = deviceAlarmParameter.getAlarmCondition(); // 定义正则表达式 - String regex = "([0-9]+(\\.[0-9]+)?|value)([<>=!]{1,2})([0-9]+(\\.[0-9]+)?|value)"; + String regex = "(\\d+)\\s*((?:==?|!=|<=?|>=?))\\s*value\\s*((?:==?|!=|<=?|>=?))\\s*(\\d+)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); // 查找并输出比较符号和数值 - while (matcher.find()) { - String value1 = matcher.group(1); - String operator = matcher.group(3); - String value2 = matcher.group(4); - - if ("value".equals(value1)) { - values.add(Double.parseDouble(value)); - } else { - values.add(Double.valueOf(value1)); + if (matcher.find()) { + try { + // 第一个数字 + String number1 = matcher.group(1); + // 第一个比较符 + String operator1 = matcher.group(2); + // 第二个比较符 + String operator2 = matcher.group(3); + // 第二个数字 + String number2 = matcher.group(4); + Double aDouble = Double.valueOf(value); + boolean result = compare(Double.valueOf(number1), operator1, aDouble); + boolean resultTwo = compare(aDouble, operator2, Double.valueOf(number2)); + return result && resultTwo; + } catch (Exception e) { + log.error(e.getMessage()); + return false; } - listSymbol.add(operator); - - if ("value".equals(value2)) { - values.add(Double.parseDouble(value)); - } else { - values.add(Double.valueOf(value2)); - } } + return false; - // 比较操作 - boolean result = compare(values.get(0), listSymbol.get(0), values.get(1)); - boolean resultTwo = true; - if (listSymbol.size() > 1) { - resultTwo = compare(values.get(1), listSymbol.get(1), values.get(2)); - } - return result && resultTwo; } private static boolean compare(Double value1, String operator, Double value2) { @@ -364,26 +360,26 @@ public class DeviceAlarmRecordServiceImpl extends ServiceImpl getTimeInterval(int clock) { + public Map getTimeInterval(int clockHour) { int beforeclock = 0; - Map map = new HashMap<>(); + Map map = new HashMap<>(10); // 获取当前时间 LocalDateTime now = LocalDateTime.now(); // 获取昨天的 7 点 - LocalDateTime yesterday7AM = LocalDateTime.of(now.minusDays(1).toLocalDate(), LocalTime.of(clock, 0)); - map.put("starttime", yesterday7AM); + LocalDateTime yesterdayClockAM = LocalDateTime.of(now.minusDays(1).toLocalDate(), LocalTime.of(clockHour, 0)); + map.put("starttime", yesterdayClockAM); // 获取今天的 7 点 - LocalDateTime today7AM = LocalDateTime.of(now.toLocalDate(), LocalTime.of(clock, 0)); - LocalDateTime nextday7AM = LocalDateTime.of(now.plusDays(1).toLocalDate(), LocalTime.of(clock, 0)); - map.put("endtime", today7AM); + LocalDateTime todayClockAM = LocalDateTime.of(now.toLocalDate(), LocalTime.of(clockHour, 0)); + LocalDateTime nextdayClockAM = LocalDateTime.of(now.plusDays(1).toLocalDate(), LocalTime.of(clockHour, 0)); + + map.put("endtime", todayClockAM); // 判断时间是否在范围内 - if (now.isAfter(yesterday7AM) && now.isBefore(today7AM)) { + if (now.isAfter(yesterdayClockAM) && now.isBefore(todayClockAM)) { beforeclock = 1; } else { - beforeclock = 0; - map.put("starttime", today7AM); - map.put("endtime", nextday7AM); + map.put("starttime", todayClockAM); + map.put("endtime", nextdayClockAM); } map.put("beforeclock", beforeclock); return map;