zhaowenyu
2025-12-11 ef872a884132acca45d0295f26ae7bea94cd7042
ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -189,7 +189,7 @@
        }
        if (waylineJobOpt.isEmpty()) {
            return ResponseResult.error("创建机场任务失败!");
            return ResponseResult.error(314013000,"创建机场任务失败!");
        }
        WaylineJobDTO waylineJob = waylineJobOpt.get();
@@ -206,8 +206,8 @@
//        }
        // 换航线表
        ArdRouteInfo ardRouteOpt = _ardRouteInfoService.selectArdRouteInfoById(waylineJob.getFileId());
        if (ardRouteOpt == null) {
            return ResponseResult.error("机场任务航线不存在!");
        if (ardRouteOpt == null || ardRouteOpt.getPath1() == null || ardRouteOpt.getPath1().isEmpty()) {
            return ResponseResult.error(314013001,"机场任务航线不存在!");
        }
        // get file url
@@ -222,7 +222,7 @@
            log.info("机场任务航线文件md5值:{}", md5);
        } catch (Exception e) {
            log.error("机场任务航线文件地址错误!{}", e.getMessage());
            return ResponseResult.error("机场任务航线文件地址错误!" + e.getMessage());
            return ResponseResult.error(314013002,"机场任务航线文件地址错误!" + e.getMessage());
        }
        log.info("机场任务-rth_mode的值:{}", waylineJob.getRthMode());
@@ -290,7 +290,7 @@
        // Issue an immediate task execution command.
        if (WaylineTaskTypeEnum.IMMEDIATE.getVal() == waylineJob.getTaskType()) {
            if (!executeFlightTask(waylineJob.getJobId())) {
                return ResponseResult.error("Failed to execute job.");
                return ResponseResult.error("无法执行作业。");
            }
        }
@@ -299,7 +299,7 @@
                     waylineJob.getDockSn() + RedisConst.DELIMITER + waylineJob.getJobId(),
                    waylineJob.getBeginTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
            if (!isAdd) {
                return ResponseResult.error("Failed to create scheduled job.");
                return ResponseResult.error("无法创建计划作业。");
            }
        }
@@ -309,7 +309,7 @@
    public ResponseResult publishFlightTaskPrepare(Optional<WaylineJobDTO> waylineJobOpt) throws SQLException{
        if (waylineJobOpt.isEmpty()) {
            return ResponseResult.error("创建机场任务失败!");
            return ResponseResult.error(314013000,"创建机场任务失败!");
        }
        WaylineJobDTO waylineJob = waylineJobOpt.get();
        boolean isOnline = deviceService.checkDeviceOnline(waylineJob.getDockSn());
@@ -318,21 +318,21 @@
        }
        // 换航线表
        ArdRouteInfo ardRouteOpt = _ardRouteInfoService.selectArdRouteInfoById(waylineJob.getFileId());
        if (ardRouteOpt == null) {
            return ResponseResult.error("机场任务航线不存在!");
        if (ardRouteOpt == null || ardRouteOpt.getPath1() == null || ardRouteOpt.getPath1().isEmpty()) {
            return ResponseResult.error(314013001,"机场任务航线不存在!");
        }
        // get file url
        URL url = null;
        String minioUrl = subStringMinioUrlName(ardRouteOpt.getPath());
        String minioUrl = subStringMinioUrlName(ardRouteOpt.getPath1());
        String md5 = "";
        try (InputStream inputStream = _ossService.getObject(kmzPath, minioUrl)) {
            md5 = DigestUtils.md5Hex(inputStream);
            url = new URL(ardRouteOpt.getPath());
            url = new URL(ardRouteOpt.getPath1());
            log.info("机场任务航线文件url地址:{}", url);
            log.info("机场任务航线文件md5值:{}", md5);
        } catch (Exception e) {
            log.error("机场任务航线文件地址错误!{}", e.getMessage());
            return ResponseResult.error("机场任务航线文件地址错误!" + e.getMessage());
            return ResponseResult.error(314013002,"机场任务航线文件地址错误!" + e.getMessage());
        }
        WaylineTaskCreateDTO flightTask = WaylineTaskCreateDTO.builder()
@@ -342,6 +342,7 @@
                .waylineType(waylineJob.getWaylineType())
                .rthAltitude(waylineJob.getRthAltitude())
                .outOfControlAction(waylineJob.getOutOfControlAction())
                .rthMode(waylineJob.getRthMode())
                .file(WaylineTaskFileDTO.builder()
                        .url(url.toString())
//                        .fingerprint(waylineFile.get().getSign())
@@ -396,7 +397,7 @@
        // Issue an immediate task execution command.
        if (WaylineTaskTypeEnum.IMMEDIATE.getVal() == waylineJob.getTaskType()) {
            if (!executeFlightTask(waylineJob.getJobId())) {
                return ResponseResult.error("Failed to execute job.");
                return ResponseResult.error("无法执行作业。");
            }
        }
@@ -405,7 +406,7 @@
                     waylineJob.getDockSn() + RedisConst.DELIMITER + waylineJob.getJobId(),
                    waylineJob.getBeginTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
            if (!isAdd) {
                return ResponseResult.error("Failed to create scheduled job.");
                return ResponseResult.error("无法创建计划作业。");
            }
        }
@@ -597,8 +598,17 @@
                return ResponseResult.error("任务不存在,jobId: " + jobId);
            }
            if (waylineJobDTO.get().getTaskType() == 3) {
                // 已经执行完的子任务是否删除,或者清掉父任务ID,和正常任务一起显示在列表中。
                // 已经执行完的子任务一起全部删除
                this.deleteTask(jobId);
                log.info("删除循环任务已经完成,主任务ID:{}。", waylineJobDTO.get().getJobId());
                List<WaylineJobDTO> waylineParentIds = this.getJobByJobParentId(jobId);
                if (!waylineParentIds.isEmpty()) {
                    for (WaylineJobDTO waylineJob : waylineParentIds) {
                        this.deleteTask(waylineJob.getJobId());
                        RedisOpsUtils.zRemove(RedisConst.WAYLINE_JOB_TIMED_EXECUTE, dockSn + RedisConst.DELIMITER + waylineJob.getJobId());
                        log.info("删除循环子任务已经完成,子任务ID:{}。", waylineJob.getJobId());
                    }
                }
                return ResponseResult.success();
            }
        }