GasMonitorData.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package com.zksy.gas.domain;
  2. import com.baomidou.mybatisplus.annotation.IdType;
  3. import com.baomidou.mybatisplus.annotation.TableField;
  4. import com.baomidou.mybatisplus.annotation.TableId;
  5. import com.baomidou.mybatisplus.annotation.TableName;
  6. import java.io.Serializable;
  7. import java.math.BigDecimal;
  8. import java.time.LocalDateTime;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. import com.fasterxml.jackson.annotation.JsonFormat;
  12. import lombok.Data;
  13. /**
  14. * 可燃气体监测仪数据表
  15. * @TableName gas_monitor_data
  16. */
  17. @TableName(value = "gas_monitor_data", schema = "public")
  18. @Data
  19. public class GasMonitorData implements Serializable {
  20. /**
  21. * 主键ID
  22. */
  23. @TableId(value = "id", type = IdType.ASSIGN_UUID)
  24. private String id;
  25. /**
  26. * 帧类型
  27. */
  28. @TableField(value = "frame_type")
  29. private Integer frameType;
  30. /**
  31. * MAC地址
  32. */
  33. @TableField(value = "mac_address")
  34. private String macAddress;
  35. /**
  36. * 16位短地址
  37. */
  38. @TableField(value = "short_address")
  39. private String shortAddress;
  40. /**
  41. * 自动应答选项
  42. */
  43. @TableField(value = "auto_reply_option")
  44. private Integer autoReplyOption;
  45. /**
  46. * 数据帧序号
  47. */
  48. @TableField(value = "sequence_no")
  49. private Integer sequenceNo;
  50. /**
  51. * 命令字
  52. */
  53. @TableField(value = "command")
  54. private Integer command;
  55. /**
  56. * 设备属性
  57. */
  58. @TableField(value = "device_attr")
  59. private Integer deviceAttr;
  60. /**
  61. * 协议版本
  62. */
  63. @TableField(value = "protocol_version")
  64. private String protocolVersion;
  65. /**
  66. * 报警信息(解析后二进制)
  67. */
  68. @TableField(value = "alarm_info")
  69. private Integer alarmInfo;
  70. /**
  71. * 设备上报时间戳
  72. */
  73. @TableField(value = "report_time")
  74. private LocalDateTime reportTime;
  75. /**
  76. * 气体浓度(如%LEL)
  77. */
  78. @TableField(value = "gas_concentration")
  79. private BigDecimal gasConcentration;
  80. /**
  81. * 气体类型(如CH4)
  82. */
  83. @TableField(value = "gas_type")
  84. private String gasType;
  85. /**
  86. * 气体单位
  87. */
  88. @TableField(value = "gas_unit")
  89. private String gasUnit;
  90. /**
  91. * 电池电量
  92. */
  93. @TableField(value = "battery")
  94. private BigDecimal battery;
  95. /**
  96. * 信号强度
  97. */
  98. @TableField(value = "signal_strength")
  99. private Float signalStrength;
  100. /**
  101. * 温度
  102. */
  103. @TableField(value = "temperature")
  104. private Float temperature;
  105. /**
  106. * 湿度
  107. */
  108. @TableField(value = "humidity")
  109. private Float humidity;
  110. /**
  111. * 经度
  112. */
  113. @TableField(value = "longitude")
  114. private BigDecimal longitude;
  115. /**
  116. * 纬度
  117. */
  118. @TableField(value = "latitude")
  119. private BigDecimal latitude;
  120. /**
  121. * 入库时间
  122. */
  123. @TableField(value = "create_time")
  124. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  125. private LocalDateTime createTime;
  126. @TableField(exist = false)
  127. private static final long serialVersionUID = 1L;
  128. public Map<String, Boolean> parseAlarmBits() {
  129. Map<String, Boolean> alarmBits = new HashMap<>();
  130. if (alarmInfo == null) {
  131. alarmInfo = 0;
  132. }
  133. alarmBits.put("unknownAlarm", (alarmInfo & (1 << 0)) != 0); // Bit0:未知报警
  134. alarmBits.put("highAlarm", (alarmInfo & (1 << 1)) != 0); // Bit1:高报警
  135. alarmBits.put("overRange", (alarmInfo & (1 << 2)) != 0); // Bit2:超量程
  136. alarmBits.put("calibrationCycle", (alarmInfo & (1 << 3)) != 0); // Bit3:标定周期
  137. alarmBits.put("overLife", (alarmInfo & (1 << 4)) != 0); // Bit4:超寿命
  138. alarmBits.put("fallAlarm", (alarmInfo & (1 << 5)) != 0); // Bit5:跌倒报警
  139. alarmBits.put("undervoltage", (alarmInfo & (1 << 6)) != 0); // Bit6:欠压报警
  140. alarmBits.put("rangeAlarm", (alarmInfo & (1 << 7)) != 0); // Bit7:区间报警
  141. alarmBits.put("keyAlarm", (alarmInfo & (1 << 8)) != 0); // Bit8:按键报警
  142. alarmBits.put("vibrationAlarm", (alarmInfo & (1 << 9)) != 0); // Bit9:震动报警
  143. alarmBits.put("waterLevelAlarm", (alarmInfo & (1 << 10)) != 0); // Bit10:水位报警
  144. alarmBits.put("powerOffAlarm", (alarmInfo & (1 << 11)) != 0); // Bit11:断电报警
  145. alarmBits.put("sensorFault", (alarmInfo & (1 << 12)) != 0); // Bit12:传感器故障
  146. alarmBits.put("overHumidity", (alarmInfo & (1 << 13)) != 0); // Bit13:超湿报警
  147. alarmBits.put("overTemperature", (alarmInfo & (1 << 14)) != 0); // Bit14:超温报警
  148. alarmBits.put("systemFault", (alarmInfo & (1 << 15)) != 0); // Bit15:系统故障
  149. return alarmBits;
  150. }
  151. }