diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/query/GridExample.java b/backend/src/main/java/io/dataease/base/mapper/ext/query/GridExample.java index 46482b7f48..1c4530cdc1 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/query/GridExample.java +++ b/backend/src/main/java/io/dataease/base/mapper/ext/query/GridExample.java @@ -103,6 +103,10 @@ public class GridExample { criteria.add(new Criterion(condition)); } + protected void addNotNullCriterion(String condition) { + criteria.add(new Criterion(condition, null)); + } + protected void addCriterion(String condition, Object value, String property) { if (value == null) { throw new RuntimeException("Value for " + property + " cannot be null"); @@ -164,6 +168,9 @@ public class GridExample { case "le": addCriterion(field+" <= ", value, field); break; + case "not null": + addNotNullCriterion(field + " is not null "); + break; } return (Criteria) this; } @@ -242,7 +249,9 @@ public class GridExample { this.condition = condition; this.value = value; this.typeHandler = typeHandler; - if (value instanceof List) { + if(value == null){ + this.noValue = true; + }else if (value instanceof List) { this.listValue = true; } else { this.singleValue = true; diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskLogService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskLogService.java index c785cc3828..f0f0041a09 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskLogService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskLogService.java @@ -1,5 +1,6 @@ package io.dataease.service.dataset; +import com.google.gson.Gson; import io.dataease.base.domain.DatasetTableTask; import io.dataease.base.domain.DatasetTableTaskLog; import io.dataease.base.domain.DatasetTableTaskLogExample; @@ -8,6 +9,7 @@ import io.dataease.base.mapper.DatasetTableTaskMapper; import io.dataease.base.mapper.ext.ExtDataSetTaskMapper; import io.dataease.base.mapper.ext.query.GridExample; import io.dataease.controller.sys.base.BaseGridRequest; +import io.dataease.controller.sys.base.ConditionEntity; import io.dataease.dto.dataset.DataSetTaskDTO; import io.dataease.dto.dataset.DataSetTaskLogDTO; import org.apache.commons.collections4.CollectionUtils; @@ -15,6 +17,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -45,6 +48,15 @@ public class DataSetTableTaskLogService { } public List list(BaseGridRequest request) { + ConditionEntity entity = new ConditionEntity(); + entity.setField("task_id"); + entity.setOperator("not null"); + List conditionEntities = request.getConditions(); + if(CollectionUtils.isEmpty(conditionEntities)){ + conditionEntities = new ArrayList<>(); + } + conditionEntities.add(entity); + request.setConditions(conditionEntities); GridExample gridExample = request.convertExample(); return extDataSetTaskMapper.list(gridExample); } @@ -78,7 +90,7 @@ public class DataSetTableTaskLogService { if(StringUtils.isNotEmpty(dataSetTaskDTO.getId())){ criteria.andTaskIdEqualTo(dataSetTaskDTO.getId()); } - example.setOrderByClause("create_time desc limit 1"); + example.setOrderByClause("create_time desc"); List datasetTableTaskLogs = datasetTableTaskLogMapper.selectByExampleWithBLOBs(example); if(CollectionUtils.isNotEmpty(datasetTableTaskLogs)){ dataSetTaskDTO.setLastExecStatus(datasetTableTaskLogs.get(0).getStatus()); diff --git a/frontend/src/api/dataset/dataset.js b/frontend/src/api/dataset/dataset.js index f5100ed445..d011d924c0 100644 --- a/frontend/src/api/dataset/dataset.js +++ b/frontend/src/api/dataset/dataset.js @@ -136,12 +136,12 @@ export function taskList(spage, size, data) { }) } -export function datasetTaskList(page, size, data) { +export function datasetTaskList(page, size, data, loading) { return request({ url: '/dataset/task/pageList/' + page + '/' + size, method: 'post', data, - loading: true + loading: loading }) } diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 4fd51ed5fd..942885d77f 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -1200,6 +1200,9 @@ export default { minute: 'Minute', hour: 'Hour', day: 'Day', + minute_default: 'Minutes (execution time: 0 seconds)', + hour_default: 'Hours (execution time: 0 minutes 0 seconds)', + day_default: 'Day (execution time: 0:00:00)', month: 'Month', week: 'Week', year: 'Year', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 3cfaf32aa3..62b8043487 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -856,8 +856,8 @@ export default { start_time: '開始時間', end_time: '結束時間', status: '狀態', - error: '錯誤', - completed: '完成', + error: '失敗', + completed: '成功', underway: '執行中', task_update: '更新設置', update_type: '更新方式', @@ -1200,6 +1200,9 @@ export default { minute: '分', hour: '時', day: '日', + minute_default: '分 (執行時間:0秒)', + hour_default: '時 (執行時間:0分0秒)', + day_default: '日 (執行時間:0時0分0秒)', month: '月', week: '周', year: '年', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index d8a625ac72..f5e545b01e 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -856,8 +856,8 @@ export default { start_time: '开始时间', end_time: '结束时间', status: '状态', - error: '错误', - completed: '完成', + error: '失败', + completed: '成功', underway: '执行中', task_update: '更新设置', update_type: '更新方式', @@ -1202,6 +1202,9 @@ export default { minute: '分', hour: '时', day: '日', + minute_default: '分 (执行时间:0秒)', + hour_default: '时 (执行时间:0分0秒)', + day_default: '日 (执行时间:0时0分0秒)', month: '月', week: '周', year: '年', diff --git a/frontend/src/views/system/task/DatasetTaskList.vue b/frontend/src/views/system/task/DatasetTaskList.vue index b4e3db81f1..a3bee32864 100644 --- a/frontend/src/views/system/task/DatasetTaskList.vue +++ b/frontend/src/views/system/task/DatasetTaskList.vue @@ -99,12 +99,13 @@ - - - + + + - + + @@ -289,7 +290,7 @@ export default { created() { this.search() this.timer = setInterval(() => { - this.search() + this.search(this.last_condition, false) }, 5000) }, beforeDestroy() { @@ -314,14 +315,14 @@ export default { }, select(selection) { }, - search(condition) { + search(condition, showLoading = true) { this.last_condition = condition condition = formatQuickCondition(condition, 'dataset_table_task.name') const temp = formatCondition(condition) const param = temp || {} param['orders'] = formatOrders(this.orderConditions) const { currentPage, pageSize } = this.paginationConfig - datasetTaskList(currentPage, pageSize, param).then(response => { + datasetTaskList(currentPage, pageSize, param, showLoading).then(response => { this.data = response.data.listObject this.data.forEach(item => { this.taskStatus(item) @@ -330,7 +331,7 @@ export default { }) }, taskStatus(item) { - post('/dataset/task/lastExecStatus', item).then(response => { + post('/dataset/task/lastExecStatus', item, false).then(response => { if(!item.lastExecStatus) { item.lastExecStatus = response.data.lastExecStatus } diff --git a/frontend/src/views/system/task/TaskRecord.vue b/frontend/src/views/system/task/TaskRecord.vue index 7939b95540..2632e5bd0a 100644 --- a/frontend/src/views/system/task/TaskRecord.vue +++ b/frontend/src/views/system/task/TaskRecord.vue @@ -106,7 +106,7 @@ export default { created() { this.search() this.timer = setInterval(() => { - this.search() + this.search(this.last_condition, false) }, 5000) }, computed: {