From b8b5a3895e741d5348ecdd39ad2e5cbd443f8e89 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Wed, 01 Apr 2026 12:17:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ard-route/src/main/java/com/ard/route/util/InitializationUtils.java |  112 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 67 insertions(+), 45 deletions(-)

diff --git a/ard-route/src/main/java/com/ard/route/util/InitializationUtils.java b/ard-route/src/main/java/com/ard/route/util/InitializationUtils.java
index f630224..0742cc7 100644
--- a/ard-route/src/main/java/com/ard/route/util/InitializationUtils.java
+++ b/ard-route/src/main/java/com/ard/route/util/InitializationUtils.java
@@ -8,13 +8,21 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import static com.ard.route.enums.kml.DroneEnumValueEnums.M350_RTK;
+import static com.ard.route.util.ToolUtils.getDoublePoint;
+
 /**
  * 初始化数据
  * 测试数据
  */
 public class InitializationUtils {
 
-    private static final Double CHANSI_H20 = 23.76237623;
+    // 禅思H20T 公倍数
+    private static final Double CHANSI_H20T = 23.76237623;
+
+    // 禅思H20T 焦距值
+    private static final Double CHANSI_H20_FOCUS = 6.83;
+
     private static final String WAYPOINT_TURN_MODE_DEFAULT = "toPointAndStopWithDiscontinuityCurvature";
 
     /**
@@ -23,10 +31,11 @@
     public UavRouteReq initialization(UavRouteReq uavRouteReq){
         uavRouteReq.setTemplateType("waypoint");
         // 起始点默认航线第一个点
-        if (uavRouteReq.getTakeOffRefPoint().isEmpty()){
+        if (uavRouteReq.getTakeOffRefPoint() == null){
             uavRouteReq.setTakeOffRefPoint(
                     uavRouteReq.getRoutePointList().get(0).getLatitude() + "," +
-                            uavRouteReq.getRoutePointList().get(0).getLongitude() + "," + "0");
+                            uavRouteReq.getRoutePointList().get(0).getLongitude() + "," +
+                            uavRouteReq.getRoutePointList().get(0).getHeight());
         }
         //uavRouteReq.setDroneType(89);
         uavRouteReq.setSubDroneType(0);
@@ -44,28 +53,75 @@
         if (uavRouteReq.getGlobalWaypointTurnMode() != null){
             waypointTurnReq.setWaypointTurnMode(uavRouteReq.getGlobalWaypointTurnMode());
         }else {
-            waypointTurnReq.setWaypointTurnMode("toPointAndStopWithDiscontinuityCurvature");
+            waypointTurnReq.setWaypointTurnMode(WAYPOINT_TURN_MODE_DEFAULT);
         }
         uavRouteReq.setWaypointTurnReq(waypointTurnReq);
         uavRouteReq.setGimbalPitchMode("usePointSetting");
-        //buildZoom(uavRouteReq);
+        if (M350_RTK.getValue().equals(uavRouteReq.getDroneType())) {
+            // 变焦数值加工
+            buildZoom(uavRouteReq);
+        }
+        // 修改每个航点的高度
+        buildHeight(uavRouteReq);
+        // 动作组编号数据加工
+        buildActionGroupReq(uavRouteReq);
         return uavRouteReq;
+    }
+
+    /**
+     * 构建动作组编号
+     */
+    public void buildActionGroupReq(UavRouteReq uavRouteReq){
+        int pointActionCounter = 0;
+        for (RoutePointReq routePointReq : uavRouteReq.getRoutePointList()) {
+            if (routePointReq.getActionGroupList() != null){
+                for (ActionGroupReq actionGroupReq : routePointReq.getActionGroupList()) {
+                    actionGroupReq.setActionGroupId(pointActionCounter++);
+                    actionGroupReq.setActionGroupStartIndex(routePointReq.getRoutePointIndex());
+                    actionGroupReq.setActionGroupEndIndex(routePointReq.getRoutePointIndex());
+                    actionGroupReq.setActionTriggerType("reachPoint");
+                }
+
+            }
+        }
+    }
+
+    /**
+     * 修改每个航点的高度
+     * 根据起飞点高度减去当前航点高度
+     */
+    public void buildHeight(UavRouteReq uavRouteReq){
+        if (!"EGM96".equals(uavRouteReq.getHeightMode())){
+            double takeOffHeight = getDoublePoint(uavRouteReq.getTakeOffRefPoint(),"alt");
+            for (RoutePointReq routePointReq : uavRouteReq.getRoutePointList()) {
+                routePointReq.setHeight(routePointReq.getHeight() - takeOffHeight);
+            }
+        }
     }
 
     /**
      * 变焦动作加工
      */
-    private UavRouteReq buildZoom(UavRouteReq uavRouteReq){
+    private void buildZoom(UavRouteReq uavRouteReq){
         for (RoutePointReq routePointReq : uavRouteReq.getRoutePointList()) {
-            for (ActionGroupReq actionGroupReq : routePointReq.getActionGroupList()) {
-                for (PointActionReq action : actionGroupReq.getActions()) {
-                    if (action.getZoom() != null){
-                        action.setZoom(action.getZoom() * CHANSI_H20);
+            if (!routePointReq.getActionGroupList().isEmpty()){
+                for (ActionGroupReq actionGroupReq : routePointReq.getActionGroupList()) {
+                    for (PointActionReq action : actionGroupReq.getActions()) {
+                        if (action.getZoom() != null){
+                            action.setZoom(multiple23(action.getZoom()));
+                        }
                     }
                 }
             }
         }
-        return uavRouteReq;
+    }
+
+    public static Double multiple23(Double zoom){
+        return zoom * CHANSI_H20T;
+    }
+
+    public static Double divided23(Double zoom){
+        return zoom / CHANSI_H20T;
     }
 
     /**
@@ -215,38 +271,4 @@
         ardRouteChange.setPoints(points);
     }
 
-//    private ArdRoutePoints buildArdRoutePoints(){
-//        ArdRoutePoints ardRoutePoints1 = new ArdRoutePoints();
-//        ardRoutePoints1.setDampingDistance(0);
-//        ardRoutePoints1.setFlightPathMode(1);
-//        ardRoutePoints1.setGroupIndex(0);
-//        ardRoutePoints1.setHeading(0);
-//        ardRoutePoints1.setHeadingMode(0);
-//        ardRoutePoints1.setHeight(50);
-//        ardRoutePoints1.setInterestIndex(0);
-//        ardRoutePoints1.setLat(31.11339916);
-//        ardRoutePoints1.setLon(103.75851462);
-//        ardRoutePoints1.setSafeGohomeFlag(0);
-//        ardRoutePoints1.setSpeed(8);
-//
-//
-//    }
-
-//    private ArdRouteActions buildArdRouteActions(){
-//        ArdRouteActions ardRouteActions0 = new ArdRouteActions();
-//        ardRouteActions0.setParam(10);
-//        ardRouteActions0.setSpeakInfo("");
-//        ardRouteActions0.setType(1);
-//        ardRouteActions0.setWaitTime(2);
-//        ArdRouteActions ardRouteActions1 = new ArdRouteActions();
-//        ardRouteActions1.setParam(10);
-//        ardRouteActions1.setSpeakInfo("");
-//        ardRouteActions1.setType(1);
-//        ardRouteActions1.setWaitTime(2);
-//        ArdRouteActions ardRouteActions2 = new ArdRouteActions();
-//        ardRouteActions2.setParam(10);
-//        ardRouteActions2.setSpeakInfo("");
-//        ardRouteActions2.setType(1);
-//        ardRouteActions2.setWaitTime(2);
-//    }
 }

--
Gitblit v1.9.3