feat: 系统管理-任务管理-数据同步菜单支持排序 #5760

This commit is contained in:
taojinlong 2023-12-11 17:29:22 +08:00
parent 70986fddd7
commit 69ee90e541
5 changed files with 66 additions and 7 deletions

View File

@ -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
<if test="rate != null and rate.size() > 0">
and dataset_table_task.rate in
@ -122,7 +122,18 @@
<if test="keyword != null">
and dataset_table_task.name like concat('%', #{keyword}, '%')
</if>
<choose>
<when test="orders!=null and orders.size > 0">
order by
<foreach collection="orders" item="item" open='' separator=',' close=''>
${item}
</foreach>
</when>
<otherwise>
order by dataset_table_task.create_time desc
</otherwise>
</choose>
</select>
<select id="userTaskList" resultMap="TaskResult" parameterType="io.dataease.controller.dataset.request.DatasetTaskGridRequest">
@ -130,8 +141,7 @@
`privileges`,dataset_table_task.* , 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
<if test="rate != null and rate.size() > 0">
and dataset_table_task.rate in
@ -166,7 +176,17 @@
<if test="keyword != null">
and dataset_table_task.name like concat('%', #{keyword}, '%')
</if>
<choose>
<when test="orders!=null and orders.size > 0">
order by
<foreach collection="orders" item="item" open='' separator=',' close=''>
${item}
</foreach>
</when>
<otherwise>
order by dataset_table_task.create_time desc
</otherwise>
</choose>
</select>

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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<DataSetTaskDTO> 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 {

View File

@ -129,6 +129,7 @@
@selection-change="handleSelectionChange"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
@sort-change="sortChange"
>
<el-table-column
type="selection"
@ -214,6 +215,7 @@
<el-table-column
key="nextExecTime"
prop="nextExecTime"
sortable="custom"
min-width="178"
:label="$t('dataset.task.next_exec_time')"
>
@ -342,7 +344,7 @@
<script>
import { columnOptions } from './options'
import { formatOrders } from '@/utils/index'
import {addOrder, formatOrders} from '@/utils/index'
import { datasetTaskList, post } from '@/api/dataset/dataset'
import { hasDataPermission } from '@/utils/permission'
import GridTable from '@/components/gridTable/index.vue'
@ -493,9 +495,18 @@ export default {
this.paginationConfig.pageSize = pageSize
this.search()
},
sortChange({ column, prop, order }) {
this.orderConditions = [];
if (!order) {
this.search(true);
return;
}
addOrder({ field: prop, value: order }, this.orderConditions);
this.search(true);
},
handleCurrentChange(currentPage) {
this.paginationConfig.currentPage = currentPage
this.search()
this.search(true)
},
initSearch() {
this.handleCurrentChange(1)