张世豪
18 小时以前 a541fbdc8812337de120aad3792a2033a5dd7afe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
package Mqttmessage.Entity;
 
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
@Data
@NoArgsConstructor
@AllArgsConstructor
public class GPSData{
    // JSON中的原始字段
    private String msg_id;          // 消息唯一标识
    private Long timestamp;         // 时间戳(毫秒)
    private String device_id;       // 设备编号
    private String data_type;       // 数据类型
    private String gps_raw;         // 原始GPS数据
 
    // IMU数据内部类
    private IMUData imu_data;
 
    // 状态数据(新协议格式)
    private StatusInfo status;
 
    // NMEA GGA解析结果(可选,根据需要添加)
    private GGAData ggaData;
 
    /**
     * 获取原始GPS数据
     * @return 原始GPS数据字符串
     */
    public String getGps_raw() {
        return gps_raw;
    }
 
    /**
     * 设置原始GPS数据
     * @param gps_raw 原始GPS数据字符串
     */
    public void setGps_raw(String gps_raw) {
        this.gps_raw = gps_raw;
    }
 
 
 
    
    
 
 
    /**
     * IMU数据内部类(简化版,只包含角度信息)
     */
    @Data
    @NoArgsConstructor
    public static class IMUData {
        private Double roll;       // 横滚角 角度
        private Double pitch;      // 俯仰角 角度
        private Double yaw;        // 偏航角 角度
 
        /**
         * 带参数的构造函数
         * @param roll 横滚角 角度
         * @param pitch 俯仰角 角度
         * @param yaw 偏航角 角度
         */
        public IMUData(Double roll, Double pitch, Double yaw) {
            this.roll = roll;
            this.pitch = pitch;
            this.yaw = yaw;
        }
    }
 
    /**
     * 状态信息内部类(与StatusData中的StatusInfo保持一致)
     */
    @Data
    @NoArgsConstructor
    public static class StatusInfo {
        private Integer battery_level;      // 电池电量百分比
        private Double battery_voltage;     // 电池电压
        private String operation_mode;      // 操作模式:manual, auto, emergency_stop
        private String motor_status;        // 电机状态:stopped, running, error
        private String blade_status;        // 刀片状态:stopped, rotating
        private Integer blade_height;       // 刀盘高度 厘米
        private Integer self_check_status;  // 自检状态:1-完成,0-未完成
        private Integer error_code;         // 错误代码
        private String error_message;       // 错误信息
        private String path_id_saved;       // 存储的路径ID
 
        /**
         * 带参数的构造函数
         * @param battery_level 电池电量百分比
         * @param battery_voltage 电池电压
         * @param operation_mode 操作模式:manual, auto, emergency_stop
         * @param motor_status 电机状态:stopped, running, error
         * @param blade_status 刀片状态:stopped, rotating
         * @param blade_height 刀盘高度 厘米
         * @param self_check_status 自检状态:1-完成,0-未完成
         * @param error_code 错误代码
         * @param error_message 错误信息
         * @param path_id_saved 存储的路径ID
         */
        public StatusInfo(Integer battery_level, Double battery_voltage, String operation_mode,
                         String motor_status, String blade_status, Integer blade_height,
                         Integer self_check_status, Integer error_code, String error_message, String path_id_saved) {
            this.battery_level = battery_level;
            this.battery_voltage = battery_voltage;
            this.operation_mode = operation_mode;
            this.motor_status = motor_status;
            this.blade_status = blade_status;
            this.blade_height = blade_height;
            this.self_check_status = self_check_status;
            this.error_code = error_code;
            this.error_message = error_message;
            this.path_id_saved = path_id_saved;
        }
 
        public Integer getBattery_level() {
            return battery_level;
        }
 
        public void setBattery_level(Integer battery_level) {
            this.battery_level = battery_level;
        }
 
        public Double getBattery_voltage() {
            return battery_voltage;
        }
 
        public void setBattery_voltage(Double battery_voltage) {
            this.battery_voltage = battery_voltage;
        }
 
        public String getOperation_mode() {
            return operation_mode;
        }
 
        public void setOperation_mode(String operation_mode) {
            this.operation_mode = operation_mode;
        }
 
        public String getMotor_status() {
            return motor_status;
        }
 
        public void setMotor_status(String motor_status) {
            this.motor_status = motor_status;
        }
 
        public String getBlade_status() {
            return blade_status;
        }
 
        public void setBlade_status(String blade_status) {
            this.blade_status = blade_status;
        }
 
        public Integer getBlade_height() {
            return blade_height;
        }
 
        public void setBlade_height(Integer blade_height) {
            this.blade_height = blade_height;
        }
 
        public Integer getSelf_check_status() {
            return self_check_status;
        }
 
        public void setSelf_check_status(Integer self_check_status) {
            this.self_check_status = self_check_status;
        }
 
        public Integer getError_code() {
            return error_code;
        }
 
        public void setError_code(Integer error_code) {
            this.error_code = error_code;
        }
 
        public String getError_message() {
            return error_message;
        }
 
        public void setError_message(String error_message) {
            this.error_message = error_message;
        }
 
        public String getPath_id_saved() {
            return path_id_saved;
        }
 
        public void setPath_id_saved(String path_id_saved) {
            this.path_id_saved = path_id_saved;
        }
    }
 
    /**
     * GGA数据解析类(可选,用于存储解析后的GGA数据)
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class GGAData {
        private String utcTime;     // UTC时间
        private String latitude;    // 纬度(原始度分格式)
        private String latitudeDir; // 纬度方向
        private String longitude;   // 经度(原始度分格式)
        private String longitudeDir;// 经度方向
        private Integer gpsQuality; // GPS质量指示
        private Integer satellites; // 使用的卫星数量
        private Double hdop;        // 水平精度因子
        private Double altitude;    // 海拔高度
        private String altitudeUnit;// 海拔高度单位
        private Double geoidSep;    // 大地水准面分离
        private String geoidSepUnit;// 大地水准面分离单位
        private String age;         // 差分GPS数据期限
        private String stationId;   // 差分参考基站标号
    }
 
    public String getMsg_id() {
        return msg_id;
    }
 
    public void setMsg_id(String msg_id) {
        this.msg_id = msg_id;
    }
 
    public Long getTimestamp() {
        return timestamp;
    }
 
    public void setTimestamp(Long timestamp) {
        this.timestamp = timestamp;
    }
 
    public String getDevice_id() {
        return device_id;
    }
 
    public void setDevice_id(String device_id) {
        this.device_id = device_id;
    }
 
    public String getData_type() {
        return data_type;
    }
 
    public void setData_type(String data_type) {
        this.data_type = data_type;
    }
 
    public IMUData getImu_data() {
        return imu_data;
    }
 
    public void setImu_data(IMUData imu_data) {
        this.imu_data = imu_data;
    }
 
    public StatusInfo getStatus() {
        return status;
    }
 
    public void setStatus(StatusInfo status) {
        this.status = status;
    }
 
    public GGAData getGgaData() {
        return ggaData;
    }
 
    public void setGgaData(GGAData ggaData) {
        this.ggaData = ggaData;
    }
}