Sfoglia il codice sorgente

feat(telemetry): 新增平升遥测终端协议数据实体及服务

- 创建遥测数据实体类 TelemetryData,包含协议字段映射
- 添加 MyBatis Mapper 接口和 XML 配置文件
- 生成对应的 Service 层接口与实现类- 支持协议版本 2.2.1 和 2.2.3 的字段定义
- 集成 LocalDateTime 时间格式化配置- 使用 MyBatis Plus 实现基础 CRUD 操作
林仔 7 mesi fa
parent
commit
42657c7e8f

+ 204 - 0
telemetry-service/src/main/java/com/zksy/telemetry/domain/TelemetryData.java

@@ -0,0 +1,204 @@
+package com.zksy.telemetry.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 平升遥测终端协议表
+ * @TableName telemetry_data
+ */
+@TableName(value = "telemetry_data")
+@Data
+public class TelemetryData implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private String id;
+
+    /**
+     * 系统识别码
+     */
+    @TableField(value = "system_identifier")
+    private String systemIdentifier;
+
+    /**
+     * 整帧长度(新增:协议2.2.1)
+     */
+    @TableField(value = "frame_length")
+    private String frameLength;
+
+    /**
+     * 包序号(新增:协议2.2.1)
+     */
+    @TableField(value = "packet_sequence")
+    private String packetSequence;
+
+    /**
+     * 数据类型(0x31=上报历史记录,0x34=结束通讯)
+     */
+    @TableField(value = "data_type")
+    private String dataType;
+
+    /**
+     * 源地址(BCD格式,如“13812345678”)
+     */
+    @TableField(value = "source_addr")
+    private String sourceAddr;
+
+    /**
+     * 目的地址长度
+     */
+    @TableField(value = "dest_addr_length")
+    private String destAddrLength;
+
+    /**
+     * 目的地址(BCD格式)
+     */
+    @TableField(value = "dest_addr")
+    private String destAddr;
+
+    /**
+     * 设备编码(帧内容开始标识)
+     */
+    @TableField(value = "device_code")
+    private String deviceCode;
+
+    /**
+     * 功能码(上报历史记录固定0x2C)
+     */
+    @TableField(value = "function_code")
+    private String functionCode;
+
+    /**
+     * 保留1
+     */
+    @TableField(value = "reserve1")
+    private String reserve1;
+
+    /**
+     * 保留2
+     */
+    @TableField(value = "reserve2")
+    private String reserve2;
+
+    /**
+     * 记录数量(协议2.2.3)
+     */
+    @TableField(value = "record_count")
+    private String recordCount;
+
+    /**
+     * 记录格式(按位判断字段,协议2.2.3)
+     */
+    @TableField(value = "record_format")
+    private String recordFormat;
+
+    /**
+     * 电源电压(Uint,如“11.21V”)
+     */
+    @TableField(value = "power_voltage")
+    private String powerVoltage;
+
+    /**
+     * 现场状态(含“是否最后一包”标识)
+     */
+    @TableField(value = "field_status")
+    private String fieldStatus;
+
+    /**
+     * 是否最后一包(新增:解析现场状态D3位)
+     */
+    @TableField(value = "is_last_packet")
+    private Boolean isLastPacket;
+
+    /**
+     * 协议版本
+     */
+    @TableField(value = "protocol_version")
+    private String protocolVersion;
+
+    /**
+     * 参数版本
+     */
+    @TableField(value = "param_version")
+    private String paramVersion;
+
+    /**
+     * 信号质量(如“28”)
+     */
+    @TableField(value = "signal_quality")
+    private String signalQuality;
+
+    /**
+     * 保留3
+     */
+    @TableField(value = "reserve3")
+    private String reserve3;
+
+    /**
+     * 时间戳(2000-1-1 00:00:00开始)
+     */
+    @TableField(value = "timestamp_since")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime timestampSince;
+
+    /**
+     * 历史记录详情(多字段拼接,如“温度22.1℃,水位22.7m”)
+     */
+    @TableField(value = "history_records")
+    private String historyRecords;
+
+    /**
+     * 表1净累计
+     */
+    @TableField(value = "meter1_net_total")
+    private String meter1NetTotal;
+
+    /**
+     * 表1正累计
+     */
+    @TableField(value = "meter1_positive_total")
+    private String meter1PositiveTotal;
+
+    /**
+     * 表1负累计
+     */
+    @TableField(value = "meter1_negative_total")
+    private String meter1NegativeTotal;
+
+    /**
+     * 表1瞬时流量
+     */
+    @TableField(value = "meter1_instant_flow")
+    private String meter1InstantFlow;
+
+    /**
+     * 压力
+     */
+    @TableField(value = "pressure")
+    private String pressure;
+
+    /**
+     * 开关量
+     */
+    @TableField(value = "switch_value")
+    private String switchValue;
+
+    /**
+     * 数据插入时间
+     */
+    @TableField(value = "create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 18 - 0
telemetry-service/src/main/java/com/zksy/telemetry/mapper/TelemetryDataMapper.java

@@ -0,0 +1,18 @@
+package com.zksy.telemetry.mapper;
+
+import com.zksy.telemetry.domain.TelemetryData;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Administrator
+* @description 针对表【telemetry_data(平升遥测终端协议表)】的数据库操作Mapper
+* @createDate 2025-10-22 09:27:17
+* @Entity com.zksy.telemetry.domain.TelemetryData
+*/
+public interface TelemetryDataMapper extends BaseMapper<TelemetryData> {
+
+}
+
+
+
+

+ 13 - 0
telemetry-service/src/main/java/com/zksy/telemetry/service/TelemetryDataService.java

@@ -0,0 +1,13 @@
+package com.zksy.telemetry.service;
+
+import com.zksy.telemetry.domain.TelemetryData;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author Administrator
+* @description 针对表【telemetry_data(平升遥测终端协议表)】的数据库操作Service
+* @createDate 2025-10-22 09:27:17
+*/
+public interface TelemetryDataService extends IService<TelemetryData> {
+
+}

+ 22 - 0
telemetry-service/src/main/java/com/zksy/telemetry/service/impl/TelemetryDataServiceImpl.java

@@ -0,0 +1,22 @@
+package com.zksy.telemetry.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.telemetry.domain.TelemetryData;
+import com.zksy.telemetry.service.TelemetryDataService;
+import com.zksy.telemetry.mapper.TelemetryDataMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 针对表【telemetry_data(平升遥测终端协议表)】的数据库操作Service实现
+* @createDate 2025-10-22 09:27:17
+*/
+@Service
+public class TelemetryDataServiceImpl extends ServiceImpl<TelemetryDataMapper, TelemetryData>
+    implements TelemetryDataService{
+
+}
+
+
+
+

+ 52 - 0
telemetry-service/src/main/resources/mapper/TelemetryDataMapper.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zksy.telemetry.mapper.TelemetryDataMapper">
+
+    <resultMap id="BaseResultMap" type="com.zksy.telemetry.domain.TelemetryData">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="systemIdentifier" column="system_identifier" jdbcType="VARCHAR"/>
+        <result property="frameLength" column="frame_length" jdbcType="VARCHAR"/>
+        <result property="packetSequence" column="packet_sequence" jdbcType="VARCHAR"/>
+        <result property="dataType" column="data_type" jdbcType="VARCHAR"/>
+        <result property="sourceAddr" column="source_addr" jdbcType="VARCHAR"/>
+        <result property="destAddrLength" column="dest_addr_length" jdbcType="VARCHAR"/>
+        <result property="destAddr" column="dest_addr" jdbcType="VARCHAR"/>
+        <result property="deviceCode" column="device_code" jdbcType="VARCHAR"/>
+        <result property="functionCode" column="function_code" jdbcType="VARCHAR"/>
+        <result property="reserve1" column="reserve1" jdbcType="VARCHAR"/>
+        <result property="reserve2" column="reserve2" jdbcType="VARCHAR"/>
+        <result property="recordCount" column="record_count" jdbcType="VARCHAR"/>
+        <result property="recordFormat" column="record_format" jdbcType="VARCHAR"/>
+        <result property="powerVoltage" column="power_voltage" jdbcType="VARCHAR"/>
+        <result property="fieldStatus" column="field_status" jdbcType="VARCHAR"/>
+        <result property="isLastPacket" column="is_last_packet" jdbcType="TINYINT"/>
+        <result property="protocolVersion" column="protocol_version" jdbcType="VARCHAR"/>
+        <result property="paramVersion" column="param_version" jdbcType="VARCHAR"/>
+        <result property="signalQuality" column="signal_quality" jdbcType="VARCHAR"/>
+        <result property="reserve3" column="reserve3" jdbcType="VARCHAR"/>
+        <result property="timestampSince" column="timestamp_since" jdbcType="TIMESTAMP"/>
+        <result property="historyRecords" column="history_records" jdbcType="LONGVARCHAR"/>
+        <result property="meter1NetTotal" column="meter1_net_total" jdbcType="VARCHAR"/>
+        <result property="meter1PositiveTotal" column="meter1_positive_total" jdbcType="VARCHAR"/>
+        <result property="meter1NegativeTotal" column="meter1_negative_total" jdbcType="VARCHAR"/>
+        <result property="meter1InstantFlow" column="meter1_instant_flow" jdbcType="VARCHAR"/>
+        <result property="pressure" column="pressure" jdbcType="VARCHAR"/>
+        <result property="switchValue" column="switch_value" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, system_identifier, frame_length, packet_sequence, data_type,
+        source_addr, dest_addr_length, dest_addr,
+        device_code, function_code, reserve1,
+        reserve2, record_count, record_format,
+        power_voltage, field_status, is_last_packet,
+        protocol_version, param_version, signal_quality,
+        reserve3, timestamp_since, history_records,
+        meter1_net_total, meter1_positive_total, meter1_negative_total,
+        meter1_instant_flow, pressure, switch_value,
+        create_time
+    </sql>
+</mapper>