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/UavRouteReqUtils.java                |   15 +++----
 ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java     |    4 +-
 ard-route/src/main/java/com/ard/route/util/ToolUtils.java                       |   23 +++++++++++
 ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java |   26 +++++++++----
 4 files changed, 49 insertions(+), 19 deletions(-)

diff --git a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
index aa70de9..b48775c 100644
--- a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
+++ b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
@@ -36,6 +36,7 @@
 import javax.annotation.Resource;
 
 import static com.ard.route.util.ToolUtils.*;
+import static com.ard.route.util.UavRouteReqUtils.fileConversionEntity;
 
 /**
  * 航线(kmz)Service业务层处理
@@ -116,6 +117,7 @@
         ardRouteInfo.getUavRouteReq().setDroneType(subStringDroneType(ardRouteInfo.getAircraft()));
         KmzResultVo kmzResult = routeService.buildKmz(ardRouteInfo.getUavRouteReq(), ardRouteInfo.getName());
         ardRouteInfo.setPath(kmzResult.getPath());
+        ardRouteInfo.setReadOnly("0");
         ardRouteInfoMapper.insertArdRouteInfo(dataProcessing(ardRouteInfo));
         return kmzResult.getPath();
     }
@@ -143,28 +145,32 @@
             }
             ardRouteInfo.setPath(kmzResult.getPath());
         }
+        ardRouteInfo.setReadOnly("0");
         return ardRouteInfoMapper.updateArdRouteInfo(dataProcessing(ardRouteInfo));
     }
 
     // 新增信息加工
     private ArdRouteInfo dataProcessing(ArdRouteInfo ardRouteInfo) {
         // 航线数据
-        byte[] routeData;
+        byte[] routeData = null;
         try {
-            routeData = serialize(ardRouteInfo.getUavRouteReq());
+            if (ardRouteInfo.getUavRouteReq() != null){
+                routeData = serialize(ardRouteInfo.getUavRouteReq());
+            }
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
         ardRouteInfo.setRouteData(routeData);
-        ardRouteInfo.setReadOnly("0");
         ardRouteInfo.setPointCount(getPointCount(ardRouteInfo));
         return ardRouteInfo;
     }
 
     // 获取行点总数
     private Integer getPointCount(ArdRouteInfo ardRouteInfo) {
-        if (ardRouteInfo.getUavRouteReq().getRoutePointList() != null) {
-            return ardRouteInfo.getUavRouteReq().getRoutePointList().size();
+        if (ardRouteInfo.getUavRouteReq() != null){
+            if (ardRouteInfo.getUavRouteReq().getRoutePointList() != null) {
+                return ardRouteInfo.getUavRouteReq().getRoutePointList().size();
+            }
         }
         return 0;
     }
@@ -223,9 +229,13 @@
             information.setPath1(urlDock);
             information.setGroupId("0");     // 默认分组
             information.setReadOnly("1");   // 默认只读
-            // 生成kmz文件实体类加工
-
             // 增加航线实体类信息
+            UavRouteReq uavRouteReq = fileConversionEntity(file);
+            if (uavRouteReq != null){
+                information.setUavRouteReq(uavRouteReq);
+                information.setType(templateTypeData(uavRouteReq));
+                information.setAircraft(droneTypeData(uavRouteReq));
+            }
             insertRouteInfomation(information);
             return MinioUploadResult.builder()
                     .url(url)
@@ -503,7 +513,7 @@
         ardRouteInfo.setId(IdUtils.simpleUUID());
         ardRouteInfo.setCreateTime(DateUtils.getNowDate());
         ardRouteInfo.setUpdateTime(DateUtils.getNowDate());
-        ardRouteInfoMapper.insertArdRouteInfo(ardRouteInfo);
+        ardRouteInfoMapper.insertArdRouteInfo(dataProcessing(ardRouteInfo));
     }
 
     /**
diff --git a/ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java b/ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
index 352d034..10f613c 100644
--- a/ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
+++ b/ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
@@ -37,7 +37,7 @@
 
 import static com.ard.route.util.RouteFileUtils.*;
 import static com.ard.route.util.ToolUtils.*;
-import static com.ard.route.util.UavRouteReqUtils.kmzInfoVOToUavRouteReq;
+import static com.ard.route.util.UavRouteReqUtils.kmzInfoVoToUavRouteReq;
 
 /**
  * Author:xia
@@ -236,7 +236,7 @@
      */
     @Override
     public UavRouteReq kmzInfoVoToUavRouteReq(KmzInfoVo kmzInfoVo) {
-        return kmzInfoVOToUavRouteReq(kmzInfoVo);
+        return kmzInfoVoToUavRouteReq(kmzInfoVo);
     }
 
 }
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 74d2202..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,7 @@
 package com.ard.route.util;
 
