From 3f43e40ed1a1e9f66b3ad2862da9dbc4b710c712 Mon Sep 17 00:00:00 2001
From: nishiwei <13126973358@163.com>
Date: Fri, 23 Oct 2026 14:09:47 +0800
Subject: [PATCH] 智云3.0机场1适配内容提交

---
 ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java |   37 ++++++++++++++++++++++++++++++++-----
 1 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java b/ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java
index 955a11b..a364264 100644
--- a/ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java
+++ b/ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java
@@ -143,7 +143,9 @@
         }else {
             kmlMissionConfig.setGlobalTransitionalSpeed("15");
         }
-        kmlMissionConfig.setGlobalRTHHeight("100");
+        if (kmlParams.getHeightMode().equals(HeightModeEnums.RELATIVE_TO_START_POINT.getValue())){
+            kmlMissionConfig.setGlobalRTHHeight("100");
+        }
         kmlMissionConfig.setTakeOffRefPoint(kmlParams.getTakeOffRefPoint());
         kmlMissionConfig.setDroneInfo(buildKmlDroneInfo(kmlParams.getDroneType(), kmlParams.getSubDroneType()));
         kmlMissionConfig.setPayloadInfo(buildKmlPayloadInfo(kmlParams.getPayloadType(), kmlParams.getPayloadPosition()));
@@ -165,6 +167,12 @@
     public static KmlPayloadInfo buildKmlPayloadInfo(Integer payloadType, Integer payloadPosition) {
         KmlPayloadInfo kmlPayloadInfo = new KmlPayloadInfo();
         kmlPayloadInfo.setPayloadEnumValue(String.valueOf(payloadType));
+        // 机场1:M30/M30T 的 WPML 需要 payloadSubEnumValue,否则机场侧校验可能不通过;
+        // 其余机型保持原有输出,不影响机场2/3。
+        if (Objects.equals(PayloadTypeEnums.M30.getValue(), payloadType)
+                || Objects.equals(PayloadTypeEnums.M30T.getValue(), payloadType)) {
+            kmlPayloadInfo.setPayloadSubEnumValue("0");
+        }
         kmlPayloadInfo.setPayloadPositionIndex(String.valueOf(payloadPosition));
         return kmlPayloadInfo;
     }
@@ -175,13 +183,28 @@
         kmlFolder.setAutoFlightSpeed(String.valueOf(kmlParams.getAutoFlightSpeed()));
         if (StringUtils.equals(fileType, FileTypeConstants.KML)) {
             kmlFolder.setTemplateType(kmlParams.getTemplateType());
-            kmlFolder.setWaylineCoordinateSysParam(buildKmlWayLineCoordinateSysParam(kmlParams.getTemplateType(), HeightModeEnums.RELATIVE_TO_START_POINT.getValue(),
-                    String.valueOf(kmlParams.getGlobalHeight())));
+            if (kmlParams.getHeightMode().equals(HeightModeEnums.RELATIVE_TO_START_POINT.getValue())){
+                kmlFolder.setWaylineCoordinateSysParam(
+                        buildKmlWayLineCoordinateSysParam(
+                                kmlParams.getTemplateType(),
+                                HeightModeEnums.RELATIVE_TO_START_POINT.getValue(),
+                                String.valueOf(kmlParams.getGlobalHeight())));
+            }else if(kmlParams.getHeightMode().equals(HeightModeEnums.EGM96.getValue())){
+                kmlFolder.setWaylineCoordinateSysParam(
+                        buildKmlWayLineCoordinateSysParam(
+                                kmlParams.getTemplateType(),
+                                HeightModeEnums.EGM96.getValue(),
+                                String.valueOf(kmlParams.getGlobalHeight())));
+            }
             kmlFolder.setPayloadParam(buildKmlPayloadParam(kmlParams));
         }
         if (StringUtils.equals(fileType, FileTypeConstants.WPML)) {
             kmlFolder.setWaylineId("0");
-            kmlFolder.setExecuteHeightMode(ExecuteHeightModeEnums.RELATIVE_TO_START_POINT.getValue());
+            if (kmlParams.getHeightMode().equals(HeightModeEnums.RELATIVE_TO_START_POINT.getValue())){
+                kmlFolder.setExecuteHeightMode(ExecuteHeightModeEnums.RELATIVE_TO_START_POINT.getValue());
+            } else if (kmlParams.getHeightMode().equals(HeightModeEnums.EGM96.getValue())) {
+                kmlFolder.setExecuteHeightMode(ExecuteHeightModeEnums.WGS84.getValue());
+            }
             if (CollectionUtil.isNotEmpty(kmlParams.getStartActionList())) {
                 KmlActionGroup kmlActionGroup = new KmlActionGroup();
                 kmlActionGroup.setAction(getKmlActionList(kmlParams.getStartActionList(), kmlParams));
@@ -541,7 +564,11 @@
             }else {
                 kmlActionActuatorFuncParam.setFileSuffix("panoramicPhoto_360");
             }
-            kmlActionActuatorFuncParam.setUseGlobalPayloadLensIndex(String.valueOf(pointActionReq.getUseGlobalImageFormat()));
+            if (pointActionReq.getUseGlobalImageFormat() != null) {
+                kmlActionActuatorFuncParam.setUseGlobalPayloadLensIndex(String.valueOf(pointActionReq.getUseGlobalImageFormat()));
+            }else {
+                kmlActionActuatorFuncParam.setUseGlobalPayloadLensIndex("0");
+            }
             if (ObjectUtil.equals(pointActionReq.getUseGlobalImageFormat(), 0)) {
                 kmlActionActuatorFuncParam.setPayloadLensIndex(pointActionReq.getImageFormat());
             } else {

--
Gitblit v1.9.3