diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
new file mode 100644
index 0000000..9f3b5e6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceBizDataMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备业务数据 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceBizDataServiceImpl extends ServiceImpl implements IDeviceBizDataService {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
new file mode 100644
index 0000000..9f3b5e6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceBizDataMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备业务数据 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceBizDataServiceImpl extends ServiceImpl implements IDeviceBizDataService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
new file mode 100644
index 0000000..79b3f7e
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceFrameLogMapper;
+import com.casic.missiles.model.DeviceFrameLog;
+import com.casic.missiles.service.IDeviceFrameLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备消息日志 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceFrameLogServiceImpl extends ServiceImpl implements IDeviceFrameLogService {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
new file mode 100644
index 0000000..9f3b5e6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceBizDataMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备业务数据 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceBizDataServiceImpl extends ServiceImpl implements IDeviceBizDataService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
new file mode 100644
index 0000000..79b3f7e
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceFrameLogMapper;
+import com.casic.missiles.model.DeviceFrameLog;
+import com.casic.missiles.service.IDeviceFrameLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备消息日志 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceFrameLogServiceImpl extends ServiceImpl implements IDeviceFrameLogService {
+
+}
diff --git a/pom.xml b/pom.xml
index a194074..c260019 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
2.0.0.alpha
2.5.4
2.5.6
- 1.2.62
+ 1.2.83
2.0.0.alpha
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
new file mode 100644
index 0000000..9f3b5e6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceBizDataMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备业务数据 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceBizDataServiceImpl extends ServiceImpl implements IDeviceBizDataService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
new file mode 100644
index 0000000..79b3f7e
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceFrameLogMapper;
+import com.casic.missiles.model.DeviceFrameLog;
+import com.casic.missiles.service.IDeviceFrameLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备消息日志 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceFrameLogServiceImpl extends ServiceImpl implements IDeviceFrameLogService {
+
+}
diff --git a/pom.xml b/pom.xml
index a194074..c260019 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
2.0.0.alpha
2.5.4
2.5.6
- 1.2.62
+ 1.2.83
2.0.0.alpha
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
index 49d5afa..faf5f84 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
@@ -1,9 +1,15 @@
package com.casic.missiles.controller;
+import cn.hutool.core.lang.generator.UUIDGenerator;
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.frame.BirmmBaseFrame;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import com.casic.missiles.service.IDeviceFrameLogService;
import com.casic.missiles.service.IGeneralService;
+import com.casic.missiles.util.SnowflakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.buf.HexUtils;
import org.springframework.web.bind.annotation.RequestBody;
@@ -12,6 +18,7 @@
import javax.annotation.Resource;
import java.util.Base64;
+import java.util.List;
import java.util.Map;
@RestController
@@ -21,6 +28,12 @@
@Resource
IGeneralService defaultService;
+ @Resource
+ IDeviceFrameLogService frameLogService;
+
+ @Resource
+ IDeviceBizDataService bizDataService;
+
@RequestMapping("/aep/data/string")
public Object aepDataString(@RequestBody Map dataMap) {
log.info("收到AEP平台推送消息:{}", JSONObject.toJSONString(dataMap));
@@ -44,17 +57,38 @@
BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes);
if (birmmFrame != null) {
- log.info("HEX字节消息解析成功:{}", birmmFrame);
+ log.info("HEX字节消息解析成功:{}", birmmFrame.getClass().getSimpleName());
// 处理业务数据
birmmFrame.doParseBizTag();
// 保存日志
+ DeviceFrameLog frameLog = new DeviceFrameLog();
+ frameLog.setId(new SnowflakeUtil().nextId());
+ frameLog.setDevcode(birmmFrame.getDevCode());
+ frameLog.setRawFrame(HexUtils.toHexString(frameBytes).toUpperCase());
+ frameLog.setRawBizFrame(birmmFrame.getRawBizFrameString());
+ frameLog.setDataJson(birmmFrame.toJSON().toJSONString());
+ frameLog.setLogtime(birmmFrame.getLogTime());
+ frameLogService.save(frameLog);
// 保存业务数据
+ if (birmmFrame.isBizDataFrame()) {
+ List bizDataList = birmmFrame.convertToBizDataList();
+ for (DeviceBizData bizData : bizDataList) {
+ // 设置其他的属性
+ bizData.setId(new SnowflakeUtil().nextId());
+ bizData.setFrameLogId(frameLog.getId()); // 关联日志记录id
+ bizData.setDevcode(birmmFrame.getDevCode());
+ bizData.setDeviceType(Integer.valueOf(birmmFrame.getDeviceType()));
+ bizData.setLogtime(birmmFrame.getLogTime());
+ }
+
+ bizDataService.saveBatch(bizDataList);
+ }
// 创建回复消息
-// String replyFrame = protocol
+ String replyMessage = defaultService.replyMessage(birmmFrame);
birmmFrame.reply();
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
new file mode 100644
index 0000000..9f3b5e6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceBizDataMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备业务数据 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceBizDataServiceImpl extends ServiceImpl implements IDeviceBizDataService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
new file mode 100644
index 0000000..79b3f7e
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceFrameLogMapper;
+import com.casic.missiles.model.DeviceFrameLog;
+import com.casic.missiles.service.IDeviceFrameLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备消息日志 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceFrameLogServiceImpl extends ServiceImpl implements IDeviceFrameLogService {
+
+}
diff --git a/pom.xml b/pom.xml
index a194074..c260019 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
2.0.0.alpha
2.5.4
2.5.6
- 1.2.62
+ 1.2.83
2.0.0.alpha
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
index 49d5afa..faf5f84 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
@@ -1,9 +1,15 @@
package com.casic.missiles.controller;
+import cn.hutool.core.lang.generator.UUIDGenerator;
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.frame.BirmmBaseFrame;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import com.casic.missiles.service.IDeviceFrameLogService;
import com.casic.missiles.service.IGeneralService;
+import com.casic.missiles.util.SnowflakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.buf.HexUtils;
import org.springframework.web.bind.annotation.RequestBody;
@@ -12,6 +18,7 @@
import javax.annotation.Resource;
import java.util.Base64;
+import java.util.List;
import java.util.Map;
@RestController
@@ -21,6 +28,12 @@
@Resource
IGeneralService defaultService;
+ @Resource
+ IDeviceFrameLogService frameLogService;
+
+ @Resource
+ IDeviceBizDataService bizDataService;
+
@RequestMapping("/aep/data/string")
public Object aepDataString(@RequestBody Map dataMap) {
log.info("收到AEP平台推送消息:{}", JSONObject.toJSONString(dataMap));
@@ -44,17 +57,38 @@
BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes);
if (birmmFrame != null) {
- log.info("HEX字节消息解析成功:{}", birmmFrame);
+ log.info("HEX字节消息解析成功:{}", birmmFrame.getClass().getSimpleName());
// 处理业务数据
birmmFrame.doParseBizTag();
// 保存日志
+ DeviceFrameLog frameLog = new DeviceFrameLog();
+ frameLog.setId(new SnowflakeUtil().nextId());
+ frameLog.setDevcode(birmmFrame.getDevCode());
+ frameLog.setRawFrame(HexUtils.toHexString(frameBytes).toUpperCase());
+ frameLog.setRawBizFrame(birmmFrame.getRawBizFrameString());
+ frameLog.setDataJson(birmmFrame.toJSON().toJSONString());
+ frameLog.setLogtime(birmmFrame.getLogTime());
+ frameLogService.save(frameLog);
// 保存业务数据
+ if (birmmFrame.isBizDataFrame()) {
+ List bizDataList = birmmFrame.convertToBizDataList();
+ for (DeviceBizData bizData : bizDataList) {
+ // 设置其他的属性
+ bizData.setId(new SnowflakeUtil().nextId());
+ bizData.setFrameLogId(frameLog.getId()); // 关联日志记录id
+ bizData.setDevcode(birmmFrame.getDevCode());
+ bizData.setDeviceType(Integer.valueOf(birmmFrame.getDeviceType()));
+ bizData.setLogtime(birmmFrame.getLogTime());
+ }
+
+ bizDataService.saveBatch(bizDataList);
+ }
// 创建回复消息
-// String replyFrame = protocol
+ String replyMessage = defaultService.replyMessage(birmmFrame);
birmmFrame.reply();
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
index 6a14f09..1b25138 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
@@ -1,8 +1,12 @@
package com.casic.missiles.frame;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.model.DeviceBizData;
import lombok.Data;
import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -21,6 +25,9 @@
// 设备编号
String devCode;
+ // 设备类型
+ String deviceType;
+
// 通信方式
String communicationType;
@@ -36,7 +43,6 @@
// 业务字段List
String tagListString;
-// List tagList;
Map tagList;
// CRC
@@ -44,6 +50,23 @@
LocalDateTime logTime;
+ String rawBizFrameString;
+
+ public boolean isBizDataFrame() {
+ return false;
+ }
+
+ public List convertToBizDataList() {
+ return new ArrayList<>();
+ }
+
+ public JSONObject toJSON() {
+ JSONObject json = new JSONObject();
+ json.put("devCode", getDevCode());
+ json.put("ts", getLogTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+ return json;
+ }
+
public void doParseBizTag() {}
public void reply() {}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
new file mode 100644
index 0000000..9f3b5e6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceBizDataMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备业务数据 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceBizDataServiceImpl extends ServiceImpl implements IDeviceBizDataService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
new file mode 100644
index 0000000..79b3f7e
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceFrameLogMapper;
+import com.casic.missiles.model.DeviceFrameLog;
+import com.casic.missiles.service.IDeviceFrameLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备消息日志 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceFrameLogServiceImpl extends ServiceImpl implements IDeviceFrameLogService {
+
+}
diff --git a/pom.xml b/pom.xml
index a194074..c260019 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
2.0.0.alpha
2.5.4
2.5.6
- 1.2.62
+ 1.2.83
2.0.0.alpha
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
index 49d5afa..faf5f84 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
@@ -1,9 +1,15 @@
package com.casic.missiles.controller;
+import cn.hutool.core.lang.generator.UUIDGenerator;
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.frame.BirmmBaseFrame;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import com.casic.missiles.service.IDeviceFrameLogService;
import com.casic.missiles.service.IGeneralService;
+import com.casic.missiles.util.SnowflakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.buf.HexUtils;
import org.springframework.web.bind.annotation.RequestBody;
@@ -12,6 +18,7 @@
import javax.annotation.Resource;
import java.util.Base64;
+import java.util.List;
import java.util.Map;
@RestController
@@ -21,6 +28,12 @@
@Resource
IGeneralService defaultService;
+ @Resource
+ IDeviceFrameLogService frameLogService;
+
+ @Resource
+ IDeviceBizDataService bizDataService;
+
@RequestMapping("/aep/data/string")
public Object aepDataString(@RequestBody Map dataMap) {
log.info("收到AEP平台推送消息:{}", JSONObject.toJSONString(dataMap));
@@ -44,17 +57,38 @@
BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes);
if (birmmFrame != null) {
- log.info("HEX字节消息解析成功:{}", birmmFrame);
+ log.info("HEX字节消息解析成功:{}", birmmFrame.getClass().getSimpleName());
// 处理业务数据
birmmFrame.doParseBizTag();
// 保存日志
+ DeviceFrameLog frameLog = new DeviceFrameLog();
+ frameLog.setId(new SnowflakeUtil().nextId());
+ frameLog.setDevcode(birmmFrame.getDevCode());
+ frameLog.setRawFrame(HexUtils.toHexString(frameBytes).toUpperCase());
+ frameLog.setRawBizFrame(birmmFrame.getRawBizFrameString());
+ frameLog.setDataJson(birmmFrame.toJSON().toJSONString());
+ frameLog.setLogtime(birmmFrame.getLogTime());
+ frameLogService.save(frameLog);
// 保存业务数据
+ if (birmmFrame.isBizDataFrame()) {
+ List bizDataList = birmmFrame.convertToBizDataList();
+ for (DeviceBizData bizData : bizDataList) {
+ // 设置其他的属性
+ bizData.setId(new SnowflakeUtil().nextId());
+ bizData.setFrameLogId(frameLog.getId()); // 关联日志记录id
+ bizData.setDevcode(birmmFrame.getDevCode());
+ bizData.setDeviceType(Integer.valueOf(birmmFrame.getDeviceType()));
+ bizData.setLogtime(birmmFrame.getLogTime());
+ }
+
+ bizDataService.saveBatch(bizDataList);
+ }
// 创建回复消息
-// String replyFrame = protocol
+ String replyMessage = defaultService.replyMessage(birmmFrame);
birmmFrame.reply();
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
index 6a14f09..1b25138 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
@@ -1,8 +1,12 @@
package com.casic.missiles.frame;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.model.DeviceBizData;
import lombok.Data;
import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -21,6 +25,9 @@
// 设备编号
String devCode;
+ // 设备类型
+ String deviceType;
+
// 通信方式
String communicationType;
@@ -36,7 +43,6 @@
// 业务字段List
String tagListString;
-// List tagList;
Map tagList;
// CRC
@@ -44,6 +50,23 @@
LocalDateTime logTime;
+ String rawBizFrameString;
+
+ public boolean isBizDataFrame() {
+ return false;
+ }
+
+ public List convertToBizDataList() {
+ return new ArrayList<>();
+ }
+
+ public JSONObject toJSON() {
+ JSONObject json = new JSONObject();
+ json.put("devCode", getDevCode());
+ json.put("ts", getLogTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+ return json;
+ }
+
public void doParseBizTag() {}
public void reply() {}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
index 43f75af..e6de7b7 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
@@ -1,5 +1,6 @@
package com.casic.missiles.frame.methane;
+import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import java.time.LocalDateTime;
@@ -16,4 +17,11 @@
public String toString() {
return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]";
}
+
+ public JSONObject toJSON() {
+ JSONObject json = new JSONObject();
+ json.put("gas", String.format("%.3f", value));
+ json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+ return json;
+ }
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
new file mode 100644
index 0000000..9f3b5e6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceBizDataMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备业务数据 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceBizDataServiceImpl extends ServiceImpl implements IDeviceBizDataService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
new file mode 100644
index 0000000..79b3f7e
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceFrameLogMapper;
+import com.casic.missiles.model.DeviceFrameLog;
+import com.casic.missiles.service.IDeviceFrameLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备消息日志 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceFrameLogServiceImpl extends ServiceImpl implements IDeviceFrameLogService {
+
+}
diff --git a/pom.xml b/pom.xml
index a194074..c260019 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
2.0.0.alpha
2.5.4
2.5.6
- 1.2.62
+ 1.2.83
2.0.0.alpha
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
index 49d5afa..faf5f84 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
@@ -1,9 +1,15 @@
package com.casic.missiles.controller;
+import cn.hutool.core.lang.generator.UUIDGenerator;
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.frame.BirmmBaseFrame;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import com.casic.missiles.service.IDeviceFrameLogService;
import com.casic.missiles.service.IGeneralService;
+import com.casic.missiles.util.SnowflakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.buf.HexUtils;
import org.springframework.web.bind.annotation.RequestBody;
@@ -12,6 +18,7 @@
import javax.annotation.Resource;
import java.util.Base64;
+import java.util.List;
import java.util.Map;
@RestController
@@ -21,6 +28,12 @@
@Resource
IGeneralService defaultService;
+ @Resource
+ IDeviceFrameLogService frameLogService;
+
+ @Resource
+ IDeviceBizDataService bizDataService;
+
@RequestMapping("/aep/data/string")
public Object aepDataString(@RequestBody Map dataMap) {
log.info("收到AEP平台推送消息:{}", JSONObject.toJSONString(dataMap));
@@ -44,17 +57,38 @@
BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes);
if (birmmFrame != null) {
- log.info("HEX字节消息解析成功:{}", birmmFrame);
+ log.info("HEX字节消息解析成功:{}", birmmFrame.getClass().getSimpleName());
// 处理业务数据
birmmFrame.doParseBizTag();
// 保存日志
+ DeviceFrameLog frameLog = new DeviceFrameLog();
+ frameLog.setId(new SnowflakeUtil().nextId());
+ frameLog.setDevcode(birmmFrame.getDevCode());
+ frameLog.setRawFrame(HexUtils.toHexString(frameBytes).toUpperCase());
+ frameLog.setRawBizFrame(birmmFrame.getRawBizFrameString());
+ frameLog.setDataJson(birmmFrame.toJSON().toJSONString());
+ frameLog.setLogtime(birmmFrame.getLogTime());
+ frameLogService.save(frameLog);
// 保存业务数据
+ if (birmmFrame.isBizDataFrame()) {
+ List bizDataList = birmmFrame.convertToBizDataList();
+ for (DeviceBizData bizData : bizDataList) {
+ // 设置其他的属性
+ bizData.setId(new SnowflakeUtil().nextId());
+ bizData.setFrameLogId(frameLog.getId()); // 关联日志记录id
+ bizData.setDevcode(birmmFrame.getDevCode());
+ bizData.setDeviceType(Integer.valueOf(birmmFrame.getDeviceType()));
+ bizData.setLogtime(birmmFrame.getLogTime());
+ }
+
+ bizDataService.saveBatch(bizDataList);
+ }
// 创建回复消息
-// String replyFrame = protocol
+ String replyMessage = defaultService.replyMessage(birmmFrame);
birmmFrame.reply();
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
index 6a14f09..1b25138 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
@@ -1,8 +1,12 @@
package com.casic.missiles.frame;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.model.DeviceBizData;
import lombok.Data;
import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -21,6 +25,9 @@
// 设备编号
String devCode;
+ // 设备类型
+ String deviceType;
+
// 通信方式
String communicationType;
@@ -36,7 +43,6 @@
// 业务字段List
String tagListString;
-// List tagList;
Map tagList;
// CRC
@@ -44,6 +50,23 @@
LocalDateTime logTime;
+ String rawBizFrameString;
+
+ public boolean isBizDataFrame() {
+ return false;
+ }
+
+ public List convertToBizDataList() {
+ return new ArrayList<>();
+ }
+
+ public JSONObject toJSON() {
+ JSONObject json = new JSONObject();
+ json.put("devCode", getDevCode());
+ json.put("ts", getLogTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+ return json;
+ }
+
public void doParseBizTag() {}
public void reply() {}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
index 43f75af..e6de7b7 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
@@ -1,5 +1,6 @@
package com.casic.missiles.frame.methane;
+import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import java.time.LocalDateTime;
@@ -16,4 +17,11 @@
public String toString() {
return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]";
}
+
+ public JSONObject toJSON() {
+ JSONObject json = new JSONObject();
+ json.put("gas", String.format("%.3f", value));
+ json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+ return json;
+ }
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java
index 34a4cd9..5160fc2 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java
@@ -1,14 +1,18 @@
package com.casic.missiles.frame.methane;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.enums.BirmmTagAttributeEnums;
import com.casic.missiles.frame.BirmmBaseFrame;
-import com.casic.missiles.frame.commanTag.DateTag;
-import com.casic.missiles.frame.commanTag.SensorStateTag;
-import com.casic.missiles.frame.commanTag.UploadTag;
+import com.casic.missiles.frame.commanTag.*;
+import com.casic.missiles.model.DeviceBizData;
import com.casic.missiles.util.BytesUtil;
+import javafx.scene.control.Cell;
import lombok.extern.slf4j.Slf4j;
import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@@ -23,6 +27,83 @@
}
@Override
+ public JSONObject toJSON() {
+ JSONObject json = super.toJSON();
+ json.put("devType", "Methane");
+ json.put("mType", "Data");
+
+ JSONObject body = new JSONObject();
+ body.put("bType", "MethaneData");
+ body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+ if (getTagList().containsKey(CellTag.class.getSimpleName())) {
+ CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName());
+ body.put("cell", cellTag.getCellVal());
+ }
+ if (getTagList().containsKey(PCITag.class.getSimpleName())) {
+ PCITag pciTag = (PCITag) getTagList().get(PCITag.class.getSimpleName());
+ body.put("pci", pciTag.getPci());
+ }
+ if (getTagList().containsKey(RSRPTag.class.getSimpleName())) {
+ RSRPTag rsrpTag = (RSRPTag) getTagList().get(RSRPTag.class.getSimpleName());
+ body.put("rsrp", rsrpTag.getRsrp());
+ }
+ if (getTagList().containsKey(SNRTag.class.getSimpleName())) {
+ SNRTag snrTag = (SNRTag) getTagList().get(SNRTag.class.getSimpleName());
+ body.put("snr", snrTag.getSnr());
+ }
+
+ JSONArray datas = new JSONArray();
+ for (MethaneBizData bizData : bizDataList) {
+ datas.add(bizData.toJSON());
+ }
+ body.put("datas", datas);
+
+ json.put("mBody", body);
+
+ return json;
+ }
+
+ @Override
+ public boolean isBizDataFrame() {
+ return true;
+ }
+
+ @Override
+ public List convertToBizDataList() {
+ List resultList = new ArrayList<>();
+ for (MethaneBizData data : this.bizDataList) {
+ DeviceBizData bizData = new DeviceBizData();
+ bizData.setBizType(String.valueOf(data.getBizType()));
+ bizData.setValue(String.format("%.3f", data.getValue()));
+ bizData.setUptime(data.getUptime());
+
+ // 电量
+ if (getTagList().containsKey(CellTag.class.getSimpleName())) {
+ CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName());
+ bizData.setCell(cellTag.getCellVal());
+ }
+
+ // 信号质量
+ if (getTagList().containsKey(PCITag.class.getSimpleName())) {
+ PCITag pciTag = (PCITag) getTagList().get(PCITag.class.getSimpleName());
+ bizData.setPci(pciTag.getPci());
+ }
+ if (getTagList().containsKey(RSRPTag.class.getSimpleName())) {
+ RSRPTag rsrpTag = (RSRPTag) getTagList().get(RSRPTag.class.getSimpleName());
+ bizData.setRsrp(rsrpTag.getRsrp());
+ }
+ if (getTagList().containsKey(SNRTag.class.getSimpleName())) {
+ SNRTag snrTag = (SNRTag) getTagList().get(SNRTag.class.getSimpleName());
+ bizData.setSnr(snrTag.getSnr());
+ }
+
+ resultList.add(bizData);
+ }
+
+ return resultList;
+ }
+
+ @Override
public void doParseBizTag() {
if (getTagList().containsKey(UploadTag.class.getSimpleName())) {
handleUploadTag();
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
new file mode 100644
index 0000000..9f3b5e6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceBizDataMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备业务数据 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceBizDataServiceImpl extends ServiceImpl implements IDeviceBizDataService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
new file mode 100644
index 0000000..79b3f7e
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceFrameLogMapper;
+import com.casic.missiles.model.DeviceFrameLog;
+import com.casic.missiles.service.IDeviceFrameLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备消息日志 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceFrameLogServiceImpl extends ServiceImpl implements IDeviceFrameLogService {
+
+}
diff --git a/pom.xml b/pom.xml
index a194074..c260019 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
2.0.0.alpha
2.5.4
2.5.6
- 1.2.62
+ 1.2.83
2.0.0.alpha
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
index 49d5afa..faf5f84 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
@@ -1,9 +1,15 @@
package com.casic.missiles.controller;
+import cn.hutool.core.lang.generator.UUIDGenerator;
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.frame.BirmmBaseFrame;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import com.casic.missiles.service.IDeviceFrameLogService;
import com.casic.missiles.service.IGeneralService;
+import com.casic.missiles.util.SnowflakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.buf.HexUtils;
import org.springframework.web.bind.annotation.RequestBody;
@@ -12,6 +18,7 @@
import javax.annotation.Resource;
import java.util.Base64;
+import java.util.List;
import java.util.Map;
@RestController
@@ -21,6 +28,12 @@
@Resource
IGeneralService defaultService;
+ @Resource
+ IDeviceFrameLogService frameLogService;
+
+ @Resource
+ IDeviceBizDataService bizDataService;
+
@RequestMapping("/aep/data/string")
public Object aepDataString(@RequestBody Map dataMap) {
log.info("收到AEP平台推送消息:{}", JSONObject.toJSONString(dataMap));
@@ -44,17 +57,38 @@
BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes);
if (birmmFrame != null) {
- log.info("HEX字节消息解析成功:{}", birmmFrame);
+ log.info("HEX字节消息解析成功:{}", birmmFrame.getClass().getSimpleName());
// 处理业务数据
birmmFrame.doParseBizTag();
// 保存日志
+ DeviceFrameLog frameLog = new DeviceFrameLog();
+ frameLog.setId(new SnowflakeUtil().nextId());
+ frameLog.setDevcode(birmmFrame.getDevCode());
+ frameLog.setRawFrame(HexUtils.toHexString(frameBytes).toUpperCase());
+ frameLog.setRawBizFrame(birmmFrame.getRawBizFrameString());
+ frameLog.setDataJson(birmmFrame.toJSON().toJSONString());
+ frameLog.setLogtime(birmmFrame.getLogTime());
+ frameLogService.save(frameLog);
// 保存业务数据
+ if (birmmFrame.isBizDataFrame()) {
+ List bizDataList = birmmFrame.convertToBizDataList();
+ for (DeviceBizData bizData : bizDataList) {
+ // 设置其他的属性
+ bizData.setId(new SnowflakeUtil().nextId());
+ bizData.setFrameLogId(frameLog.getId()); // 关联日志记录id
+ bizData.setDevcode(birmmFrame.getDevCode());
+ bizData.setDeviceType(Integer.valueOf(birmmFrame.getDeviceType()));
+ bizData.setLogtime(birmmFrame.getLogTime());
+ }
+
+ bizDataService.saveBatch(bizDataList);
+ }
// 创建回复消息
-// String replyFrame = protocol
+ String replyMessage = defaultService.replyMessage(birmmFrame);
birmmFrame.reply();
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
index 6a14f09..1b25138 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
@@ -1,8 +1,12 @@
package com.casic.missiles.frame;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.model.DeviceBizData;
import lombok.Data;
import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -21,6 +25,9 @@
// 设备编号
String devCode;
+ // 设备类型
+ String deviceType;
+
// 通信方式
String communicationType;
@@ -36,7 +43,6 @@
// 业务字段List
String tagListString;
-// List tagList;
Map tagList;
// CRC
@@ -44,6 +50,23 @@
LocalDateTime logTime;
+ String rawBizFrameString;
+
+ public boolean isBizDataFrame() {
+ return false;
+ }
+
+ public List convertToBizDataList() {
+ return new ArrayList<>();
+ }
+
+ public JSONObject toJSON() {
+ JSONObject json = new JSONObject();
+ json.put("devCode", getDevCode());
+ json.put("ts", getLogTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+ return json;
+ }
+
public void doParseBizTag() {}
public void reply() {}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
index 43f75af..e6de7b7 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
@@ -1,5 +1,6 @@
package com.casic.missiles.frame.methane;
+import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import java.time.LocalDateTime;
@@ -16,4 +17,11 @@
public String toString() {
return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]";
}
+
+ public JSONObject toJSON() {
+ JSONObject json = new JSONObject();
+ json.put("gas", String.format("%.3f", value));
+ json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+ return json;
+ }
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java
index 34a4cd9..5160fc2 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java
@@ -1,14 +1,18 @@
package com.casic.missiles.frame.methane;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.enums.BirmmTagAttributeEnums;
import com.casic.missiles.frame.BirmmBaseFrame;
-import com.casic.missiles.frame.commanTag.DateTag;
-import com.casic.missiles.frame.commanTag.SensorStateTag;
-import com.casic.missiles.frame.commanTag.UploadTag;
+import com.casic.missiles.frame.commanTag.*;
+import com.casic.missiles.model.DeviceBizData;
import com.casic.missiles.util.BytesUtil;
+import javafx.scene.control.Cell;
import lombok.extern.slf4j.Slf4j;
import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@@ -23,6 +27,83 @@
}
@Override
+ public JSONObject toJSON() {
+ JSONObject json = super.toJSON();
+ json.put("devType", "Methane");
+ json.put("mType", "Data");
+
+ JSONObject body = new JSONObject();
+ body.put("bType", "MethaneData");
+ body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+ if (getTagList().containsKey(CellTag.class.getSimpleName())) {
+ CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName());
+ body.put("cell", cellTag.getCellVal());
+ }
+ if (getTagList().containsKey(PCITag.class.getSimpleName())) {
+ PCITag pciTag = (PCITag) getTagList().get(PCITag.class.getSimpleName());
+ body.put("pci", pciTag.getPci());
+ }
+ if (getTagList().containsKey(RSRPTag.class.getSimpleName())) {
+ RSRPTag rsrpTag = (RSRPTag) getTagList().get(RSRPTag.class.getSimpleName());
+ body.put("rsrp", rsrpTag.getRsrp());
+ }
+ if (getTagList().containsKey(SNRTag.class.getSimpleName())) {
+ SNRTag snrTag = (SNRTag) getTagList().get(SNRTag.class.getSimpleName());
+ body.put("snr", snrTag.getSnr());
+ }
+
+ JSONArray datas = new JSONArray();
+ for (MethaneBizData bizData : bizDataList) {
+ datas.add(bizData.toJSON());
+ }
+ body.put("datas", datas);
+
+ json.put("mBody", body);
+
+ return json;
+ }
+
+ @Override
+ public boolean isBizDataFrame() {
+ return true;
+ }
+
+ @Override
+ public List convertToBizDataList() {
+ List resultList = new ArrayList<>();
+ for (MethaneBizData data : this.bizDataList) {
+ DeviceBizData bizData = new DeviceBizData();
+ bizData.setBizType(String.valueOf(data.getBizType()));
+ bizData.setValue(String.format("%.3f", data.getValue()));
+ bizData.setUptime(data.getUptime());
+
+ // 电量
+ if (getTagList().containsKey(CellTag.class.getSimpleName())) {
+ CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName());
+ bizData.setCell(cellTag.getCellVal());
+ }
+
+ // 信号质量
+ if (getTagList().containsKey(PCITag.class.getSimpleName())) {
+ PCITag pciTag = (PCITag) getTagList().get(PCITag.class.getSimpleName());
+ bizData.setPci(pciTag.getPci());
+ }
+ if (getTagList().containsKey(RSRPTag.class.getSimpleName())) {
+ RSRPTag rsrpTag = (RSRPTag) getTagList().get(RSRPTag.class.getSimpleName());
+ bizData.setRsrp(rsrpTag.getRsrp());
+ }
+ if (getTagList().containsKey(SNRTag.class.getSimpleName())) {
+ SNRTag snrTag = (SNRTag) getTagList().get(SNRTag.class.getSimpleName());
+ bizData.setSnr(snrTag.getSnr());
+ }
+
+ resultList.add(bizData);
+ }
+
+ return resultList;
+ }
+
+ @Override
public void doParseBizTag() {
if (getTagList().containsKey(UploadTag.class.getSimpleName())) {
handleUploadTag();
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java
index b452bc0..4b2c6be 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java
@@ -67,6 +67,9 @@
BirmmBaseFrame birmmFrame = BirmmFrameBuilderFactory.createBirmmFrame(deviceType, operaType);
if (birmmFrame != null) {
birmmFrame.setLogTime(LocalDateTime.now()); // 记录日志时间 取服务器本地时间
+ birmmFrame.setDevCode(devCode);
+ birmmFrame.setDeviceType(deviceType);
+ birmmFrame.setRawBizFrameString(plainTagListStr);
birmmFrame.setTagList(tagList);
return birmmFrame;
@@ -75,4 +78,15 @@
return null;
}
+
+ @Override
+ public String replyMessage(BirmmBaseFrame frameObj) {
+ // 从数据库中查询需要下发配置项
+
+ // 设置校时Tag
+
+ // 调用协议组装
+
+ return null;
+ }
}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
new file mode 100644
index 0000000..383ed59
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceBizDataMapper.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备业务数据 Mapper 接口
+ *
+ */
+public interface DeviceBizDataMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
new file mode 100644
index 0000000..da0e861
--- /dev/null
+++ b/casic-iot-dao/src/main/java/com/casic/missiles/mapper/DeviceFrameLogMapper.java
@@ -0,0 +1,21 @@
+package com.casic.missiles.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.datascope.DataScope;
+import com.casic.missiles.dto.data.DeviceDataListRequest;
+import com.casic.missiles.dto.data.DeviceDataListVO;
+import com.casic.missiles.model.DeviceData;
+import com.casic.missiles.model.DeviceFrameLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 设备消息日志 数据报文 Mapper 接口
+ *
+ */
+public interface DeviceFrameLogMapper extends BaseMapper {
+
+}
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
new file mode 100644
index 0000000..7f0a356
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceBizDataMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, frame_log_id, devcode, device_type, cell, pci, rsrp, snr, biz_type, value, uptime, logtime
+
+
+
diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
new file mode 100644
index 0000000..7f95322
--- /dev/null
+++ b/casic-iot-dao/src/main/resources/mapper/DeviceFrameLogMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, devcode, raw_frame, raw_biz_frame, data_json, logtime
+
+
+
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
new file mode 100644
index 0000000..c25574f
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceBizData.java
@@ -0,0 +1,97 @@
+package com.casic.missiles.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 设备数据 数据报文
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_biz_data")
+public class DeviceBizData implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 编号
+ */
+ @TableField("frame_log_id")
+ private Long frameLogId;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 设备类型
+ */
+ @TableField("device_type")
+ private Integer deviceType;
+
+ /**
+ * 电量
+ */
+ @TableField("cell")
+ private Integer cell;
+
+ /**
+ * PCI
+ */
+ @TableField("pci")
+ private Integer pci;
+
+ /**
+ * RSRP
+ */
+ @TableField("rsrp")
+ private Integer rsrp;
+
+ /**
+ * SNR
+ */
+ @TableField("snr")
+ private Integer snr;
+
+ /**
+ * 业务类型
+ */
+ @TableField("biz_type")
+ private String bizType;
+
+ /**
+ * 数值
+ */
+ @TableField("value")
+ private String value;
+
+ /**
+ * 采集时间
+ */
+ @TableField("uptime")
+ private LocalDateTime uptime;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
new file mode 100644
index 0000000..fc61333
--- /dev/null
+++ b/casic-iot-model/src/main/java/com/casic/missiles/model/DeviceFrameLog.java
@@ -0,0 +1,65 @@
+package com.casic.missiles.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+@Data
+@TableName("device_frame_log")
+public class DeviceFrameLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 设备编号
+ */
+ @TableField("devcode")
+ private String devcode;
+
+ /**
+ * 原始报文
+ */
+ @TableField("raw_frame")
+ private String rawFrame;
+ /**
+ * 业务报文
+ */
+ @TableField("raw_biz_frame")
+ private String rawBizFrame;
+
+ /**
+ * json消息
+ */
+ @TableField("data_json")
+ private String dataJson;
+
+ /**
+ * 记录日期 默认为当前时间
+ */
+ @TableField("logtime")
+ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime logtime;
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
new file mode 100644
index 0000000..700de62
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceBizDataService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceBizData;
+
+/**
+ *
+ * 设备业务数据
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceBizDataService extends IService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
new file mode 100644
index 0000000..c317233
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/IDeviceFrameLogService.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.DeviceFrameLog;
+
+/**
+ *
+ * 设备消息日志
+ *
+ *
+ * @author tanyue
+ * @since 2024-07-16
+ */
+public interface IDeviceFrameLogService extends IService {
+
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
new file mode 100644
index 0000000..9f3b5e6
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceBizDataServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceBizDataMapper;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备业务数据 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceBizDataServiceImpl extends ServiceImpl implements IDeviceBizDataService {
+
+}
diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
new file mode 100644
index 0000000..79b3f7e
--- /dev/null
+++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceFrameLogServiceImpl.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.DeviceFrameLogMapper;
+import com.casic.missiles.model.DeviceFrameLog;
+import com.casic.missiles.service.IDeviceFrameLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 设备消息日志 服务实现
+ */
+@Service
+@RequiredArgsConstructor
+public class DeviceFrameLogServiceImpl extends ServiceImpl implements IDeviceFrameLogService {
+
+}
diff --git a/pom.xml b/pom.xml
index a194074..c260019 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
2.0.0.alpha
2.5.4
2.5.6
- 1.2.62
+ 1.2.83
2.0.0.alpha
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
index 49d5afa..faf5f84 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/controller/GeneralDataReceiver.java
@@ -1,9 +1,15 @@
package com.casic.missiles.controller;
+import cn.hutool.core.lang.generator.UUIDGenerator;
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.frame.BirmmBaseFrame;
+import com.casic.missiles.model.DeviceBizData;
+import com.casic.missiles.model.DeviceFrameLog;
import com.casic.missiles.model.response.ResponseData;
+import com.casic.missiles.service.IDeviceBizDataService;
+import com.casic.missiles.service.IDeviceFrameLogService;
import com.casic.missiles.service.IGeneralService;
+import com.casic.missiles.util.SnowflakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.buf.HexUtils;
import org.springframework.web.bind.annotation.RequestBody;
@@ -12,6 +18,7 @@
import javax.annotation.Resource;
import java.util.Base64;
+import java.util.List;
import java.util.Map;
@RestController
@@ -21,6 +28,12 @@
@Resource
IGeneralService defaultService;
+ @Resource
+ IDeviceFrameLogService frameLogService;
+
+ @Resource
+ IDeviceBizDataService bizDataService;
+
@RequestMapping("/aep/data/string")
public Object aepDataString(@RequestBody Map dataMap) {
log.info("收到AEP平台推送消息:{}", JSONObject.toJSONString(dataMap));
@@ -44,17 +57,38 @@
BirmmBaseFrame birmmFrame = defaultService.doFrameParse(frameBytes);
if (birmmFrame != null) {
- log.info("HEX字节消息解析成功:{}", birmmFrame);
+ log.info("HEX字节消息解析成功:{}", birmmFrame.getClass().getSimpleName());
// 处理业务数据
birmmFrame.doParseBizTag();
// 保存日志
+ DeviceFrameLog frameLog = new DeviceFrameLog();
+ frameLog.setId(new SnowflakeUtil().nextId());
+ frameLog.setDevcode(birmmFrame.getDevCode());
+ frameLog.setRawFrame(HexUtils.toHexString(frameBytes).toUpperCase());
+ frameLog.setRawBizFrame(birmmFrame.getRawBizFrameString());
+ frameLog.setDataJson(birmmFrame.toJSON().toJSONString());
+ frameLog.setLogtime(birmmFrame.getLogTime());
+ frameLogService.save(frameLog);
// 保存业务数据
+ if (birmmFrame.isBizDataFrame()) {
+ List bizDataList = birmmFrame.convertToBizDataList();
+ for (DeviceBizData bizData : bizDataList) {
+ // 设置其他的属性
+ bizData.setId(new SnowflakeUtil().nextId());
+ bizData.setFrameLogId(frameLog.getId()); // 关联日志记录id
+ bizData.setDevcode(birmmFrame.getDevCode());
+ bizData.setDeviceType(Integer.valueOf(birmmFrame.getDeviceType()));
+ bizData.setLogtime(birmmFrame.getLogTime());
+ }
+
+ bizDataService.saveBatch(bizDataList);
+ }
// 创建回复消息
-// String replyFrame = protocol
+ String replyMessage = defaultService.replyMessage(birmmFrame);
birmmFrame.reply();
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
index 6a14f09..1b25138 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/BirmmBaseFrame.java
@@ -1,8 +1,12 @@
package com.casic.missiles.frame;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.model.DeviceBizData;
import lombok.Data;
import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -21,6 +25,9 @@
// 设备编号
String devCode;
+ // 设备类型
+ String deviceType;
+
// 通信方式
String communicationType;
@@ -36,7 +43,6 @@
// 业务字段List
String tagListString;
-// List tagList;
Map tagList;
// CRC
@@ -44,6 +50,23 @@
LocalDateTime logTime;
+ String rawBizFrameString;
+
+ public boolean isBizDataFrame() {
+ return false;
+ }
+
+ public List convertToBizDataList() {
+ return new ArrayList<>();
+ }
+
+ public JSONObject toJSON() {
+ JSONObject json = new JSONObject();
+ json.put("devCode", getDevCode());
+ json.put("ts", getLogTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+ return json;
+ }
+
public void doParseBizTag() {}
public void reply() {}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
index 43f75af..e6de7b7 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneBizData.java
@@ -1,5 +1,6 @@
package com.casic.missiles.frame.methane;
+import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import java.time.LocalDateTime;
@@ -16,4 +17,11 @@
public String toString() {
return "[" + uptime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) + "][" + value + "][" + bizType + "]";
}
+
+ public JSONObject toJSON() {
+ JSONObject json = new JSONObject();
+ json.put("gas", String.format("%.3f", value));
+ json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+ return json;
+ }
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java
index 34a4cd9..5160fc2 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/frame/methane/MethaneTrapRequestFrame.java
@@ -1,14 +1,18 @@
package com.casic.missiles.frame.methane;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.enums.BirmmTagAttributeEnums;
import com.casic.missiles.frame.BirmmBaseFrame;
-import com.casic.missiles.frame.commanTag.DateTag;
-import com.casic.missiles.frame.commanTag.SensorStateTag;
-import com.casic.missiles.frame.commanTag.UploadTag;
+import com.casic.missiles.frame.commanTag.*;
+import com.casic.missiles.model.DeviceBizData;
import com.casic.missiles.util.BytesUtil;
+import javafx.scene.control.Cell;
import lombok.extern.slf4j.Slf4j;
import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@@ -23,6 +27,83 @@
}
@Override
+ public JSONObject toJSON() {
+ JSONObject json = super.toJSON();
+ json.put("devType", "Methane");
+ json.put("mType", "Data");
+
+ JSONObject body = new JSONObject();
+ body.put("bType", "MethaneData");
+ body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+ if (getTagList().containsKey(CellTag.class.getSimpleName())) {
+ CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName());
+ body.put("cell", cellTag.getCellVal());
+ }
+ if (getTagList().containsKey(PCITag.class.getSimpleName())) {
+ PCITag pciTag = (PCITag) getTagList().get(PCITag.class.getSimpleName());
+ body.put("pci", pciTag.getPci());
+ }
+ if (getTagList().containsKey(RSRPTag.class.getSimpleName())) {
+ RSRPTag rsrpTag = (RSRPTag) getTagList().get(RSRPTag.class.getSimpleName());
+ body.put("rsrp", rsrpTag.getRsrp());
+ }
+ if (getTagList().containsKey(SNRTag.class.getSimpleName())) {
+ SNRTag snrTag = (SNRTag) getTagList().get(SNRTag.class.getSimpleName());
+ body.put("snr", snrTag.getSnr());
+ }
+
+ JSONArray datas = new JSONArray();
+ for (MethaneBizData bizData : bizDataList) {
+ datas.add(bizData.toJSON());
+ }
+ body.put("datas", datas);
+
+ json.put("mBody", body);
+
+ return json;
+ }
+
+ @Override
+ public boolean isBizDataFrame() {
+ return true;
+ }
+
+ @Override
+ public List convertToBizDataList() {
+ List resultList = new ArrayList<>();
+ for (MethaneBizData data : this.bizDataList) {
+ DeviceBizData bizData = new DeviceBizData();
+ bizData.setBizType(String.valueOf(data.getBizType()));
+ bizData.setValue(String.format("%.3f", data.getValue()));
+ bizData.setUptime(data.getUptime());
+
+ // 电量
+ if (getTagList().containsKey(CellTag.class.getSimpleName())) {
+ CellTag cellTag = (CellTag) getTagList().get(CellTag.class.getSimpleName());
+ bizData.setCell(cellTag.getCellVal());
+ }
+
+ // 信号质量
+ if (getTagList().containsKey(PCITag.class.getSimpleName())) {
+ PCITag pciTag = (PCITag) getTagList().get(PCITag.class.getSimpleName());
+ bizData.setPci(pciTag.getPci());
+ }
+ if (getTagList().containsKey(RSRPTag.class.getSimpleName())) {
+ RSRPTag rsrpTag = (RSRPTag) getTagList().get(RSRPTag.class.getSimpleName());
+ bizData.setRsrp(rsrpTag.getRsrp());
+ }
+ if (getTagList().containsKey(SNRTag.class.getSimpleName())) {
+ SNRTag snrTag = (SNRTag) getTagList().get(SNRTag.class.getSimpleName());
+ bizData.setSnr(snrTag.getSnr());
+ }
+
+ resultList.add(bizData);
+ }
+
+ return resultList;
+ }
+
+ @Override
public void doParseBizTag() {
if (getTagList().containsKey(UploadTag.class.getSimpleName())) {
handleUploadTag();
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java
index b452bc0..4b2c6be 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/service/GeneralServiceImpl.java
@@ -67,6 +67,9 @@
BirmmBaseFrame birmmFrame = BirmmFrameBuilderFactory.createBirmmFrame(deviceType, operaType);
if (birmmFrame != null) {
birmmFrame.setLogTime(LocalDateTime.now()); // 记录日志时间 取服务器本地时间
+ birmmFrame.setDevCode(devCode);
+ birmmFrame.setDeviceType(deviceType);
+ birmmFrame.setRawBizFrameString(plainTagListStr);
birmmFrame.setTagList(tagList);
return birmmFrame;
@@ -75,4 +78,15 @@
return null;
}
+
+ @Override
+ public String replyMessage(BirmmBaseFrame frameObj) {
+ // 从数据库中查询需要下发配置项
+
+ // 设置校时Tag
+
+ // 调用协议组装
+
+ return null;
+ }
}
diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/IGeneralService.java b/sensorhub-core/src/main/java/com/casic/missiles/service/IGeneralService.java
index 93cc332..6c876a7 100644
--- a/sensorhub-core/src/main/java/com/casic/missiles/service/IGeneralService.java
+++ b/sensorhub-core/src/main/java/com/casic/missiles/service/IGeneralService.java
@@ -10,4 +10,11 @@
* @return
*/
BirmmBaseFrame doFrameParse(byte[] frame);
+
+ /**
+ * 查找需要下发的配置
+ * 组装下发消息帧
+ * @return
+ */
+ String replyMessage(BirmmBaseFrame frameObj);
}