+import com.ard.route.domain.djuav.UavRouteReq;
+
 import java.io.*;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -125,6 +127,10 @@
         return Integer.valueOf(parts[1]);
     }
 
+    /**
+     * 截取字符串
+     * 获取经纬度
+     */
     public static Double getDoublePoint(String str,String type) {
         String[] parts = str.split(",");
         if ("lon".equals(type)) {
@@ -136,4 +142,21 @@
         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";
+    }
+
 }
diff --git a/ard-route/src/main/java/com/ard/route/util/UavRouteReqUtils.java b/ard-route/src/main/java/com/ard/route/util/UavRouteReqUtils.java
index 8e90bb6..3a13661 100644
--- a/ard-route/src/main/java/com/ard/route/util/UavRouteReqUtils.java
+++ b/ard-route/src/main/java/com/ard/route/util/UavRouteReqUtils.java
@@ -22,11 +22,8 @@
 
 public class UavRouteReqUtils {
 
-    @Resource
-    private OssServiceContext ossService;
-
     // 将文件转换成 UavRouteReq 实体
-    public static KmzInfoVo fileConversionEntity(MultipartFile file){
+    public static UavRouteReq fileConversionEntity(MultipartFile file){
         KmzInfoVo kmzInfoVO = new KmzInfoVo();
         try (InputStream inputStream = file.getInputStream();
              ArchiveInputStream archiveInputStream = new ZipArchiveInputStream(inputStream)){
@@ -39,14 +36,14 @@
                     kmzInfoVO.setWpmlInfo(RouteFileUtils.parseKml(archiveInputStream));
                 }
             }
-            return kmzInfoVO;
+            return kmzInfoVoToUavRouteReq(kmzInfoVO);
         }catch (Exception e) {
             e.printStackTrace();
         }
         return null;
     }
 
-    public static UavRouteReq kmzInfoVOToUavRouteReq(KmzInfoVo vo) {
+    public static UavRouteReq kmzInfoVoToUavRouteReq(KmzInfoVo vo) {
         UavRouteReq uavRouteReq = new UavRouteReq();
         if (vo.getKmlInfo().getDocument().getFolder().getTemplateType() != null){
             uavRouteReq.setTemplateType(vo.getKmlInfo().getDocument().getFolder().getTemplateType());
@@ -119,13 +116,13 @@
                 pointActionReq.setGimbalYawRotateAngle(Double.valueOf(kmlAction.getActionActuatorFuncParam().getGimbalYawRotateAngle()));
             }
         }
-        if ("zoom".equals(kmlAction.getActionActuatorFunc())) {
+        if ("zoom".equals(kmlAction.getActionActuatorFunc())) {     // 变焦
             pointActionReq.setZoom(Double.valueOf(kmlAction.getActionActuatorFuncParam().getFocalLength()));
         }
-        if ("hover".equals(kmlAction.getActionActuatorFunc())) {
+        if ("hover".equals(kmlAction.getActionActuatorFunc())) {    // 悬停
             pointActionReq.setHoverTime(Integer.valueOf(kmlAction.getActionActuatorFuncParam().getHoverTime()));
         }
-        if ("rotateYaw".equals(kmlAction.getActionActuatorFunc())) {
+        if ("rotateYaw".equals(kmlAction.getActionActuatorFunc())) {       // 飞行器偏航
             pointActionReq.setAircraftHeading(Double.valueOf(kmlAction.getActionActuatorFuncParam().getAircraftHeading()));
         }
         return pointActionReq;

--
Gitblit v1.9.3