From 1609b77ba4715a7f17030d61d20c8e526861ca1a Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Fri, 23 Jan 2026 14:16:04 +0800
Subject: [PATCH] 1. 修改任务航线业务逻辑,优化写法。

---
 ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java |   35 ++++++++++++++++++++++++-----------
 1 files changed, 24 insertions(+), 11 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 e18467c..ceeb180 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
@@ -5,7 +5,6 @@
 import cn.hutool.core.util.ObjectUtil;
 import com.ard.route.domain.djuav.*;
 import com.ard.route.domain.djuav.kml.*;
-import com.ard.route.domain.kml.*;
 import com.ard.route.enums.kml.*;
 import com.ard.route.constant.FileTypeConstants;
 import com.thoughtworks.xstream.XStream;
@@ -37,12 +36,19 @@
      */
     public static KmlInfo parseKml(InputStream inputStream) {
         XStream xStream = new XStream();
-        xStream.allowTypes(new Class[]{KmlInfo.class, KmlAction.class, KmlWayLineCoordinateSysParam.class, KmlPoint.class});
+        xStream.allowTypes(new Class[]{
+                KmlInfo.class,
+                KmlAction.class,
+                KmlWayLineCoordinateSysParam.class,
+                KmlPoint.class,
+                KmlActionGroup.class
+        });
         xStream.alias("kml", KmlInfo.class);
         xStream.processAnnotations(KmlInfo.class);
         xStream.autodetectAnnotations(true);
         xStream.ignoreUnknownElements();
         xStream.addImplicitCollection(KmlActionGroup.class, "action");
+        xStream.addImplicitCollection(KmlPlacemark.class, "actionGroup");
         return (KmlInfo) xStream.fromXML(inputStream);
     }
 
@@ -149,7 +155,8 @@
         kmlDroneInfo.setDroneEnumValue(String.valueOf(droneType));
         if (Objects.equals(droneType, DroneEnumValueEnums.M30_M30T.getValue()) ||
                 Objects.equals(droneType, DroneEnumValueEnums.M3D_M3TD.getValue()) ||
-                Objects.equals(droneType, DroneEnumValueEnums.M3E_M3T_M3M.getValue())) {
+                Objects.equals(droneType, DroneEnumValueEnums.M3E_M3T_M3M.getValue())||
+                Objects.equals(droneType, DroneEnumValueEnums.MATRICE_4D.getValue())) {
             kmlDroneInfo.setDroneSubEnumValue(String.valueOf(subDroneType));
         }
         return kmlDroneInfo;
@@ -331,7 +338,9 @@
         if (CollectionUtil.isNotEmpty(routePointInfo.getActionGroupList())) {
             List<KmlActionGroup> kmlActionGroupList = new ArrayList<>();
             for (ActionGroupReq actionGroupReq : routePointInfo.getActionGroupList()) {
-                kmlActionGroupList.add(buildKmlActionGroup(actionGroupReq, kmlParams));
+                if (ObjectUtil.isNotEmpty(actionGroupReq.getActions())){
+                    kmlActionGroupList.add(buildKmlActionGroup(actionGroupReq, kmlParams));
+                }
             }
             kmlPlacemark.setActionGroup(kmlActionGroupList);
         }
@@ -494,13 +503,13 @@
 
     public static KmlActionGroup buildKmlActionGroup(ActionGroupReq actionGroupReq, KmlParams kmlParams) {
         KmlActionGroup kmlActionGroup = new KmlActionGroup();
-        kmlActionGroup.setActionGroupId(String.valueOf(actionGroupReq.getActionGroupId()));
-        kmlActionGroup.setActionGroupStartIndex(String.valueOf(actionGroupReq.getActionGroupStartIndex()));
-        kmlActionGroup.setActionGroupEndIndex(String.valueOf(actionGroupReq.getActionGroupEndIndex()));
-        kmlActionGroup.setActionGroupMode(ActionGroupModeEnums.SEQUENCE.getValue());
+            kmlActionGroup.setActionGroupId(String.valueOf(actionGroupReq.getActionGroupId()));
+            kmlActionGroup.setActionGroupStartIndex(String.valueOf(actionGroupReq.getActionGroupStartIndex()));
+            kmlActionGroup.setActionGroupEndIndex(String.valueOf(actionGroupReq.getActionGroupEndIndex()));
+            kmlActionGroup.setActionGroupMode(ActionGroupModeEnums.SEQUENCE.getValue());
 
-        kmlActionGroup.setActionTrigger(buildKmlActionTrigger(actionGroupReq.getActionTriggerType(), actionGroupReq.getActionTriggerParam()));
-        kmlActionGroup.setAction(getKmlActionList(actionGroupReq.getActions(), kmlParams));
+            kmlActionGroup.setActionTrigger(buildKmlActionTrigger(actionGroupReq.getActionTriggerType(), actionGroupReq.getActionTriggerParam()));
+            kmlActionGroup.setAction(getKmlActionList(actionGroupReq.getActions(), kmlParams));
         return kmlActionGroup;
     }
 
@@ -532,7 +541,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