1.增加上传航线到边缘服务器接口。
2.增加开始航线接口。
3.增加暂停航线接口。
4.增加恢复航线接口。
5.增加结束航线接口。
6.注释修改。
10 files modified
655 ■■■■■ changed files
ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteInfoController.java 51 ●●●●● patch | view | raw | blame | history
ard-route/pom.xml 4 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/domain/sixhe/ArdRouteChange.java 4 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/service/IArdRouteInfoService.java 46 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java 233 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/util/InitializationUtils.java 161 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/domain/dto/state/PointData.java 63 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/domain/dto/wayline/PlanLineData.java 52 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/domain/dto/wayline/PointAction.java 33 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/domain/dto/wayline/WayLineUploadDTO.java 8 ●●●●● patch | view | raw | blame | history
ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteInfoController.java
@@ -132,10 +132,51 @@
    /**
     * 上传航线到边缘服务器
     */
//    @ApiOperation("上传航线到边缘服务器")
//    @PostMapping
//    public AjaxResult uploadRouteInformation(@RequestBody ArdRouteInfo ArdRouteInfor) {
//        return success(ardRouteInfoService.selectArdRouteInforByName(ArdRouteInfor.getName()));
//    }
    @ApiOperation("上传航线到边缘服务器")
    @PostMapping("/uploadRouteToSixHe/{id}/{boxSn}")
    public AjaxResult uploadRouteToSixHe(@PathVariable("id") String id,
                                         @PathVariable("boxSn") String boxSn) {
        return success(ardRouteInfoService.uploadRouteToSixHe(id,boxSn));
    }
    /**
     * 开始航线
     */
    @ApiOperation("开始航线")
    @PostMapping("/routeBegins/{boxSn}")
    public AjaxResult routeBegins(@PathVariable("boxSn") String boxSn) {
        ardRouteInfoService.routeBegins(boxSn);
        return AjaxResult.success();
    }
    /**
     * 暂停航线
     */
    @ApiOperation("暂停航线")
    @PostMapping("/routeSuspension/{boxSn}")
    public AjaxResult routeSuspension(@PathVariable("boxSn") String boxSn) {
        ardRouteInfoService.routeSuspension(boxSn);
        return AjaxResult.success();
    }
    /**
     * 恢复航线
     */
    @ApiOperation("恢复航线")
    @PostMapping("/routeResumption/{boxSn}")
    public AjaxResult routeResumption(@PathVariable("boxSn") String boxSn) {
        ardRouteInfoService.routeResumption(boxSn);
        return AjaxResult.success();
    }
    /**
     * 结束航线
     */
    @ApiOperation("结束航线")
    @PostMapping("/routeEnd/{boxSn}")
    public AjaxResult routeEnd(@PathVariable("boxSn") String boxSn) {
        ardRouteInfoService.routeEnd(boxSn);
        return AjaxResult.success();
    }
}
ard-route/pom.xml
@@ -55,6 +55,10 @@
            <groupId>com.ard</groupId>
            <artifactId>ard-system</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ard</groupId>
            <artifactId>ard-work</artifactId>
        </dependency>
    </dependencies>
