forked from github/dataease
feat: 系统管理-任务管理-数据同步菜单支持排序 #5760
This commit is contained in:
parent
70986fddd7
commit
69ee90e541
@ -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>
|
||||
order by dataset_table_task.create_time desc
|
||||
<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>
|
||||
order by dataset_table_task.create_time desc
|
||||
<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>
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user