Xiajijian
2025-12-01 2587cb5656a988d580c1e3d45185ea3d1e7dd6d0
1. 优化没有无人机类型 。
2. 优化没有航线类型。
3. 优化readOnly错误。
4 files modified
62 ■■■■■ changed files
ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java 4 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/util/ToolUtils.java 23 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/util/UavRouteReqUtils.java 15 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
@@ -36,6 +36,7 @@
import javax.annotation.Resource;
import static com.ard.route.util.ToolUtils.*;
import static com.ard.route.util.UavRouteReqUtils.fileConversionEntity;
/**
 * 航线(kmz)Service业务层处理
@@ -116,6 +117,7 @@
        ardRouteInfo.getUavRouteReq().setDroneType(subStringDroneType(ardRouteInfo.getAircraft()));
        KmzResultVo kmzResult = routeService.buildKmz(ardRouteInfo.getUavRouteReq(), ardRouteInfo.getName());
        ardRouteInfo.setPath(kmzResult.getPath());
        ardRouteInfo.setReadOnly("0");
        ardRouteInfoMapper.insertArdRouteInfo(dataProcessing(ardRouteInfo));
        return kmzResult.getPath();
    }
@@ -143,28 +145,32 @@
            }
            ardRouteInfo.setPath(kmzResult.getPath());
        }
        ardRouteInfo.setReadOnly("0");
        return ardRouteInfoMapper.updateArdRouteInfo(dataProcessing(ardRouteInfo));
    }
    // 新增信息加工
    private ArdRouteInfo dataProcessing(ArdRouteInfo ardRouteInfo) {
        // 航线数据
        byte[] routeData;
        byte[] routeData = null;
        try {
            if (ardRouteInfo.getUavRouteReq() != null){
            routeData = serialize(ardRouteInfo.getUavRouteReq());
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ardRouteInfo.setRouteData(routeData);
        ardRouteInfo.setReadOnly("0");
        ardRouteInfo.setPointCount(getPointCount(ardRouteInfo));
        return ardRouteInfo;
    }
    // 获取行点总数
    private Integer getPointCount(ArdRouteInfo ardRouteInfo) {
        if (ardRouteInfo.getUavRouteReq() != null){
        if (ardRouteInfo.getUavRouteReq().getRoutePointList() != null) {
            return ardRouteInfo.getUavRouteReq().getRoutePointList().size();
            }
        }
        return 0;
    }
@@ -223,9 +229,13 @@
            information.setPath1(urlDock);
            information.setGroupId("0");     // 默认分组
            information.setReadOnly("1");   // 默认只读
            // 生成kmz文件实体类加工
            // 增加航线实体类信息
            UavRouteReq uavRouteReq = fileConversionEntity(file);
            if (uavRouteReq != null){
                information.setUavRouteReq(uavRouteReq);
                information.setType(templateTypeData(uavRouteReq));
                information.setAircraft(droneTypeData(uavRouteReq));
            }
            insertRouteInfomation(information);
            return MinioUploadResult.builder()
                    .url(url)
@@ -503,7 +513,7 @@
        ardRouteInfo.setId(IdUtils.simpleUUID());
        ardRouteInfo.setCreateTime(DateUtils.getNowDate());
        ardRouteInfo.setUpdateTime(DateUtils.getNowDate());
        ardRouteInfoMapper.insertArdRouteInfo(ardRouteInfo);
        ardRouteInfoMapper.insertArdRouteInfo(dataProcessing(ardRouteInfo));
    }
    /**
ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
@@ -37,7 +37,7 @@
import static com.ard.route.util.RouteFileUtils.*;
import static com.ard.route.util.ToolUtils.*;
import static com.ard.route.util.UavRouteReqUtils.kmzInfoVOToUavRouteReq;
import static com.ard.route.util.UavRouteReqUtils.kmzInfoVoToUavRouteReq;
/**
 * Author:xia
@@ -236,7 +236,7 @@
     */
    @Override
    public UavRouteReq kmzInfoVoToUavRouteReq(KmzInfoVo kmzInfoVo) {
        return kmzInfoVOToUavRouteReq(kmzInfoVo);
        return kmzInfoVoToUavRouteReq(kmzInfoVo);
    }
}
ard-route/src/main/java/com/ard/route/util/ToolUtils.java
@@ -1,5 +1,7 @@
package com.ard.route.util;
import com.ard.route.domain.djuav.UavRouteReq;
import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -125,6 +127,10 @@
        return Integer.valueOf(parts[1]);
    }
    /**
     * 截取字符串
     * 获取经纬度
     */
    public static Double getDoublePoint(String str,String type) {
        String[] parts = str.split(",");
        if ("lon".equals(type)) {
@@ -136,4 +142,21 @@
        return null;
    }
    /**
     * 获取航线类型方法
     */
    public static String templateTypeData(UavRouteReq uavRouteReq) {
        if ("waypoint".equals(uavRouteReq.getTemplateType())){
            return "0";
        }
        return "1";
    }
    /**
     * 获取无人机类型方法
     */
    public static String droneTypeData(UavRouteReq uavRouteReq) {
        return "0-" + uavRouteReq.getDroneType() + "-0";
    }
}
ard-route/src/main/java/com/ard/route/util/UavRouteReqUtils.java
@@ -22,11 +22,8 @@
public class UavRouteReqUtils {
    @Resource
    private OssServiceContext ossService;
    // 将文件转换成 UavRouteReq 实体
    public static KmzInfoVo fileConversionEntity(MultipartFile file){
    public static UavRouteReq fileConversionEntity(MultipartFile file){
        KmzInfoVo kmzInfoVO = new KmzInfoVo();
        try (InputStream inputStream = file.getInputStream();
             ArchiveInputStream archiveInputStream = new ZipArchiveInputStream(inputStream)){
@@ -39,14 +36,14 @@
                    kmzInfoVO.setWpmlInfo(RouteFileUtils.parseKml(archiveInputStream));
                }
            }
            return kmzInfoVO;
            return kmzInfoVoToUavRouteReq(kmzInfoVO);
        }catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static UavRouteReq kmzInfoVOToUavRouteReq(KmzInfoVo vo) {
    public static UavRouteReq kmzInfoVoToUavRouteReq(KmzInfoVo vo) {
        UavRouteReq uavRouteReq = new UavRouteReq();
        if (vo.getKmlInfo().getDocument().getFolder().getTemplateType() != null){
            uavRouteReq.setTemplateType(vo.getKmlInfo().getDocument().getFolder().getTemplateType());
@@ -119,13 +116,13 @@
                pointActionReq.setGimbalYawRotateAngle(Double.valueOf(kmlAction.getActionActuatorFuncParam().getGimbalYawRotateAngle()));
            }
        }
        if ("zoom".equals(kmlAction.getActionActuatorFunc())) {
        if ("zoom".equals(kmlAction.getActionActuatorFunc())) {     // 变焦
            pointActionReq.setZoom(Double.valueOf(kmlAction.getActionActuatorFuncParam().getFocalLength()));
        }
        if ("hover".equals(kmlAction.getActionActuatorFunc())) {
        if ("hover".equals(kmlAction.getActionActuatorFunc())) {    // 悬停
            pointActionReq.setHoverTime(Integer.valueOf(kmlAction.getActionActuatorFuncParam().getHoverTime()));
        }
        if ("rotateYaw".equals(kmlAction.getActionActuatorFunc())) {
        if ("rotateYaw".equals(kmlAction.getActionActuatorFunc())) {       // 飞行器偏航
            pointActionReq.setAircraftHeading(Double.valueOf(kmlAction.getActionActuatorFuncParam().getAircraftHeading()));
        }
        return pointActionReq;