ard-route/src/main/java/com/ard/route/domain/sixhe/ArdRouteChange.java
@@ -26,4 +26,8 @@
    private List<ArdRoutePoints> points;
    private Integer securityHeight;
    private Integer templateId;
}
ard-route/src/main/java/com/ard/route/service/IArdRouteInfoService.java
@@ -4,6 +4,8 @@
import com.ard.oss.model.MinioUploadResult;
import com.ard.route.domain.dto.ArdNoflyDto;
import com.ard.route.domain.route.ArdRouteInfo;
import com.ard.route.domain.sixhe.ArdRouteChange;
import com.ard.work.domain.dto.wayline.WayLineUploadDTO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -92,9 +94,51 @@
    /**
     * 判断行点是否在禁飞区
     *
     * ardNoflyDto
     * @param ardNoflyDto 禁飞区DTO实体类
     * @return 结果
     */
    public Boolean selectRouteInfomationNoFly(ArdNoflyDto ardNoflyDto);
    /**
     * 上传航线到边缘服务器
     *
     * @param id ID
     * @param boxSn 云盒SN编号
     * @return 结果
     */
    public Boolean uploadRouteToSixHe(String id, String boxSn);
    /**
     * 开始航线
     *
     * @param boxSn 云盒SN编号
     * @return 结果
     */
    public Boolean routeBegins(String boxSn);
    /**
     * 暂停航线
     *
     * @param boxSn 云盒SN编号
     * @return 结果
     */
    public Boolean routeSuspension(String boxSn);
    /**
     * 恢复航线
     *
     * @param boxSn 云盒SN编号
     * @return 结果
     */
    public Boolean routeResumption(String boxSn);
    /**
     * 结束航线
     *
     * @param boxSn 云盒SN编号
     * @return 结果
     */
    public Boolean routeEnd(String boxSn);
}
ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
@@ -1,6 +1,7 @@
package com.ard.route.service.impl;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.ard.common.exception.ControlException;
@@ -13,13 +14,20 @@
import com.ard.data.noflyzone.utils.NoFlyZoneUtils;
import com.ard.oss.model.MinioUploadResult;
import com.ard.oss.service.impl.OssServiceContext;
import com.ard.route.domain.djuav.ActionGroupReq;
import com.ard.route.domain.djuav.PointActionReq;
import com.ard.route.domain.djuav.RoutePointReq;
import com.ard.route.domain.djuav.UavRouteReq;
import com.ard.route.domain.dto.ArdNoflyDto;
import com.ard.route.domain.route.ArdRouteInfo;
import com.ard.route.domain.sixhe.ArdRouteChange;
import com.ard.route.domain.vo.KmzResultVo;
import com.ard.route.mapper.ArdRouteInfoMapper;
import com.ard.route.service.IArdRouteInfoService;
import com.ard.route.service.UavRouteService;
import com.ard.work.domain.dto.state.PointData;
import com.ard.work.domain.dto.wayline.*;
import com.ard.work.service.ITyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@@ -48,6 +56,9 @@
    @Resource
    private IArdNoFlyZoneService ardNoFlyZoneService;
    @Resource
    private ITyService tyService;
    /**
     * 查询航线(kmz)
@@ -227,6 +238,228 @@
    }
    /**
     * 上传航线到边缘服务器
     *
     * ardNoflyDto
     * @return 结果
     */
    @Override
    public Boolean uploadRouteToSixHe(String id,String boxSn) {
        // 1.获取航线信息
        // 1.1通过航线数据,转换。
        ArdRouteInfo route = ardRouteInfoMapper.selectArdRouteInfoById(id);
        try {
            route.setUavRouteReq((UavRouteReq) deserialize(route.getRouteData()));
        } catch (IOException | ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
        // 2.将航线信息转换成对应实体类
        WayLineUploadDTO wayLineUploadDTO = buildWayLineUploadDTO(route);
        // 3.调用接口
        tyService.wayLineUpload(wayLineUploadDTO);
        return true;
    }
    /**
     * 开始航线
     *
     * @param boxSn 云盒SN编号
     * @return 结果
     */
    @Override
    public Boolean routeBegins(String boxSn) {
        WayLineBeginDTO wayLineBeginDTO = new WayLineBeginDTO(boxSn);
        tyService.wayLineBegin(wayLineBeginDTO);
        return true;
    }
    /**
     * 暂停航线
     *
     * @param boxSn 云盒SN编号
     * @return 结果
     */
    @Override
    public Boolean routeSuspension(String boxSn) {
        WayLinePauseDTO wayLinePauseDTO = new WayLinePauseDTO(boxSn);
        tyService.wayLinePause(wayLinePauseDTO);
        return true;
    }
    /**
     * 恢复航线
     *
     * @param boxSn 云盒SN编号
     * @return 结果
     */
    @Override
    public Boolean routeResumption(String boxSn) {
        WayLineResumeDTO wayLineResumeDTO = new WayLineResumeDTO(boxSn);
        tyService.wayLineResume(wayLineResumeDTO);
        return true;
    }
    /**
     * 结束航线
     *
     * @param boxSn 云盒SN编号
     * @return 结果
     */
    @Override
    public Boolean routeEnd(String boxSn) {
        WayLineEndDTO wayLineEndDTO = new WayLineEndDTO(boxSn);
        tyService.wayLineEnd(wayLineEndDTO);
        return true;
    }
    /**
     * ArdRouteInfo实体转换,WayLineUploadDTO
     */
    private WayLineUploadDTO buildWayLineUploadDTO(ArdRouteInfo ardRouteInfo){
        WayLineUploadDTO wayLineUploadDTO = new WayLineUploadDTO();
        String finishAction = ardRouteInfo.getUavRouteReq().getFinishAction(); //1
        Double autoFlightSpeed = ardRouteInfo.getUavRouteReq().getAutoFlightSpeed(); //15
        Double globalTransitionalSpeed = ardRouteInfo.getUavRouteReq().getGlobalTransitionalSpeed(); //8
        String exitOnRcLostAction = ardRouteInfo.getUavRouteReq().getExitOnRcLostAction();  //0
        PlanLineData planLineData = new PlanLineData();
        if (finishAction != null){
            planLineData.setLoseAction(0);
        }
        if (autoFlightSpeed != null){
            planLineData.setAutoSpeed(8);
        }
        if (globalTransitionalSpeed != null){
            planLineData.setMaxSpeed(15);
        }
        if (exitOnRcLostAction != null){
            planLineData.setFinishedAction(1);
        }
        planLineData.setHomeHeight(50);
        planLineData.setInterests(new ArrayList<>());
        planLineData.setIsSaveEnergyMode(0);
        planLineData.setPoints(buildPointDataList(ardRouteInfo.getUavRouteReq()));
        wayLineUploadDTO.setWayLineData(planLineData);
        return wayLineUploadDTO;
    }
    private List<PointData> buildPointDataList(UavRouteReq uavRouteReq){
        List<PointData> pointDataList = new ArrayList<>();
        for (RoutePointReq routePointReq : uavRouteReq.getRoutePointList()) {
            PointData pointData = new PointData();
            Integer routePointIndex = routePointReq.getRoutePointIndex();
            if (routePointIndex != null){
                pointData.setGroupIndex(routePointIndex);
            }
            Double height = routePointReq.getHeight();
            if (height != null){
                pointData.setHeight(height.floatValue());
            }
            Double longitude = routePointReq.getLatitude();
            if (longitude != null){
                pointData.setLng(longitude.floatValue());
            }
            Double latitude = routePointReq.getLongitude();
            if (latitude != null){
                pointData.setLat(latitude.floatValue());
            }
            Double speed = routePointReq.getSpeed();
            if (speed != null){
                pointData.setSpeed(speed.floatValue());
            }
            pointData.setDampingDistance(0);
            pointData.setFlightPathMode(1);
            pointData.setHeading(0);
            pointData.setHeadingMode(0);
            pointData.setInterestIndex(-1);
            pointData.setSafeGohomeFlag(0);
            pointData.setActions(buildPointActionList(routePointReq.getActionGroupList()));
            pointDataList.add(pointData);
        }
        return pointDataList;
    }
    private List<PointAction> buildPointActionList(List<ActionGroupReq> actionGroupList){
        List<PointAction> pointActionList = new ArrayList<>();
        for (ActionGroupReq actionGroupReq : actionGroupList) {
            for (PointActionReq action : actionGroupReq.getActions()) {
                PointAction pointAction = typeProcessing(action);
                pointActionList.add(pointAction);
            }
        }
        return pointActionList;
    }
    private PointAction typeProcessing(PointActionReq pointActionReq){
        PointAction pointAction = new PointAction();
        if (pointActionReq.getZoom() != null){
            pointAction.setType(1);
            pointAction.setParam(pointActionReq.getZoom().floatValue());
            pointAction.setSpeakInfo("");
            pointAction.setWaitTime(2);
        }
        if (pointActionReq.getTakePhotoType() != null){
            pointAction.setType(2);
            pointAction.setParam(1);
            pointAction.setSpeakInfo("");
            pointAction.setWaitTime(2);
        }
        if (pointActionReq.getStartRecord() != null){
            pointAction.setType(3);
            pointAction.setParam(1);
            pointAction.setSpeakInfo("");
            pointAction.setWaitTime(2);
        }
        if (pointActionReq.getStopRecord() != null){
            pointAction.setType(4);
            pointAction.setParam(1);
            pointAction.setSpeakInfo("");
            pointAction.setWaitTime(2);
        }
        if (pointActionReq.getAircraftHeading() != null){
            pointAction.setType(5);
            pointAction.setParam(pointActionReq.getAircraftHeading().floatValue());
            pointAction.setSpeakInfo("");
            pointAction.setWaitTime(2);
        }
        if (pointActionReq.getGimbalPitchRotateAngle() != null){
            pointAction.setType(6);
            pointAction.setParam(pointActionReq.getGimbalPitchRotateAngle().floatValue());
            pointAction.setSpeakInfo("");
            pointAction.setWaitTime(2);
        }
        if (pointActionReq.getGimbalYawRotateAngle() != null){
            pointAction.setType(7);
            pointAction.setParam(pointActionReq.getGimbalYawRotateAngle().floatValue());
            pointAction.setSpeakInfo("");
            pointAction.setWaitTime(2);
        }
        if (pointActionReq.getHoverTime() != null){
            pointAction.setType(9);
            pointAction.setParam(pointActionReq.getHoverTime().floatValue());
            pointAction.setSpeakInfo("");
            pointAction.setWaitTime(2);
        }
        return pointAction;
    }
    /**
     * 数据新增航线信息
     */
    private void insertRouteInfomation(ArdRouteInfo ardRouteInfo){
ard-route/src/main/java/com/ard/route/util/InitializationUtils.java
@@ -80,40 +80,137 @@
        ardRouteChange.setIsSaveEnergyMode(0);
        ardRouteChange.setLoseAction(0);
        ardRouteChange.setMaxSpeed(15);
        ardRouteChange.setSecurityHeight(50);
        ardRouteChange.setTemplateId(0);
        List<ArdRoutePoints> points = new ArrayList<>();
        ArdRoutePoints ardRoutePoints0 = new ArdRoutePoints();
        ardRoutePoints0.setDampingDistance(0);
        ardRoutePoints0.setFlightPathMode(1);
        ardRoutePoints0.setGroupIndex(0);
        ardRoutePoints0.setHeading(0);
        ardRoutePoints0.setHeadingMode(0);
        ardRoutePoints0.setHeight(50);
        ardRoutePoints0.setInterestIndex(0);
        ardRoutePoints0.setLat(31.11339916);
        ardRoutePoints0.setLon(103.75851462);
        ardRoutePoints0.setSafeGohomeFlag(0);
        ardRoutePoints0.setSpeed(8);
        List<ArdRouteActions> actions = new ArrayList<>();
        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);
        actions.add(ardRouteActions0);
        actions.add(ardRouteActions1);
        actions.add(ardRouteActions2);
        points.add(ardRoutePoints0);
        //-----------------------------------------------------
        ArdRoutePoints ardRoutePoints00 = new ArdRoutePoints();
        ardRoutePoints00.setDampingDistance(0);
        ardRoutePoints00.setFlightPathMode(1);
        ardRoutePoints00.setGroupIndex(0);
        ardRoutePoints00.setHeading(0);
        ardRoutePoints00.setHeadingMode(0);
        ardRoutePoints00.setHeight(50);
        ardRoutePoints00.setInterestIndex(-1);
        ardRoutePoints00.setLat(31.11339916);
        ardRoutePoints00.setLon(103.75851462);
        ardRoutePoints00.setSafeGohomeFlag(0);
        ardRoutePoints00.setSpeed(8);
        List<ArdRouteActions> actions00 = new ArrayList<>();
        ArdRouteActions ardRouteActions00 = new ArdRouteActions();
        ardRouteActions00.setParam(10);
        ardRouteActions00.setSpeakInfo("");
        ardRouteActions00.setType(1);
        ardRouteActions00.setWaitTime(2);
        ArdRouteActions ardRouteActions01 = new ArdRouteActions();
        ardRouteActions01.setParam(10);
        ardRouteActions01.setSpeakInfo("");
        ardRouteActions01.setType(1);
        ardRouteActions01.setWaitTime(2);
        ArdRouteActions ardRouteActions02 = new ArdRouteActions();
        ardRouteActions02.setParam(10);
        ardRouteActions02.setSpeakInfo("");
        ardRouteActions02.setType(1);
        ardRouteActions02.setWaitTime(2);
        actions00.add(ardRouteActions00);
        actions00.add(ardRouteActions01);
        actions00.add(ardRouteActions02);
        ardRoutePoints00.setActions(actions00);
        //-----------------------------------------------------
        ArdRoutePoints ardRoutePoints10 = new ArdRoutePoints();
        ardRoutePoints10.setDampingDistance(0);
        ardRoutePoints10.setFlightPathMode(1);
        ardRoutePoints10.setGroupIndex(0);
        ardRoutePoints10.setHeading(0);
        ardRoutePoints10.setHeadingMode(0);
        ardRoutePoints10.setHeight(50);
        ardRoutePoints10.setInterestIndex(-1);
        ardRoutePoints10.setLat(31.11339916);
        ardRoutePoints10.setLon(103.75746538);
        ardRoutePoints10.setSafeGohomeFlag(0);
        ardRoutePoints10.setSpeed(8);
        List<ArdRouteActions> actions10 = new ArrayList<>();
        ArdRouteActions ardRouteActions10 = new ArdRouteActions();
        ardRouteActions10.setParam(20);
        ardRouteActions10.setSpeakInfo("");
        ardRouteActions10.setType(9);
        ardRouteActions10.setWaitTime(2);
        ArdRouteActions ardRouteActions11 = new ArdRouteActions();
        ardRouteActions11.setParam(40);
        ardRouteActions11.setSpeakInfo("");
        ardRouteActions11.setType(6);
        ardRouteActions11.setWaitTime(2);
        ArdRouteActions ardRouteActions12 = new ArdRouteActions();
        ardRouteActions12.setParam(40);
        ardRouteActions12.setSpeakInfo("");
        ardRouteActions12.setType(7);
        ardRouteActions12.setWaitTime(2);
        ArdRouteActions ardRouteActions13 = new ArdRouteActions();
        ardRouteActions13.setParam(40);
        ardRouteActions13.setSpeakInfo("");
        ardRouteActions13.setType(8);
        ardRouteActions13.setWaitTime(2);
        actions10.add(ardRouteActions10);
        actions10.add(ardRouteActions11);
        actions10.add(ardRouteActions12);
        ardRoutePoints10.setActions(actions10);
        //-----------------------------------------------------
        ArdRoutePoints ardRoutePoints20 = new ArdRoutePoints();
        ardRoutePoints20.setDampingDistance(0);
        ardRoutePoints20.setFlightPathMode(1);
        ardRoutePoints20.setGroupIndex(0);
        ardRoutePoints20.setHeading(0);
        ardRoutePoints20.setHeadingMode(0);
        ardRoutePoints20.setHeight(50);
        ardRoutePoints20.setInterestIndex(-1);
        ardRoutePoints20.setLat(31.11250084);
        ardRoutePoints20.setLon(103.75746538);
        ardRoutePoints20.setSafeGohomeFlag(0);
        ardRoutePoints20.setSpeed(8);
        List<ArdRouteActions> actions20 = new ArrayList<>();
        ArdRouteActions ardRouteActions20 = new ArdRouteActions();
        ardRouteActions20.setParam(15);
        ardRouteActions20.setSpeakInfo("");
        ardRouteActions20.setType(9);
        ardRouteActions20.setWaitTime(2);
        ArdRouteActions ardRouteActions21 = new ArdRouteActions();
        ardRouteActions21.setParam(3);
        ardRouteActions21.setSpeakInfo("");
        ardRouteActions21.setType(10);
        ardRouteActions21.setWaitTime(2);
        actions20.add(ardRouteActions20);
        actions20.add(ardRouteActions21);
        ardRoutePoints20.setActions(actions20);
        //-----------------------------------------------------
        ArdRoutePoints ardRoutePoints30 = new ArdRoutePoints();
        ardRoutePoints30.setDampingDistance(0);
        ardRoutePoints30.setFlightPathMode(1);
        ardRoutePoints30.setGroupIndex(0);
        ardRoutePoints30.setHeading(0);
        ardRoutePoints30.setHeadingMode(0);
        ardRoutePoints30.setHeight(60);
        ardRoutePoints30.setInterestIndex(-1);
        ardRoutePoints30.setLat(31.11250084);
        ardRoutePoints30.setLon(103.75851462);
        ardRoutePoints30.setSafeGohomeFlag(0);
        ardRoutePoints30.setSpeed(8);
        List<ArdRouteActions> actions30 = new ArrayList<>();
        ArdRouteActions ardRouteActions30 = new ArdRouteActions();
        ardRouteActions30.setParam(1);
        ardRouteActions30.setSpeakInfo("");
        ardRouteActions30.setType(2);
        ardRouteActions30.setWaitTime(2);
        actions30.add(ardRouteActions30);
        ardRoutePoints30.setActions(actions30);
        points.add(ardRoutePoints00);
        points.add(ardRoutePoints10);
        points.add(ardRoutePoints20);
        points.add(ardRoutePoints30);
        ardRouteChange.setPoints(points);
    }
