From 8d9a2d656e4ae007590c622e5f7c228adacdca49 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Fri, 14 Jun 2024 10:11:36 +0800
Subject: [PATCH] 统一风格

---
 src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java |   70 ++++++++++++++++++++++++++++-------
 1 files changed, 56 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java b/src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java
index 5024f60..4476327 100644
--- a/src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java
+++ b/src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java
@@ -1,14 +1,22 @@
 package com.dji.sample.patches.xml.mode;
 
 import com.dji.sample.patches.model.entity.LotInfo;
+import com.dji.sample.patches.utils.GeoToolsUtil;
+import com.dji.sample.patches.utils.PointPO;
 import com.dji.sample.patches.xml.mode.share.ActionGroup;
 import com.dji.sample.patches.xml.mode.share.ActionMode;
 import com.dji.sample.patches.xml.mode.share.ActionTrigger;
 import com.dji.sample.patches.xml.mode.share.action.utils.*;
+import com.dji.sample.patches.xml.utils.CreateWaylineFileUtils;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
 import lombok.Builder;
 import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
 import org.locationtech.jts.geom.Coordinate;
 
+import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -20,6 +28,7 @@
  */
 @Data
 @Builder
+@Slf4j
 public class XMLTemplateModel {
 
     private String author = "aix";
@@ -32,21 +41,28 @@
 
     private Folder folder;
 
-    public static XMLTemplateModel init(Coordinate[] coordinates,List<LotInfo> lotInfos) {
+    /**
+     * 初始化模板对象
+     * @param coordinates
+     * @param lotInfos
+     * @return
+     */
+    public static XMLTemplateModel init(List<PointPO> coordinates, List<LotInfo> lotInfos) {
 
         Folder folder = FolderUtils.setFloder();
 
         List<Placemark> placemarkList = new ArrayList<>();
         int i = 0;
-        for (Coordinate c:coordinates) {
+        for (PointPO pointPO:coordinates) {
             if (i != 0) {//去除第一个航点
+                Coordinate c = pointPO.getCoordinate();
                 Placemark placemark = PlacemarkUtils.setPlacemark(c.x + "," + c.y);
 
                 // 增加事件组
                 ActionGroup actionGroup = new ActionGroup();
-                actionGroup.setActionGroupId(i);//动作组id从0开始单调连续递增。
-                actionGroup.setActionGroupStartIndex(i);//动作组开始生效的航点
-                actionGroup.setActionGroupEndIndex(i);//动作组结束生效的航点
+                actionGroup.setActionGroupId(i-1);//动作组id从0开始单调连续递增。
+                actionGroup.setActionGroupStartIndex(i-1);//动作组开始生效的航点
+                actionGroup.setActionGroupEndIndex(i-1);//动作组结束生效的航点
                 actionGroup.setActionGroupMode("sequence");
                 ActionTrigger at = new ActionTrigger();
                 at.setActionTriggerType("reachPoint");
@@ -56,15 +72,11 @@
                 ActionMode actionMode = new ActionMode();
                 actionMode.setActionId(0);
                 actionMode.setActionActuatorFunc(CameraActionEnum.TAKE_PHOTO.getDescription());//拍照事件
-                // 计算获取图斑编号
-                int quotient = i / 4;
-                if (i % 4 != 0) { // 检查是否有余数
-                    quotient++; // 如果有余数,商加1
-                }
 
-                if (quotient == 0) quotient = 1;
-
-                actionMode.setActionActuatorFuncParam(ActionUtils.setTakePhoto(lotInfos.get(quotient-1).getDkbh()));
+//                actionMode.setActionActuatorFuncParam(ActionUtils.setTakePhoto(lotInfos.get(quotient-1).getDkbh()));
+                // 设置媒体文件名称后缀
+                actionMode.setActionActuatorFuncParam(ActionUtils.setTakePhoto(lotInfos.get(pointPO.getIndex()).getDkbh() + "~" + lotInfos.get(pointPO.getIndex()).getTaskId()));
+//                actionMode.setActionActuatorFuncParam(ActionUtils.setTakePhoto("测试"));
                 list.add(actionMode);
 
                 ActionMode actionMode2 = new ActionMode();
@@ -88,11 +100,41 @@
                 .author("Aix")
                 .createTime(String.valueOf(System.currentTimeMillis()))
                 .updateTime(String.valueOf(System.currentTimeMillis()))
-                .missionConfig(MissionConfigUtils.setMissionConfig())
+                .missionConfig(MissionConfigUtils.setMissionConfig(coordinates.get(0).getCoordinate().y + "," + coordinates.get(0).getCoordinate().x + ",0"))
                 .folder(folder)
                 .build();
 
         return xtm;
     }
 
+    public static void main(String[] args) {
+
+        //测试
+        List<LotInfo> list = new ArrayList<>();
+        list.add(LotInfo.builder().dkbh("dkbh01").dkfw("POLYGON((115.866465564947 28.6344502965542, 115.86425430209 28.6357383285408, 115.864551734716 28.633120921433, 115.866977149064 28.6338435339976, 115.866465564947 28.6344502965542))").build());
+        list.add(LotInfo.builder().dkbh("dkbh02").dkfw("POLYGON((115.864006690605 28.6202713913694, 115.86002109342 28.6162025130492, 115.866374254306 28.6142037658042, 115.865912044006 28.6172001020759, 115.864006690605 28.6202713913694))").build());
+        list.add(LotInfo.builder().dkbh("dkbh03").dkfw("POLYGON((115.839366933455 28.6161999317332, 115.841288489469 28.6160843601496, 115.840931570318 28.6181544912247, 115.838147600941 28.618654178036, 115.839366933455 28.6161999317332))").build());
+//        list.add(LotInfo.builder().dkbh("dkbh04").dkfw("POLYGON((115.857499052697 28.6784702230642, 115.859109158101 28.6762273976226, 115.863677723232 28.6766081113836, 115.862154868188 28.6790827508297, 115.857499052697 28.6784702230642))").build());
+//        list.add(LotInfo.builder().dkbh("dkbh05").dkfw("POLYGON((115.834974056705 28.6659171428962, 115.833760531592 28.6634960413229, 115.832422084777 28.6624550271329, 115.829745191145 28.6631986086972, 115.831232354274 28.6608191476914, 115.833314382654 28.6603729987527, 115.835545127347 28.6618601618814, 115.837032290475 28.6639421902615, 115.834974056705 28.6659171428962))").build());
+//        list.add(LotInfo.builder().dkbh("dkbh06").dkfw("POLYGON((115.885622116006 28.5766308429787, 115.883936664461 28.5771582901683, 115.883365593819 28.5752547213636, 115.883555950699 28.5740174016407, 115.88365112914 28.5724945465969, 115.885364341064 28.5721138328361, 115.886696839227 28.5725897250371, 115.887458266749 28.5736366878797, 115.886792017668 28.5753498998039, 115.885622116006 28.5766308429787))").build());
+//        list.add(LotInfo.builder().dkbh("dkbh07").dkfw("POLYGON((115.857644341395 28.5750890964568, 115.857572957565 28.5729475815515, 115.858429563527 28.5728761977213, 115.859072017998 28.5738041875136, 115.859072017998 28.5748035611361, 115.857644341395 28.5750890964568))").build());
+//        list.add(LotInfo.builder().dkbh("dkbh08").dkfw("POLYGON((115.912181587649 28.6231542087745, 115.912181587649 28.6215123806805, 115.915893546818 28.6212268453598, 115.916036314478 28.6231542087745, 115.912181587649 28.6231542087745))").build());
+//        list.add(LotInfo.builder().dkbh("dkbh09").dkfw("POLYGON((115.842039042965 28.6314426646115, 115.840992080122 28.631252307731, 115.842324578286 28.6305860586493, 115.843181184248 28.6305860586493, 115.84403779021 28.6304908802091, 115.84394261177 28.6317281999322, 115.842039042965 28.6314426646115))").build());
+//        list.add(LotInfo.builder().dkbh("dkbh10").dkfw("POLYGON((115.807011889796 28.623935465138, 115.805869748513 28.6224126100944, 115.810247956764 28.6220318963334, 115.809581707682 28.623935465138, 115.807011889796 28.623935465138))").build());
+
+        // 机场经纬度
+        double airportLat = 28.624514734; // 机场纬度
+        double airportLon = 115.856725497; // 机场经度
+        // 解析图斑生成航点,按顺序返回
+        List<PointPO> coordinates = GeoToolsUtil.getRoutePointOrder(list, airportLat, airportLon);
+
+        // 初始化模板对象
+        XMLTemplateModel xmlModel = XMLTemplateModel.init(coordinates, list);
+
+        //生成航线文件
+        CreateWaylineFileUtils.createWaylineFile(xmlModel,"src\\main\\resources\\template\\template.xml","src\\main\\resources\\template\\wpmz\\template.xml","src\\main\\resources\\template\\waylines.xml","src\\main\\resources\\template\\wpmz\\waylines.xml");
+
+
+    }
+
 }

--
Gitblit v1.9.3