Xiajijian
2025-11-29 bd2ead7fc4642833ae6188574e5738407e988c1c
ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
@@ -113,20 +113,10 @@
        if (ardRouteInfo.getGroupId() == null){
            ardRouteInfo.setGroupId("0");
        }
        // 航线数据
        byte[] routeData;
        try {
            routeData = serialize(ardRouteInfo.getUavRouteReq());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        ardRouteInfo.getUavRouteReq().setDroneType(subStringDroneType(ardRouteInfo.getAircraft()));
        ardRouteInfo.setRouteData(routeData);
        KmzResultVo kmzResult = routeService.buildKmz(ardRouteInfo.getUavRouteReq(), ardRouteInfo.getName());
        ardRouteInfo.setPath(kmzResult.getPath());
        ardRouteInfo.setReadOnly("0");
        ardRouteInfo.setPointCount(getPointCount(ardRouteInfo));
        ardRouteInfoMapper.insertArdRouteInfo(ardRouteInfo);
        ardRouteInfoMapper.insertArdRouteInfo(dataProcessing(ardRouteInfo));
        return kmzResult.getPath();
    }
@@ -144,20 +134,34 @@
            KmzResultVo kmzResult;
            // 获取源文件名字
            ArdRouteInfo route = ardRouteInfoMapper.selectArdRouteInfoById(ardRouteInfo.getId());
            if (route.getName().equals(ardRouteInfo.getName())) {
                kmzResult = routeService.updateKmz(ardRouteInfo.getUavRouteReq(), ardRouteInfo.getName());
            }else {
                kmzResult = routeService.updateKmzNew(ardRouteInfo.getUavRouteReq(), route.getName(), ardRouteInfo.getName());
            }
            // 先删除航线
            delOssService(route);
            // 再生成航线
            kmzResult = routeService.buildKmz(ardRouteInfo.getUavRouteReq(), ardRouteInfo.getName());
            if ("更新航线kmz文件失败".equals(kmzResult.getData())) {
                return 0;
            }
            ardRouteInfo.setPath(kmzResult.getPath());
        }
        ardRouteInfo.setPointCount(getPointCount(ardRouteInfo));
        return ardRouteInfoMapper.updateArdRouteInfo(ardRouteInfo);
        return ardRouteInfoMapper.updateArdRouteInfo(dataProcessing(ardRouteInfo));
    }
    // 新增信息加工
    private ArdRouteInfo dataProcessing(ArdRouteInfo ardRouteInfo) {
        // 航线数据
        byte[] routeData;
        try {
            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().getRoutePointList() != null) {
            return ardRouteInfo.getUavRouteReq().getRoutePointList().size();
@@ -176,9 +180,19 @@
        // 删除航线(kmz)文件
        for (String id : ids) {
            ArdRouteInfo information = ardRouteInfoMapper.selectArdRouteInfoById(id);
            ossService.deleteObject("kmz", subStringMinioUrlName(information.getPath()));
            delOssService(information);
        }
        return ardRouteInfoMapper.deleteArdRouteInfoByIds(ids);
    }
    // 删除minio文件
    private void delOssService(ArdRouteInfo information){
        if (information.getPath() != null){
            ossService.deleteObject("kmz", subStringMinioUrlName(information.getPath()));
        }
        if (information.getPath1() != null){
            ossDockService.deleteObject("kmz", subStringMinioUrlName(information.getPath1()));
        }
    }
    /**
@@ -209,6 +223,8 @@
            information.setPath1(urlDock);
            information.setGroupId("0");     // 默认分组
            information.setReadOnly("1");   // 默认只读
            // 生成kmz文件实体类加工
            // 增加航线实体类信息
            insertRouteInfomation(information);
            return MinioUploadResult.builder()
@@ -486,6 +502,7 @@
    private void insertRouteInfomation(ArdRouteInfo ardRouteInfo){
        ardRouteInfo.setId(IdUtils.simpleUUID());
        ardRouteInfo.setCreateTime(DateUtils.getNowDate());
        ardRouteInfo.setUpdateTime(DateUtils.getNowDate());
        ardRouteInfoMapper.insertArdRouteInfo(ardRouteInfo);
    }