From a0ee9a0ddb46f6f38c7e91eaf73762cba122f24b Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Wed, 12 Nov 2025 20:00:08 +0800
Subject: [PATCH] 2025-11-12 zwy 增加模块飞行参数

---
 ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 107 insertions(+), 4 deletions(-)

diff --git a/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java
index 1bfdcab..fa62ebc 100644
--- a/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -73,6 +73,12 @@
     @Autowired
     private IFileService fileService;
 
+    /**
+     * 插入航路作业
+     *
+     * @param jobEntity 航路作业实体
+     * @return 航路作业DTO的Optional包装对象,如果插入失败则返回Optional.empty()
+     */
     private Optional<WaylineJobDTO> insertWaylineJob(WaylineJobEntity jobEntity) {
         int id = mapper.insert(jobEntity);
         if (id <= 0) {
@@ -81,6 +87,15 @@
         return Optional.ofNullable(this.entity2Dto(jobEntity));
     }
 
+    /**
+     * 创建航线任务
+     *
+     * @param param    任务参数
+     * @param username 用户名
+     * @param beginTime 开始时间
+     * @param endTime   结束时间
+     * @return Optional<WaylineJobDTO> 返回创建的航线任务对象,若创建失败则返回Optional.empty()
+     */
     @Override
     public Optional<WaylineJobDTO> createWaylineJob(CreateJobParam param, String username, Long beginTime, Long endTime) {
         if (Objects.isNull(param)) {
@@ -106,6 +121,12 @@
         return insertWaylineJob(jobEntity);
     }
 
+    /**
+     * 根据父作业ID创建新的作业
+     *
+     * @param parentId 父作业ID
+     * @return 新创建的作业的DTO对象,如果父作业不存在,则返回Optional.empty()
+     */
     @Override
     public Optional<WaylineJobDTO> createWaylineJobByParent(String parentId) {
         Optional<WaylineJobDTO> parentJobOpt = this.getJobByJobId(parentId);
@@ -123,6 +144,14 @@
         return this.insertWaylineJob(jobEntity);
     }
 
+    /**
+     * 发布飞行任务
+     *
+     * @param param 任务参数
+     * @param loginUser 登录用户
+     * @return ResponseResult 返回结果
+     * @throws SQLException SQL异常
+     */
     @Override
     public ResponseResult publishFlightTask(CreateJobParam param, LoginUser loginUser) throws SQLException {
         if (WaylineTaskTypeEnum.IMMEDIATE.getVal() == param.getTaskType()) {
@@ -176,7 +205,6 @@
         if (ResponseResult.CODE_SUCCESS != serviceReply.getResult()) {
             log.info("Prepare task ====> Error code: {}", serviceReply.getResult());
             this.updateJob(WaylineJobDTO.builder()
-                    .workspaceId(waylineJob.getWorkspaceId())
                     .jobId(waylineJob.getJobId())
                     .executeTime(LocalDateTime.now())
                     .status(WaylineJobStatusEnum.FAILED.getVal())
@@ -194,7 +222,7 @@
 
         if (WaylineTaskTypeEnum.TIMED.getVal() == waylineJob.getTaskType()) {
             boolean isAdd = RedisOpsUtils.zAdd(RedisConst.WAYLINE_JOB_TIMED_EXECUTE,
-                    waylineJob.getWorkspaceId() + RedisConst.DELIMITER + waylineJob.getDockSn() + RedisConst.DELIMITER + waylineJob.getJobId(),
+                     waylineJob.getDockSn() + RedisConst.DELIMITER + waylineJob.getJobId(),
                     waylineJob.getBeginTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
             if (!isAdd) {
                 return ResponseResult.error("Failed to create scheduled job.");
@@ -204,6 +232,14 @@
         return ResponseResult.success();
     }
 
+    /**
+     * 执行飞行任务
+     *
+     * @param jobId 任务ID
+     * @return 如果任务执行成功返回true,否则返回false
+     * @throws IllegalArgumentException 如果任务不存在
+     * @throws RuntimeException 如果设备处于离线状态
+     */
     @Override
     public Boolean executeFlightTask(String jobId) {
         // get job
@@ -253,6 +289,12 @@
         return true;
     }
 
+    /**
+     * 取消飞行任务
+     *
+     * @param jobIds 需要取消的任务ID集合
+     * @throws IllegalArgumentException 如果任务状态不正确,抛出非法参数异常
+     */
     @Override
     public void cancelFlightTask(Collection<String> jobIds) {
         List<WaylineJobDTO> waylineJobs = getJobsByConditions(jobIds, WaylineJobStatusEnum.PENDING);
@@ -273,6 +315,13 @@
 
     }
 
+    /**
+     * 发布取消任务
+     *
+     * @param dockSn 设备序列号
+     * @param jobIds   任务ID列表
+     * @throws RuntimeException 如果设备离线或取消任务失败,则抛出运行时异常
+     */
     @Override
     public void publishCancelTask(String dockSn, List<String> jobIds) {
         boolean isOnline = deviceService.checkDeviceOnline(dockSn);
@@ -306,6 +355,13 @@
 
     }
 
+    /**
+     * 根据条件查询作业列表
+     *
+     * @param jobIds 作业ID集合
+     * @param status 作业状态枚举
+     * @return 满足条件的作业DTO列表
+     */
     @Override
     public List<WaylineJobDTO> getJobsByConditions(Collection<String> jobIds, WaylineJobStatusEnum status) {
         return mapper.selectList(
@@ -318,6 +374,12 @@
                 .collect(Collectors.toList());
     }
 
+    /**
+     * 根据任务ID获取任务详情
+     *
+     * @param jobId 任务ID
+     * @return Optional<WaylineJobDTO> 包含任务详情的Optional对象,如果不存在则返回空的Optional
+     */
     @Override
     public Optional<WaylineJobDTO> getJobByJobId(String jobId) {
         WaylineJobEntity jobEntity = mapper.selectOne(
@@ -326,6 +388,12 @@
         return Optional.ofNullable(entity2Dto(jobEntity));
     }
 
+    /**
+     * 更新作业信息
+     *
+     * @param dto 作业信息传输对象
+     * @return 更新成功返回true,否则返回false
+     */
     @Override
     public Boolean updateJob(WaylineJobDTO dto) {
         return mapper.update(this.dto2Entity(dto),
@@ -333,6 +401,13 @@
                         .eq(WaylineJobEntity::getJobId, dto.getJobId())) > 0;
     }
 
+    /**
+     * 根据工作区ID获取工作线任务分页数据
+     *
+     * @param page     页码,从1开始
+     * @param pageSize 每页显示条数
+     * @return PaginationData 包含工作线任务分页数据的对象
+     */
     @Override
     public PaginationData<WaylineJobDTO> getJobsByWorkspaceId(long page, long pageSize) {
         Page<WaylineJobEntity> pageData = mapper.selectPage(
@@ -348,6 +423,18 @@
     }
 
 
+    /**
+     * 根据航班任务ID获取航班任务资源
+     *
+     * @param receiver 接收到的消息对象
+     * @param headers  消息头信息
+     *
+     * @Override 覆盖父类方法
+     * @ServiceActivator(inputChannel = ChannelName.INBOUND_REQUESTS_FLIGHT_TASK_RESOURCE_GET, outputChannel = ChannelName.OUTBOUND)
+     *             指定输入通道和输出通道
+     * @Transactional(isolation = Isolation.READ_UNCOMMITTED)
+     *             设置事务隔离级别为未提交读
+     */
     @Override
     @ServiceActivator(inputChannel = ChannelName.INBOUND_REQUESTS_FLIGHT_TASK_RESOURCE_GET, outputChannel = ChannelName.OUTBOUND)
     @Transactional(isolation = Isolation.READ_UNCOMMITTED)
@@ -403,6 +490,12 @@
 
     }
 
+    /**
+     * 上传媒体文件的最高优先级
+     *
+     * @param jobId 作业ID
+     * @throws RuntimeException 如果作业ID不合法或设置优先级失败
+     */
     @Override
     public void uploadMediaHighestPriority(String jobId) {
         Optional<WaylineJobDTO> jobOpt = getJobByJobId(jobId);
@@ -430,6 +523,12 @@
         }
     }
 
+    /**
+     * 将WaylineJobDTO对象转换为WaylineJobEntity对象
+     *
+     * @param dto WaylineJobDTO对象
+     * @return WaylineJobEntity对象
+     */
     private WaylineJobEntity dto2Entity(WaylineJobDTO dto) {
         WaylineJobEntity.WaylineJobEntityBuilder builder = WaylineJobEntity.builder();
         if (dto == null) {
@@ -454,7 +553,6 @@
                 .jobId(dto.getJobId())
                 .fileId(dto.getFileId())
                 .dockSn(dto.getDockSn())
-                .workspaceId(dto.getWorkspaceId())
                 .taskType(dto.getTaskType())
                 .waylineType(dto.getWaylineType())
                 .username(dto.getUsername())
@@ -464,6 +562,12 @@
                 .build();
     }
 
+    /**
+     * 将实体对象转换为数据传输对象
+     *
+     * @param entity WaylineJobEntity 实体对象
+     * @return WaylineJobDTO 数据传输对象
+     */
     private WaylineJobDTO entity2Dto(WaylineJobEntity entity) {
         if (entity == null) {
             return null;
@@ -479,7 +583,6 @@
                 .dockName(deviceService.getDeviceBySn(entity.getDockSn())
                         .orElse(DeviceDTO.builder().build()).getNickname())
                 .username(entity.getUsername())
-                .workspaceId(entity.getWorkspaceId())
                 .status(WaylineJobStatusEnum.IN_PROGRESS.getVal() == entity.getStatus() &&
                         RedisOpsUtils.checkExist(RedisConst.WAYLINE_JOB_PAUSED_PREFIX + entity.getJobId()) ?
                         WaylineJobStatusEnum.PAUSED.getVal() : entity.getStatus())

--
Gitblit v1.9.3