From 4136ac9c1be3198bfe6c4d3726ee18cf05777df9 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Thu, 04 Dec 2025 17:11:36 +0800
Subject: [PATCH] 2025-12-04 zwy 循环任务主主任删除时,子任务一并删除

---
 ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 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 930ca2e..7862e01 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
@@ -597,8 +597,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();
             }
         }
@@ -630,7 +639,7 @@
                     .status(WaylineJobStatusEnum.CANCEL.getVal())
                     .completedTime(LocalDateTime.now())
                     .build());
-            RedisOpsUtils.zRemove(RedisConst.WAYLINE_JOB_TIMED_EXECUTE, RedisConst.DELIMITER + dockSn + RedisConst.DELIMITER + jobId);
+            RedisOpsUtils.zRemove(RedisConst.WAYLINE_JOB_TIMED_EXECUTE, dockSn + RedisConst.DELIMITER + jobId);
             // 原流程是修改表中数据的status状态值,现在的精力是直接删除
             this.deleteTask(jobId);
         }
@@ -772,6 +781,18 @@
                 .orderByDesc(WaylineJobEntity::getId));
     }
 
+    /**
+     * 获取所有待定状态的定时任务,未执行即将要执行的。
+     * */
+    public List<WaylineJobEntity> selectScheduledTaskList(){
+        // "1":"定时任务"
+        return mapper.selectList(new LambdaQueryWrapper<WaylineJobEntity>()
+                .eq(WaylineJobEntity::getTaskType, 1)
+                .eq(WaylineJobEntity::getStatus, WaylineJobStatusEnum.PENDING.getVal())
+                .gt(WaylineJobEntity::getBeginTime, System.currentTimeMillis())
+                .orderByDesc(WaylineJobEntity::getBeginTime));
+    }
+
 
     /**
      * 根据航班任务ID获取航班任务资源

--
Gitblit v1.9.3