ard-work/src/main/java/com/ard/work/domain/dto/state/PointData.java
@@ -8,17 +8,56 @@
// 假设 PointData 类定义如下
@Data
public class PointData {
    private double lat; // 纬度
    private double lng; // 经度
    private float height; // 高度(单位:米,范围0~遥控器限高)
    private float speed; // 速度(单位:米/秒,范围0~15),默认8
    private List<PointAction> actions; // 动作数组
    private int flightPathMode; // 航线飞行模式:1=直线飞行,2=协调转弯,3=曲线飞行(停),4=曲线飞行(不停)
    private float dampingDistance; // 转弯半径(仅协调转弯模式下有效),取值范围1~655.35单位:米
    private int safeGohomeFlag; // 是否为安全返航点 0=不是,1=是
    private int headingMode; // 偏航模式 0=自动,1=锁定,2=遥控器控制,3=云台依照航点方向旋转,4=朝向兴趣点,5=飞机和云台的偏航同时旋转
    private float heading; // 航点偏航 -180~180
    private int interestIndex; // 兴趣点下标,默认-1
    private int groupIndex; // 组下标
    /** 纬度 */
    private double lat;
    /** 经度 */
    private double lng;
    /** 高度(单位:米,范围0~遥控器限高) */
    private float height;
    /** 速度(单位:米/秒,范围0~15),默认8 */
    private float speed;
    /** 动作数组 */
    private List<PointAction> actions;
    /** 航线飞行模式:
     * 1=直线飞行,
     * 2=协调转弯,
     * 3=曲线飞行(停),
     * 4=曲线飞行(不停)
     */
    private int flightPathMode;
    /** 转弯半径(仅协调转弯模式下有效),取值范围1~655.35单位:米 */
    private float dampingDistance;
    /** 是否为安全返航点
     * 0=不是,
     * 1=是
     */
    private int safeGohomeFlag;
    /** 偏航模式
     * 0=自动,
     * 1=锁定,
     * 2=遥控器控制,
     * 3=云台依照航点方向旋转,
     * 4=朝向兴趣点,
     * 5=飞机和云台的偏航同时旋转
     */
    private int headingMode;
    /** 航点偏航 -180~180 */
    private float heading;
    /** 兴趣点下标,默认-1 */
    private int interestIndex;
    /** 组下标 */
    private int groupIndex;
}
ard-work/src/main/java/com/ard/work/domain/dto/wayline/PlanLineData.java
@@ -18,17 +18,43 @@
@AllArgsConstructor
@NoArgsConstructor
public class PlanLineData {
    private int finishedAction;     // 结束航线后动作(必填)
    private float maxSpeed;         // 最大飞行速度(单位:米/秒)
    private float autoSpeed;        // 自动飞行速度(单位:米/秒)
    private List<PointData> points; // 坐标点数组(必填)
    private int loseAction;         // 网络失联后动作(必填)
    private int homeHeight;         // 返航高度(必填)
    private int isSaveEnergyMode;   // 是否开启节能模式
    private HangarPoint takePoint;  // 起飞点机库信息
    private HangarPoint landPoint;  // 降落点机库信息
    private List<PointData> interests;      // 兴趣点数组
    private NormalModel normalModel;        // 普通建模
    private SurroundModel surroundModel;    // 环绕建模
    private PointData takeOffPoint;         // 起飞点
    /**  结束航线后动作(必填) */
    private int finishedAction;
    /**  最大飞行速度(单位:米/秒) */
    private float maxSpeed;
    /**  自动飞行速度(单位:米/秒) */
    private float autoSpeed;
    /**  坐标点数组(必填) */
    private List<PointData> points;
    /**  网络失联后动作(必填) */
    private int loseAction;
    /**  返航高度(必填) */
    private int homeHeight;
    /**  是否开启节能模式 */
    private int isSaveEnergyMode;
    /**  起飞点机库信息 */
    private HangarPoint takePoint;
    /**  降落点机库信息 */
    private HangarPoint landPoint;
    /**  兴趣点数组 */
    private List<PointData> interests;
    /**  普通建模 */
    private NormalModel normalModel;
    /**  环绕建模 */
    private SurroundModel surroundModel;
    /**  起飞点 */
    private PointData takeOffPoint;
}
ard-work/src/main/java/com/ard/work/domain/dto/wayline/PointAction.java
@@ -15,8 +15,33 @@
@AllArgsConstructor
@NoArgsConstructor
public class PointAction {
    private int type; // 类型:1-变焦 2-拍照 3-录像 4-停录 5-控制飞机机头偏航 6-控制云台俯仰 7-控制云台偏航 8-控制云台横滚 9-悬停 10-等距间隔拍照 11-等时间隔拍照 12-结束间隔拍照 13-单条喊话 14-开始循环喊话 15-结束循环喊话 16-对焦
    private float param; // 参数,根据类型不同含义不同
    private int waitTime; // 动作触发后等待时长(单位:秒)
    private String speakInfo; // 喊话内容[type=13和type=14时生效]
    /** 类型:
     * 1-变焦
     * 2-拍照
     * 3-录像
     * 4-停录
     * 5-控制飞机机头偏航
     * 6-控制云台俯仰
     * 7-控制云台偏航
     * 8-控制云台横滚
     * 9-悬停
     * 10-等距间隔拍照
     * 11-等时间隔拍照
     * 12-结束间隔拍照
     * 13-单条喊话
     * 14-开始循环喊话
     * 15-结束循环喊话
     * 16-对焦
     */
    private int type;
    /** 参数,根据类型不同含义不同 */
    private float param;
    /** 动作触发后等待时长(单位:秒) */
    private int waitTime;
    /** 喊话内容[type=13和type=14时生效] */
    private String speakInfo;
}
ard-work/src/main/java/com/ard/work/domain/dto/wayline/WayLineUploadDTO.java
@@ -16,6 +16,14 @@
@AllArgsConstructor
@NoArgsConstructor
public class WayLineUploadDTO {
    /**
     * 云盒SN编号
     */
    private String boxSn;
    /**
     * 航线数据
     */
    private PlanLineData wayLineData;
}