From 26e8dd5f117a639d97a9273a539de7f835d98962 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Sat, 22 Mar 2025 09:46:57 +0800
Subject: [PATCH] 优化复杂protobuf转实体
---
ard-work/src/main/java/com/ard/tianyu/domain/dto/converter/realdata/UavStateConverter.java | 25 ++++++++++++++++++++++++-
1 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/ard-work/src/main/java/com/ard/tianyu/domain/dto/converter/realdata/UavStateConverter.java b/ard-work/src/main/java/com/ard/tianyu/domain/dto/converter/realdata/UavStateConverter.java
index ae4f483..e347cc2 100644
--- a/ard-work/src/main/java/com/ard/tianyu/domain/dto/converter/realdata/UavStateConverter.java
+++ b/ard-work/src/main/java/com/ard/tianyu/domain/dto/converter/realdata/UavStateConverter.java
@@ -1,15 +1,38 @@
package com.ard.tianyu.domain.dto.converter.realdata;
+import com.alibaba.fastjson2.JSON;
import com.ard.tianyu.domain.dto.state.*;
import com.ard.tianyu.component.netty.protobuf.TelemetryDataPB;
+import com.google.protobuf.util.JsonFormat;
import org.springframework.beans.BeanUtils;
import java.util.List;
import java.util.stream.Collectors;
public class UavStateConverter {
- // 将 Protobuf UavState 转换为 Java 实体类 UavState
+
+ /**
+ * 将 Protobuf 格式的无人机状态转换为 Java 实体类
+ *
+ * @param protobufUavState Protobuf 格式的无人机状态
+ * @return 转换后的 Java 实体类对象
+ * @throws RuntimeException 如果转换过程中发生错误,抛出运行时异常
+ */
public static UavState convertProtoToEntity(TelemetryDataPB.UavState protobufUavState) {
+ try {
+ // 将 Protobuf 对象转换为 JSON 字符串
+ String json = JsonFormat.printer().includingDefaultValueFields().print(protobufUavState);
+
+ // 使用 fastjson2 将 JSON 转换为 Java 实体类
+ return JSON.parseObject(json, UavState.class);
+ } catch (Exception e) {
+ // 如果转换过程中发生异常,抛出运行时异常
+ throw new RuntimeException("Protobuf 转换为实体类失败", e);
+ }
+ }
+
+ // 将 Protobuf UavState 转换为 Java 实体类 UavState
+ public static UavState convertProtoToEntity1(TelemetryDataPB.UavState protobufUavState) {
UavState uavState = new UavState();
// 复制简单字段
--
Gitblit v1.9.3