From 69ee90e5414c0c777dd128dfa1581d8ff46b6307 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 11 Dec 2023 17:29:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E7=B3=BB=E7=BB=9F=E7=AE=A1?= =?UTF-8?q?=E7=90=86-=E4=BB=BB=E5=8A=A1=E7=AE=A1=E7=90=86-=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=90=8C=E6=AD=A5=E8=8F=9C=E5=8D=95=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=20#5760?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/ext/ExtDataSetTaskMapper.xml | 30 +++++++++++++++---- .../job/sechedule/ScheduleManager.java | 8 +++++ .../io/dataease/service/ScheduleService.java | 10 +++++++ .../dataset/DataSetTableTaskService.java | 10 +++++++ .../src/views/system/task/DatasetTaskList.vue | 15 ++++++++-- 5 files changed, 66 insertions(+), 7 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/ext/ExtDataSetTaskMapper.xml b/core/backend/src/main/java/io/dataease/ext/ExtDataSetTaskMapper.xml index 3accb94e70..57090a03ad 100644 --- a/core/backend/src/main/java/io/dataease/ext/ExtDataSetTaskMapper.xml +++ b/core/backend/src/main/java/io/dataease/ext/ExtDataSetTaskMapper.xml @@ -87,7 +87,7 @@ qrtz_triggers.NEXT_FIRE_TIME FROM dataset_table_task left join dataset_table on dataset_table.id=dataset_table_task.table_id - left join qrtz_triggers on dataset_table_task.id=qrtz_triggers.TRIGGER_NAME + left join qrtz_triggers on dataset_table_task.id=qrtz_triggers.TRIGGER_NAME and qrtz_triggers.TRIGGER_STATE != 'PAUSED' where 1=1 and dataset_table_task.rate in @@ -122,7 +122,18 @@ and dataset_table_task.name like concat('%', #{keyword}, '%') - order by dataset_table_task.create_time desc + + + order by + + ${item} + + + + order by dataset_table_task.create_time desc + + + diff --git a/core/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java b/core/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java index 0a8a24758a..66506835ed 100644 --- a/core/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java +++ b/core/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java @@ -425,4 +425,12 @@ public class ScheduleManager { scheduler.triggerJob(jobKey); } + public void pauseTrigger(TriggerKey triggerKey) throws SchedulerException { + scheduler.pauseTrigger(triggerKey); + } + + public void resumeTrigger(TriggerKey triggerKey) throws SchedulerException { + scheduler.resumeTrigger(triggerKey); + } + } diff --git a/core/backend/src/main/java/io/dataease/service/ScheduleService.java b/core/backend/src/main/java/io/dataease/service/ScheduleService.java index d3ad79ede5..37aa95ed76 100644 --- a/core/backend/src/main/java/io/dataease/service/ScheduleService.java +++ b/core/backend/src/main/java/io/dataease/service/ScheduleService.java @@ -9,6 +9,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableTask; import io.dataease.plugins.common.entity.GlobalTaskEntity; import org.apache.commons.lang3.StringUtils; import org.quartz.JobKey; +import org.quartz.SchedulerException; import org.quartz.TriggerKey; import org.springframework.stereotype.Service; @@ -83,5 +84,14 @@ public class ScheduleService { taskHandler.executeTask(scheduleManager, task); } + public void pauseTrigger(DatasetTableTask datasetTableTask) throws SchedulerException { + TriggerKey triggerKey = new TriggerKey(datasetTableTask.getId(), datasetTableTask.getTableId()); + scheduleManager.pauseTrigger(triggerKey); + } + + public void resumeTrigger(DatasetTableTask datasetTableTask) throws SchedulerException { + TriggerKey triggerKey = new TriggerKey(datasetTableTask.getId(), datasetTableTask.getTableId()); + scheduleManager.resumeTrigger(triggerKey); + } } diff --git a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java index 19e1d3b818..9231546ab4 100644 --- a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java +++ b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java @@ -11,6 +11,7 @@ import io.dataease.dto.dataset.DataSetTaskDTO; import io.dataease.exception.DataEaseException; import io.dataease.ext.ExtDataSetTaskMapper; import io.dataease.i18n.Translator; +import io.dataease.job.sechedule.ScheduleManager; import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.mapper.DatasetTableMapper; import io.dataease.plugins.common.base.mapper.DatasetTableTaskMapper; @@ -265,6 +266,8 @@ public class DataSetTableTaskService { public List taskList4User(DatasetTaskGridRequest request) { request.setUserId(null); + request.getOrders().add(0, "dataset_table_task.status desc"); + request.getOrders().replaceAll(t -> t.replace("next_exec_time", "NEXT_FIRE_TIME")); if (AuthUtils.getUser().getIsAdmin()) { return extDataSetTaskMapper.taskList(request); } else { @@ -309,6 +312,13 @@ public class DataSetTableTaskService { DatasetTableTask record = new DatasetTableTask(); record.setStatus(datasetTableTask.getStatus()); datasetTableTaskMapper.updateByExampleSelective(record, datasetTableTaskExample); + + if(datasetTableTask.getStatus().equalsIgnoreCase(TaskStatus.Pending.name())){ + scheduleService.pauseTrigger(datasetTableTask); + } + if(datasetTableTask.getStatus().equalsIgnoreCase(TaskStatus.Underway.name())){ + scheduleService.resumeTrigger(datasetTableTask); + } } public void execTask(DatasetTableTask datasetTableTask) throws Exception { diff --git a/core/frontend/src/views/system/task/DatasetTaskList.vue b/core/frontend/src/views/system/task/DatasetTaskList.vue index 25412774cc..954daf8392 100644 --- a/core/frontend/src/views/system/task/DatasetTaskList.vue +++ b/core/frontend/src/views/system/task/DatasetTaskList.vue @@ -129,6 +129,7 @@ @selection-change="handleSelectionChange" @size-change="handleSizeChange" @current-change="handleCurrentChange" + @sort-change="sortChange" > @@ -342,7 +344,7 @@