소스 검색

feat(gas-monitor): 添加报警位解析功能

- 新增 parseAlarmBits 方法用于解析报警信息
- 支持解析16个报警位,包括未知报警、高报警等
- 使用位运算提取各报警状态
- 返回 Map<String, Boolean> 结构便于使用
- 处理 alarmInfo 为 null 的边界情况
林仔 7 달 전
부모
커밋
b963ed1f6a
1개의 변경된 파일26개의 추가작업 그리고 0개의 파일을 삭제
  1. 26 0
      flammable-gas-service/src/main/java/com/zksy/gas/domain/GasMonitorData.java

+ 26 - 0
flammable-gas-service/src/main/java/com/zksy/gas/domain/GasMonitorData.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
@@ -146,4 +148,28 @@ public class GasMonitorData implements Serializable {
 
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
+
+    public Map<String, Boolean> parseAlarmBits() {
+        Map<String, Boolean> alarmBits = new HashMap<>();
+        if (alarmInfo == null) {
+            alarmInfo = 0;
+        }
+        alarmBits.put("unknownAlarm", (alarmInfo & (1 << 0)) != 0); // Bit0:未知报警
+        alarmBits.put("highAlarm", (alarmInfo & (1 << 1)) != 0);     // Bit1:高报警
+        alarmBits.put("overRange", (alarmInfo & (1 << 2)) != 0);     // Bit2:超量程
+        alarmBits.put("calibrationCycle", (alarmInfo & (1 << 3)) != 0); // Bit3:标定周期
+        alarmBits.put("overLife", (alarmInfo & (1 << 4)) != 0);       // Bit4:超寿命
+        alarmBits.put("fallAlarm", (alarmInfo & (1 << 5)) != 0);      // Bit5:跌倒报警
+        alarmBits.put("undervoltage", (alarmInfo & (1 << 6)) != 0);   // Bit6:欠压报警
+        alarmBits.put("rangeAlarm", (alarmInfo & (1 << 7)) != 0);     // Bit7:区间报警
+        alarmBits.put("keyAlarm", (alarmInfo & (1 << 8)) != 0);       // Bit8:按键报警
+        alarmBits.put("vibrationAlarm", (alarmInfo & (1 << 9)) != 0); // Bit9:震动报警
+        alarmBits.put("waterLevelAlarm", (alarmInfo & (1 << 10)) != 0); // Bit10:水位报警
+        alarmBits.put("powerOffAlarm", (alarmInfo & (1 << 11)) != 0); // Bit11:断电报警
+        alarmBits.put("sensorFault", (alarmInfo & (1 << 12)) != 0);   // Bit12:传感器故障
+        alarmBits.put("overHumidity", (alarmInfo & (1 << 13)) != 0);  // Bit13:超湿报警
+        alarmBits.put("overTemperature", (alarmInfo & (1 << 14)) != 0); // Bit14:超温报警
+        alarmBits.put("systemFault", (alarmInfo & (1 << 15)) != 0);   // Bit15:系统故障
+        return alarmBits;
+    }
 }