From 04c90bec00f91e8c403d7acaa338f69e5029617a Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Tue, 02 Dec 2025 10:41:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
ard-route/src/main/java/com/ard/route/util/ToolUtils.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 119 insertions(+), 0 deletions(-)
diff --git a/ard-route/src/main/java/com/ard/route/util/ToolUtils.java b/ard-route/src/main/java/com/ard/route/util/ToolUtils.java
index 3721f3f..51b2401 100644
--- a/ard-route/src/main/java/com/ard/route/util/ToolUtils.java
+++ b/ard-route/src/main/java/com/ard/route/util/ToolUtils.java
@@ -1,5 +1,8 @@
package com.ard.route.util;
+import com.ard.route.domain.djuav.UavRouteReq;
+
+import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -7,6 +10,13 @@
* 工具类
*/
public class ToolUtils {
+
+ public static String kmzPath = "kmz";
+
+ /**
+ * XML 头部
+ */
+ public static final String XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
/**
* 生成KMZ文件名称规则
@@ -40,4 +50,113 @@
return fileNameWithExt;
}
+ /**
+ * 从URL中提取文件路径部分
+ * @param url 完整的URL字符串
+ * @return 文件路径部分
+ */
+ public static String extractFilePath(String url) {
+ if (url == null || url.isEmpty()) {
+ return "";
+ }
+
+ // 找到最后一个 "kmz/" 的位置,加上4以包含 "kmz/"
+ int index = url.lastIndexOf("kmz/");
+ if (index != -1) {
+ return url.substring(index + 4); // +4 跳过 "kmz/"
+ }
+
+ // 如果没有找到 "kmz/",尝试其他方式
+ return extractPathByDomain(url);
+ }
+
+ /**
+ * 备选方法:通过域名后的第一个斜杠来提取
+ */
+ private static String extractPathByDomain(String url) {
+ // 移除协议头
+ String withoutProtocol = url.replaceFirst("^https?://", "");
+ // 找到第一个斜杠位置
+ int slashIndex = withoutProtocol.indexOf("/");
+ if (slashIndex != -1) {
+ return withoutProtocol.substring(slashIndex + 1);
+ }
+ return "";
+ }
+
+ // 对象序列化为字节数组
+ public static byte[] serialize(Object obj) throws IOException {
+ try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos)) {
+ oos.writeObject(obj);
+ return baos.toByteArray();
+ }
+ }
+
+ // 字节数组反序列化为对象
+ public static Object deserialize(byte[] data) throws IOException, ClassNotFoundException {
+ try (ByteArrayInputStream bais = new ByteArrayInputStream(data);
+ ObjectInputStream ois = new ObjectInputStream(bais)) {
+ return ois.readObject();
+ }
+ }
+
+ /**
+ * 截取字符串
+ * 参数: https://xxx.xxx.xxx.xxx:xxx/kmz/2025/11/08/文件名_20251108152249A001.kmz
+ */
+ public static String subStringMinioName(String url) {
+ return new File(url).getName();
+ }
+
+ /**
+ * 截取字符串
+ * minio里面文件夹路径名称
+ */
+ public static String subStringMinioUrlName(String url) {
+ int kmzIndex = url.indexOf("/kmz/");
+ return url.substring(kmzIndex + 5); // +5 是为了跳过 "/kmz/"
+ }
+
+ /**
+ * 截取字符串
+ * 参数: "0-89-0"
+ */
+ public static Integer subStringDroneType(String str) {
+ String[] parts = str.split("-");
+ return Integer.valueOf(parts[1]);
+ }
+
+ /**
+ * 截取字符串
+ * 获取经纬度
+ */
+ public static Double getDoublePoint(String str,String type) {
+ String[] parts = str.split(",");
+ if ("lon".equals(type)) {
+ return Double.parseDouble(parts[0].trim());
+ }
+ if ("lat".equals(type)){
+ return Double.parseDouble(parts[1].trim());
+ }
+ return null;
+ }
+
+ /**
+ * 获取航线类型方法
+ */
+ public static String templateTypeData(UavRouteReq uavRouteReq) {
+ if ("waypoint".equals(uavRouteReq.getTemplateType())){
+ return "0";
+ }
+ return "1";
+ }
+
+ /**
+ * 获取无人机类型方法
+ */
+ public static String droneTypeData(UavRouteReq uavRouteReq) {
+ return "0-" + uavRouteReq.getDroneType() + "-0";
+ }
+
}
--
Gitblit v1.9.3