Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
njgzx
dataease
Commits
70c51f98
Unverified
提交
70c51f98
authored
7月 08, 2021
作者:
taojinlong
提交者:
GitHub
7月 08, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #183 from dataease/pr@dev@taskmgm
feat: 任务管理
上级
7b0a6183
83b56bee
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
38 个修改的文件
包含
1047 行增加
和
147 行删除
+1047
-147
DatasetTableTask.java
...c/main/java/io/dataease/base/domain/DatasetTableTask.java
+7
-0
DatasetTableTaskExample.java
...java/io/dataease/base/domain/DatasetTableTaskExample.java
+200
-0
DatasetTableTaskLog.java
...ain/java/io/dataease/base/domain/DatasetTableTaskLog.java
+2
-0
DatasetTableTaskLogExample.java
...a/io/dataease/base/domain/DatasetTableTaskLogExample.java
+70
-0
DatasetTableTaskLogMapper.xml
...ava/io/dataease/base/mapper/DatasetTableTaskLogMapper.xml
+25
-5
DatasetTableTaskMapper.xml
...n/java/io/dataease/base/mapper/DatasetTableTaskMapper.xml
+54
-5
ExtDataSetTableMapper.xml
...ava/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml
+3
-0
ExtDataSetTaskMapper.java
...ava/io/dataease/base/mapper/ext/ExtDataSetTaskMapper.java
+5
-1
ExtDataSetTaskMapper.xml
...java/io/dataease/base/mapper/ext/ExtDataSetTaskMapper.xml
+33
-4
ScheduleType.java
...main/java/io/dataease/commons/constants/ScheduleType.java
+1
-1
TaskStatus.java
...c/main/java/io/dataease/commons/constants/TaskStatus.java
+5
-0
TriggerType.java
.../main/java/io/dataease/commons/constants/TriggerType.java
+5
-0
DataSetTableTaskController.java
...taease/controller/dataset/DataSetTableTaskController.java
+35
-0
DataSetTableTaskLogController.java
...ase/controller/dataset/DataSetTableTaskLogController.java
+2
-1
DataSetTaskDTO.java
...src/main/java/io/dataease/dto/dataset/DataSetTaskDTO.java
+18
-0
ScheduleManager.java
.../main/java/io/dataease/job/sechedule/ScheduleManager.java
+6
-0
AppStartListener.java
.../src/main/java/io/dataease/listener/AppStartListener.java
+2
-2
ScheduleService.java
...nd/src/main/java/io/dataease/service/ScheduleService.java
+4
-3
DataSetTableService.java
...java/io/dataease/service/dataset/DataSetTableService.java
+6
-1
DataSetTableTaskLogService.java
.../dataease/service/dataset/DataSetTableTaskLogService.java
+36
-4
DataSetTableTaskService.java
.../io/dataease/service/dataset/DataSetTableTaskService.java
+93
-25
ExtractDataService.java
.../java/io/dataease/service/dataset/ExtractDataService.java
+59
-26
V12__system_task.sql
backend/src/main/resources/db/migration/V12__system_task.sql
+14
-0
dataset.js
frontend/src/api/dataset/dataset.js
+17
-0
task.svg
frontend/src/icons/svg/task.svg
+1
-0
en.js
frontend/src/lang/en.js
+17
-0
tw.js
frontend/src/lang/tw.js
+17
-0
zh.js
frontend/src/lang/zh.js
+17
-0
webMsg.js
frontend/src/utils/webMsg.js
+0
-3
Group.vue
frontend/src/views/chart/group/Group.vue
+0
-41
TableSelector.vue
frontend/src/views/chart/view/TableSelector.vue
+18
-2
DatasetGroupSelectorTree.vue
...end/src/views/dataset/common/DatasetGroupSelectorTree.vue
+6
-20
UpdateInfo.vue
frontend/src/views/dataset/data/UpdateInfo.vue
+2
-2
DatasetTaskList.vue
frontend/src/views/system/task/DatasetTaskList.vue
+0
-0
TaskRecord.vue
frontend/src/views/system/task/TaskRecord.vue
+181
-0
dataset.vue
frontend/src/views/system/task/dataset.vue
+65
-0
index.vue
frontend/src/views/system/task/index.vue
+21
-0
index.vue
frontend/src/views/system/user/index.vue
+0
-1
没有找到文件。
backend/src/main/java/io/dataease/base/domain/DatasetTableTask.java
浏览文件 @
70c51f98
...
...
@@ -25,5 +25,11 @@ public class DatasetTableTask implements Serializable {
private
Long
createTime
;
private
Long
lastExecTime
;
private
String
status
;
private
String
lastExecStatus
;
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
backend/src/main/java/io/dataease/base/domain/DatasetTableTaskExample.java
浏览文件 @
70c51f98
...
...
@@ -773,6 +773,206 @@ public class DatasetTableTaskExample {
addCriterion
(
"create_time not between"
,
value1
,
value2
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeIsNull
()
{
addCriterion
(
"last_exec_time is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeIsNotNull
()
{
addCriterion
(
"last_exec_time is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeEqualTo
(
Long
value
)
{
addCriterion
(
"last_exec_time ="
,
value
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeNotEqualTo
(
Long
value
)
{
addCriterion
(
"last_exec_time <>"
,
value
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeGreaterThan
(
Long
value
)
{
addCriterion
(
"last_exec_time >"
,
value
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeGreaterThanOrEqualTo
(
Long
value
)
{
addCriterion
(
"last_exec_time >="
,
value
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeLessThan
(
Long
value
)
{
addCriterion
(
"last_exec_time <"
,
value
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeLessThanOrEqualTo
(
Long
value
)
{
addCriterion
(
"last_exec_time <="
,
value
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeIn
(
List
<
Long
>
values
)
{
addCriterion
(
"last_exec_time in"
,
values
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeNotIn
(
List
<
Long
>
values
)
{
addCriterion
(
"last_exec_time not in"
,
values
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeBetween
(
Long
value1
,
Long
value2
)
{
addCriterion
(
"last_exec_time between"
,
value1
,
value2
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecTimeNotBetween
(
Long
value1
,
Long
value2
)
{
addCriterion
(
"last_exec_time not between"
,
value1
,
value2
,
"lastExecTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusIsNull
()
{
addCriterion
(
"`status` is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusIsNotNull
()
{
addCriterion
(
"`status` is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusEqualTo
(
String
value
)
{
addCriterion
(
"`status` ="
,
value
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusNotEqualTo
(
String
value
)
{
addCriterion
(
"`status` <>"
,
value
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusGreaterThan
(
String
value
)
{
addCriterion
(
"`status` >"
,
value
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"`status` >="
,
value
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusLessThan
(
String
value
)
{
addCriterion
(
"`status` <"
,
value
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"`status` <="
,
value
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusLike
(
String
value
)
{
addCriterion
(
"`status` like"
,
value
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusNotLike
(
String
value
)
{
addCriterion
(
"`status` not like"
,
value
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusIn
(
List
<
String
>
values
)
{
addCriterion
(
"`status` in"
,
values
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"`status` not in"
,
values
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"`status` between"
,
value1
,
value2
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andStatusNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"`status` not between"
,
value1
,
value2
,
"status"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusIsNull
()
{
addCriterion
(
"last_exec_status is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusIsNotNull
()
{
addCriterion
(
"last_exec_status is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusEqualTo
(
String
value
)
{
addCriterion
(
"last_exec_status ="
,
value
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusNotEqualTo
(
String
value
)
{
addCriterion
(
"last_exec_status <>"
,
value
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusGreaterThan
(
String
value
)
{
addCriterion
(
"last_exec_status >"
,
value
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"last_exec_status >="
,
value
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusLessThan
(
String
value
)
{
addCriterion
(
"last_exec_status <"
,
value
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"last_exec_status <="
,
value
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusLike
(
String
value
)
{
addCriterion
(
"last_exec_status like"
,
value
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusNotLike
(
String
value
)
{
addCriterion
(
"last_exec_status not like"
,
value
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusIn
(
List
<
String
>
values
)
{
addCriterion
(
"last_exec_status in"
,
values
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"last_exec_status not in"
,
values
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"last_exec_status between"
,
value1
,
value2
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLastExecStatusNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"last_exec_status not between"
,
value1
,
value2
,
"lastExecStatus"
);
return
(
Criteria
)
this
;
}
}
public
static
class
Criteria
extends
GeneratedCriteria
{
...
...
backend/src/main/java/io/dataease/base/domain/DatasetTableTaskLog.java
浏览文件 @
70c51f98
...
...
@@ -19,6 +19,8 @@ public class DatasetTableTaskLog implements Serializable {
private
Long
createTime
;
private
String
triggerType
;
private
String
info
;
private
static
final
long
serialVersionUID
=
1L
;
...
...
backend/src/main/java/io/dataease/base/domain/DatasetTableTaskLogExample.java
浏览文件 @
70c51f98
...
...
@@ -563,6 +563,76 @@ public class DatasetTableTaskLogExample {
addCriterion
(
"create_time not between"
,
value1
,
value2
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeIsNull
()
{
addCriterion
(
"trigger_type is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeIsNotNull
()
{
addCriterion
(
"trigger_type is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeEqualTo
(
String
value
)
{
addCriterion
(
"trigger_type ="
,
value
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeNotEqualTo
(
String
value
)
{
addCriterion
(
"trigger_type <>"
,
value
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeGreaterThan
(
String
value
)
{
addCriterion
(
"trigger_type >"
,
value
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"trigger_type >="
,
value
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeLessThan
(
String
value
)
{
addCriterion
(
"trigger_type <"
,
value
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"trigger_type <="
,
value
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeLike
(
String
value
)
{
addCriterion
(
"trigger_type like"
,
value
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeNotLike
(
String
value
)
{
addCriterion
(
"trigger_type not like"
,
value
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeIn
(
List
<
String
>
values
)
{
addCriterion
(
"trigger_type in"
,
values
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"trigger_type not in"
,
values
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"trigger_type between"
,
value1
,
value2
,
"triggerType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTriggerTypeNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"trigger_type not between"
,
value1
,
value2
,
"triggerType"
);
return
(
Criteria
)
this
;
}
}
public
static
class
Criteria
extends
GeneratedCriteria
{
...
...
backend/src/main/java/io/dataease/base/mapper/DatasetTableTaskLogMapper.xml
浏览文件 @
70c51f98
...
...
@@ -9,6 +9,7 @@
<result
column=
"end_time"
jdbcType=
"BIGINT"
property=
"endTime"
/>
<result
column=
"status"
jdbcType=
"VARCHAR"
property=
"status"
/>
<result
column=
"create_time"
jdbcType=
"BIGINT"
property=
"createTime"
/>
<result
column=
"trigger_type"
jdbcType=
"VARCHAR"
property=
"triggerType"
/>
</resultMap>
<resultMap
extends=
"BaseResultMap"
id=
"ResultMapWithBLOBs"
type=
"io.dataease.base.domain.DatasetTableTaskLog"
>
<result
column=
"info"
jdbcType=
"LONGVARCHAR"
property=
"info"
/>
...
...
@@ -72,7 +73,7 @@
</where>
</sql>
<sql
id=
"Base_Column_List"
>
id, table_id, task_id, start_time, end_time, `status`, create_time
id, table_id, task_id, start_time, end_time, `status`, create_time
, trigger_type
</sql>
<sql
id=
"Blob_Column_List"
>
info
...
...
@@ -128,10 +129,12 @@
<insert
id=
"insert"
parameterType=
"io.dataease.base.domain.DatasetTableTaskLog"
>
insert into dataset_table_task_log (id, table_id, task_id,
start_time, end_time, `status`,
create_time, info)
create_time, trigger_type, info
)
values (#{id,jdbcType=VARCHAR}, #{tableId,jdbcType=VARCHAR}, #{taskId,jdbcType=VARCHAR},
#{startTime,jdbcType=BIGINT}, #{endTime,jdbcType=BIGINT}, #{status,jdbcType=VARCHAR},
#{createTime,jdbcType=BIGINT}, #{info,jdbcType=LONGVARCHAR})
#{createTime,jdbcType=BIGINT}, #{triggerType,jdbcType=VARCHAR}, #{info,jdbcType=LONGVARCHAR}
)
</insert>
<insert
id=
"insertSelective"
parameterType=
"io.dataease.base.domain.DatasetTableTaskLog"
>
insert into dataset_table_task_log
...
...
@@ -157,6 +160,9 @@
<if
test=
"createTime != null"
>
create_time,
</if>
<if
test=
"triggerType != null"
>
trigger_type,
</if>
<if
test=
"info != null"
>
info,
</if>
...
...
@@ -183,6 +189,9 @@
<if
test=
"createTime != null"
>
#{createTime,jdbcType=BIGINT},
</if>
<if
test=
"triggerType != null"
>
#{triggerType,jdbcType=VARCHAR},
</if>
<if
test=
"info != null"
>
#{info,jdbcType=LONGVARCHAR},
</if>
...
...
@@ -218,6 +227,9 @@
<if
test=
"record.createTime != null"
>
create_time = #{record.createTime,jdbcType=BIGINT},
</if>
<if
test=
"record.triggerType != null"
>
trigger_type = #{record.triggerType,jdbcType=VARCHAR},
</if>
<if
test=
"record.info != null"
>
info = #{record.info,jdbcType=LONGVARCHAR},
</if>
...
...
@@ -235,6 +247,7 @@
end_time = #{record.endTime,jdbcType=BIGINT},
`status` = #{record.status,jdbcType=VARCHAR},
create_time = #{record.createTime,jdbcType=BIGINT},
trigger_type = #{record.triggerType,jdbcType=VARCHAR},
info = #{record.info,jdbcType=LONGVARCHAR}
<if
test=
"_parameter != null"
>
<include
refid=
"Update_By_Example_Where_Clause"
/>
...
...
@@ -248,7 +261,8 @@
start_time = #{record.startTime,jdbcType=BIGINT},
end_time = #{record.endTime,jdbcType=BIGINT},
`status` = #{record.status,jdbcType=VARCHAR},
create_time = #{record.createTime,jdbcType=BIGINT}
create_time = #{record.createTime,jdbcType=BIGINT},
trigger_type = #{record.triggerType,jdbcType=VARCHAR}
<if
test=
"_parameter != null"
>
<include
refid=
"Update_By_Example_Where_Clause"
/>
</if>
...
...
@@ -274,6 +288,9 @@
<if
test=
"createTime != null"
>
create_time = #{createTime,jdbcType=BIGINT},
</if>
<if
test=
"triggerType != null"
>
trigger_type = #{triggerType,jdbcType=VARCHAR},
</if>
<if
test=
"info != null"
>
info = #{info,jdbcType=LONGVARCHAR},
</if>
...
...
@@ -288,6 +305,7 @@
end_time = #{endTime,jdbcType=BIGINT},
`status` = #{status,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=BIGINT},
trigger_type = #{triggerType,jdbcType=VARCHAR},
info = #{info,jdbcType=LONGVARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
...
...
@@ -298,7 +316,8 @@
start_time = #{startTime,jdbcType=BIGINT},
end_time = #{endTime,jdbcType=BIGINT},
`status` = #{status,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=BIGINT}
create_time = #{createTime,jdbcType=BIGINT},
trigger_type = #{triggerType,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
</mapper>
\ No newline at end of file
backend/src/main/java/io/dataease/base/mapper/DatasetTableTaskMapper.xml
浏览文件 @
70c51f98
...
...
@@ -12,6 +12,9 @@
<result
column=
"end"
jdbcType=
"VARCHAR"
property=
"end"
/>
<result
column=
"end_time"
jdbcType=
"BIGINT"
property=
"endTime"
/>
<result
column=
"create_time"
jdbcType=
"BIGINT"
property=
"createTime"
/>
<result
column=
"last_exec_time"
jdbcType=
"BIGINT"
property=
"lastExecTime"
/>
<result
column=
"status"
jdbcType=
"VARCHAR"
property=
"status"
/>
<result
column=
"last_exec_status"
jdbcType=
"VARCHAR"
property=
"lastExecStatus"
/>
</resultMap>
<sql
id=
"Example_Where_Clause"
>
<where>
...
...
@@ -72,7 +75,8 @@
</where>
</sql>
<sql
id=
"Base_Column_List"
>
id, table_id, `name`, `type`, start_time, rate, cron, `end`, end_time, create_time
id, table_id, `name`, `type`, start_time, rate, cron, `end`, end_time, create_time,
last_exec_time, `status`, last_exec_status
</sql>
<select
id=
"selectByExample"
parameterType=
"io.dataease.base.domain.DatasetTableTaskExample"
resultMap=
"BaseResultMap"
>
select
...
...
@@ -108,11 +112,13 @@
insert into dataset_table_task (id, table_id, `name`,
`type`, start_time, rate,
cron, `end`, end_time,
create_time)
create_time, last_exec_time, `status`,
last_exec_status)
values (#{id,jdbcType=VARCHAR}, #{tableId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
#{type,jdbcType=VARCHAR}, #{startTime,jdbcType=BIGINT}, #{rate,jdbcType=VARCHAR},
#{cron,jdbcType=VARCHAR}, #{end,jdbcType=VARCHAR}, #{endTime,jdbcType=BIGINT},
#{createTime,jdbcType=BIGINT})
#{createTime,jdbcType=BIGINT}, #{lastExecTime,jdbcType=BIGINT}, #{status,jdbcType=VARCHAR},
#{lastExecStatus,jdbcType=VARCHAR})
</insert>
<insert
id=
"insertSelective"
parameterType=
"io.dataease.base.domain.DatasetTableTask"
>
insert into dataset_table_task
...
...
@@ -147,6 +153,15 @@
<if
test=
"createTime != null"
>
create_time,
</if>
<if
test=
"lastExecTime != null"
>
last_exec_time,
</if>
<if
test=
"status != null"
>
`status`,
</if>
<if
test=
"lastExecStatus != null"
>
last_exec_status,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
...
...
@@ -179,6 +194,15 @@
<if
test=
"createTime != null"
>
#{createTime,jdbcType=BIGINT},
</if>
<if
test=
"lastExecTime != null"
>
#{lastExecTime,jdbcType=BIGINT},
</if>
<if
test=
"status != null"
>
#{status,jdbcType=VARCHAR},
</if>
<if
test=
"lastExecStatus != null"
>
#{lastExecStatus,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select
id=
"countByExample"
parameterType=
"io.dataease.base.domain.DatasetTableTaskExample"
resultType=
"java.lang.Long"
>
...
...
@@ -220,6 +244,15 @@
<if
test=
"record.createTime != null"
>
create_time = #{record.createTime,jdbcType=BIGINT},
</if>
<if
test=
"record.lastExecTime != null"
>
last_exec_time = #{record.lastExecTime,jdbcType=BIGINT},
</if>
<if
test=
"record.status != null"
>
`status` = #{record.status,jdbcType=VARCHAR},
</if>
<if
test=
"record.lastExecStatus != null"
>
last_exec_status = #{record.lastExecStatus,jdbcType=VARCHAR},
</if>
</set>
<if
test=
"_parameter != null"
>
<include
refid=
"Update_By_Example_Where_Clause"
/>
...
...
@@ -236,7 +269,10 @@
cron = #{record.cron,jdbcType=VARCHAR},
`end` = #{record.end,jdbcType=VARCHAR},
end_time = #{record.endTime,jdbcType=BIGINT},
create_time = #{record.createTime,jdbcType=BIGINT}
create_time = #{record.createTime,jdbcType=BIGINT},
last_exec_time = #{record.lastExecTime,jdbcType=BIGINT},
`status` = #{record.status,jdbcType=VARCHAR},
last_exec_status = #{record.lastExecStatus,jdbcType=VARCHAR}
<if
test=
"_parameter != null"
>
<include
refid=
"Update_By_Example_Where_Clause"
/>
</if>
...
...
@@ -271,6 +307,15 @@
<if
test=
"createTime != null"
>
create_time = #{createTime,jdbcType=BIGINT},
</if>
<if
test=
"lastExecTime != null"
>
last_exec_time = #{lastExecTime,jdbcType=BIGINT},
</if>
<if
test=
"status != null"
>
`status` = #{status,jdbcType=VARCHAR},
</if>
<if
test=
"lastExecStatus != null"
>
last_exec_status = #{lastExecStatus,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
...
...
@@ -284,7 +329,10 @@
cron = #{cron,jdbcType=VARCHAR},
`end` = #{end,jdbcType=VARCHAR},
end_time = #{endTime,jdbcType=BIGINT},
create_time = #{createTime,jdbcType=BIGINT}
create_time = #{createTime,jdbcType=BIGINT},
last_exec_time = #{lastExecTime,jdbcType=BIGINT},
`status` = #{status,jdbcType=VARCHAR},
last_exec_status = #{lastExecStatus,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
</mapper>
\ No newline at end of file
backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTableMapper.xml
浏览文件 @
70c51f98
...
...
@@ -48,6 +48,9 @@
<if
test=
"mode != null"
>
and mode = #{mode,jdbcType=INTEGER}
</if>
<if
test=
"type != null"
>
and type = #{type,jdbcType=VARCHAR}
</if>
<if
test=
"typeFilter != null"
>
and type in
<foreach
collection=
"typeFilter"
item=
"item"
open=
"("
separator=
","
close=
")"
>
...
...
backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTaskMapper.java
浏览文件 @
70c51f98
package
io
.
dataease
.
base
.
mapper
.
ext
;
import
io.dataease.base.domain.DatasetTableTaskLog
;
import
io.dataease.base.mapper.ext.query.GridExample
;
import
io.dataease.dto.dataset.DataSetTaskDTO
;
import
io.dataease.dto.dataset.DataSetTaskLogDTO
;
import
org.apache.ibatis.annotations.Mapper
;
...
...
@@ -12,5 +14,7 @@ import java.util.List;
*/
@Mapper
public
interface
ExtDataSetTaskMapper
{
List
<
DataSetTaskLogDTO
>
list
(
DatasetTableTaskLog
request
);
List
<
DataSetTaskLogDTO
>
list
(
GridExample
example
);
List
<
DataSetTaskDTO
>
taskList
(
GridExample
example
);
}
backend/src/main/java/io/dataease/base/mapper/ext/ExtDataSetTaskMapper.xml
浏览文件 @
70c51f98
...
...
@@ -7,13 +7,42 @@
<result
column=
"name"
jdbcType=
"VARCHAR"
property=
"name"
/>
</resultMap>
<resultMap
id=
"TaskResult"
type=
"io.dataease.dto.dataset.DataSetTaskDTO"
extends=
"io.dataease.base.mapper.DatasetTableTaskMapper.BaseResultMap"
>
<result
column=
"table_name"
jdbcType=
"VARCHAR"
property=
"datasetName"
/>
<result
column=
"NEXT_FIRE_TIME"
jdbcType=
"BIGINT"
property=
"nextExecTime"
/>
</resultMap>
<select
id=
"list"
resultMap=
"BaseResult"
parameterType=
"io.dataease.base.domain.DatasetTableTaskLog"
>
SELECT dataset_table_task_log.*,
dataset_table_task.name
SELECT dataset_table_task_log.*, dataset_table_task.name
FROM dataset_table_task_log
LEFT JOIN dataset_table_task ON dataset_table_task_log.task_id = dataset_table_task.id
WHERE dataset_table_task_log.table_id = #{tableId,jdbcType=VARCHAR}
ORDER BY dataset_table_task_log.create_time desc
<if
test=
"_parameter != null"
>
<include
refid=
"io.dataease.base.mapper.ext.query.GridSql.gridCondition"
/>
</if>
<if
test=
"orderByClause != null"
>
order by ${orderByClause}
</if>
<if
test=
"orderByClause == null"
>
ORDER BY dataset_table_task_log.create_time desc
</if>
</select>
<select
id=
"taskList"
resultMap=
"TaskResult"
parameterType=
"io.dataease.base.mapper.ext.query.GridExample"
>
SELECT dataset_table.name as table_name, dataset_table_task.* , qrtz_triggers.*
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
<if
test=
"_parameter != null"
>
<include
refid=
"io.dataease.base.mapper.ext.query.GridSql.gridCondition"
/>
</if>
<if
test=
"orderByClause != null"
>
order by ${orderByClause}
</if>
<if
test=
"orderByClause == null"
>
order by dataset_table_task.create_time desc
</if>
</select>
</mapper>
backend/src/main/java/io/dataease/commons/constants/ScheduleType.java
浏览文件 @
70c51f98
package
io
.
dataease
.
commons
.
constants
;
public
enum
ScheduleType
{
CRON
,
SIMPLE
,
SIMPLE_COMPLETE
CRON
,
SIMPLE
}
backend/src/main/java/io/dataease/commons/constants/TaskStatus.java
0 → 100644
浏览文件 @
70c51f98
package
io
.
dataease
.
commons
.
constants
;
public
enum
TaskStatus
{
Underway
,
Stopped
}
backend/src/main/java/io/dataease/commons/constants/TriggerType.java
0 → 100644
浏览文件 @
70c51f98
package
io
.
dataease
.
commons
.
constants
;
public
enum
TriggerType
{
Cron
,
Custom
}
backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskController.java
浏览文件 @
70c51f98
package
io
.
dataease
.
controller
.
dataset
;
import
com.github.pagehelper.Page
;
import
com.github.pagehelper.PageHelper
;
import
io.dataease.base.domain.DatasetTableTask
;
import
io.dataease.commons.utils.PageUtils
;
import
io.dataease.commons.utils.Pager
;
import
io.dataease.controller.request.dataset.DataSetTaskRequest
;
import
io.dataease.controller.sys.base.BaseGridRequest
;
import
io.dataease.controller.sys.response.SysUserGridResponse
;
import
io.dataease.dto.dataset.DataSetTaskDTO
;
import
io.dataease.service.dataset.DataSetTableTaskLogService
;
import
io.dataease.service.dataset.DataSetTableTaskService
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
...
...
@@ -17,6 +26,8 @@ import java.util.List;
public
class
DataSetTableTaskController
{
@Resource
private
DataSetTableTaskService
dataSetTableTaskService
;
@Resource
private
DataSetTableTaskLogService
dataSetTableTaskLogService
;
@PostMapping
(
"save"
)
public
DatasetTableTask
save
(
@RequestBody
DataSetTaskRequest
dataSetTaskRequest
)
throws
Exception
{
...
...
@@ -32,4 +43,28 @@ public class DataSetTableTaskController {
public
List
<
DatasetTableTask
>
list
(
@RequestBody
DatasetTableTask
datasetTableTask
)
{
return
dataSetTableTaskService
.
list
(
datasetTableTask
);
}
@ApiOperation
(
"查看数据集任务"
)
@PostMapping
(
"/pageList/{goPage}/{pageSize}"
)
public
Pager
<
List
<
DataSetTaskDTO
>>
taskList
(
@PathVariable
int
goPage
,
@PathVariable
int
pageSize
,
@RequestBody
BaseGridRequest
request
)
{
Page
<
Object
>
page
=
PageHelper
.
startPage
(
goPage
,
pageSize
,
true
);
return
PageUtils
.
setPageInfo
(
page
,
dataSetTableTaskService
.
taskList
(
request
));
}
@PostMapping
(
"/lastExecStatus"
)
public
DataSetTaskDTO
lastExecStatus
(
@RequestBody
DataSetTaskDTO
datasetTableTask
)
{
return
dataSetTableTaskLogService
.
lastExecStatus
(
datasetTableTask
);
}
@PostMapping
(
"/updateStatus"
)
public
void
updateStatus
(
@RequestBody
DatasetTableTask
datasetTableTask
)
{
dataSetTableTaskService
.
updateDatasetTableTaskStatus
(
datasetTableTask
);
}
@PostMapping
(
"/execTask"
)
public
void
execTask
(
@RequestBody
DatasetTableTask
datasetTableTask
)
throws
Exception
{
dataSetTableTaskService
.
execTask
(
datasetTableTask
);
}
}
backend/src/main/java/io/dataease/controller/dataset/DataSetTableTaskLogController.java
浏览文件 @
70c51f98
...
...
@@ -5,6 +5,7 @@ import com.github.pagehelper.PageHelper;
import
io.dataease.base.domain.DatasetTableTaskLog
;
import
io.dataease.commons.utils.PageUtils
;
import
io.dataease.commons.utils.Pager
;
import
io.dataease.controller.sys.base.BaseGridRequest
;
import
io.dataease.dto.dataset.DataSetTaskLogDTO
;
import
io.dataease.service.dataset.DataSetTableTaskLogService
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -33,7 +34,7 @@ public class DataSetTableTaskLogController {
}
@PostMapping
(
"list/{goPage}/{pageSize}"
)
public
Pager
<
List
<
DataSetTaskLogDTO
>>
list
(
@RequestBody
DatasetTableTaskLog
request
,
@PathVariable
int
goPage
,
@PathVariable
int
pageSize
)
{
public
Pager
<
List
<
DataSetTaskLogDTO
>>
list
(
@RequestBody
BaseGridRequest
request
,
@PathVariable
int
goPage
,
@PathVariable
int
pageSize
)
{
Page
<
Object
>
page
=
PageHelper
.
startPage
(
goPage
,
pageSize
,
true
);
return
PageUtils
.
setPageInfo
(
page
,
dataSetTableTaskLogService
.
list
(
request
));
}
...
...
backend/src/main/java/io/dataease/dto/dataset/DataSetTaskDTO.java
0 → 100644
浏览文件 @
70c51f98
package
io
.
dataease
.
dto
.
dataset
;
import
io.dataease.base.domain.DatasetTableTask
;
import
io.dataease.base.domain.DatasetTableTaskLog
;
import
lombok.Getter
;
import
lombok.Setter
;
/**
* @Author gin
* @Date 2021/3/9 3:19 下午
*/
@Getter
@Setter
public
class
DataSetTaskDTO
extends
DatasetTableTask
{
private
String
datasetName
;
private
Long
nextExecTime
;
private
String
taskStatus
;
}
backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java
浏览文件 @
70c51f98
...
...
@@ -430,4 +430,10 @@ public class ScheduleManager {
}
return
trigger
.
getFireTimeAfter
(
start
);
}
public
void
fireNow
(
String
jobName
,
String
jobGroup
)
throws
SchedulerException
{
JobKey
jobKey
=
new
JobKey
(
jobName
,
jobGroup
);
scheduler
.
triggerJob
(
jobKey
);
}
}
backend/src/main/java/io/dataease/listener/AppStartListener.java
浏览文件 @
70c51f98
package
io
.
dataease
.
listener
;
import
io.dataease.base.domain.DatasetTableTask
;
import
io.dataease.commons.constants.NoticeConstants
;
import
io.dataease.commons.constants.ScheduleType
;
import
io.dataease.commons.constants.TaskStatus
;
import
io.dataease.service.ScheduleService
;
import
io.dataease.service.dataset.DataSetTableTaskService
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -40,8 +42,6 @@ public class AppStartListener implements ApplicationListener<ApplicationReadyEve
}
else
{
scheduleService
.
addSchedule
(
task
);
}
}
else
{
scheduleService
.
addSchedule
(
task
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
backend/src/main/java/io/dataease/service/ScheduleService.java
浏览文件 @
70c51f98
...
...
@@ -35,9 +35,6 @@ public class ScheduleService {
endTime
=
null
;
}
else
{
endTime
=
new
Date
(
datasetTableTask
.
getEndTime
());
// if (endTime.before(new Date())) {
// return;
// }
if
(
endTime
.
before
(
new
Date
()))
{
deleteSchedule
(
datasetTableTask
);
return
;
...
...
@@ -58,4 +55,8 @@ public class ScheduleService {
public
void
deleteSchedule
(
DatasetTableTask
datasetTableTask
)
{
scheduleManager
.
removeJob
(
new
JobKey
(
datasetTableTask
.
getId
(),
datasetTableTask
.
getTableId
()),
new
TriggerKey
(
datasetTableTask
.
getId
(),
datasetTableTask
.
getTableId
()));
}
public
void
fireNow
(
DatasetTableTask
datasetTableTask
)
throws
Exception
{
scheduleManager
.
fireNow
(
datasetTableTask
.
getId
(),
datasetTableTask
.
getTableId
());
}
}
backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java
浏览文件 @
70c51f98
...
...
@@ -1178,12 +1178,17 @@ public class DataSetTableService {
DatasetTableTaskLogExample
datasetTableTaskLogExample
=
new
DatasetTableTaskLogExample
();
datasetTableTaskLogExample
.
createCriteria
().
andStatusEqualTo
(
JobStatus
.
Underway
.
name
()).
andTableIdIn
(
jobStoppeddDatasetTables
.
stream
().
map
(
DatasetTable:
:
getId
).
collect
(
Collectors
.
toList
()));
List
<
String
>
taskIds
=
datasetTableTaskLogMapper
.
selectByExample
(
datasetTableTaskLogExample
).
stream
().
map
(
DatasetTableTaskLog:
:
getTaskId
).
collect
(
Collectors
.
toList
());
datasetTableTaskLogMapper
.
updateByExampleSelective
(
datasetTableTaskLog
,
datasetTableTaskLogExample
);
DatasetTableTask
datasetTableTask
=
new
DatasetTableTask
();
datasetTableTask
.
setLastExecStatus
(
JobStatus
.
Error
.
name
());
dataSetTableTaskService
.
update
(
taskIds
,
datasetTableTask
);
for
(
DatasetTable
jobStoppeddDatasetTable
:
jobStoppeddDatasetTables
)
{
extractDataService
.
deleteFile
(
"all_scope"
,
jobStoppeddDatasetTable
.
getId
());
extractDataService
.
deleteFile
(
"incremental_add"
,
jobStoppeddDatasetTable
.
getId
());
extractDataService
.
deleteFile
(
"incremental_delete"
,
jobStoppeddDatasetTable
.
getId
());
}
}
...
...
backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskLogService.java
浏览文件 @
70c51f98
package
io
.
dataease
.
service
.
dataset
;
import
io.dataease.base.domain.DatasetTableTask
;
import
io.dataease.base.domain.DatasetTableTaskLog
;
import
io.dataease.base.domain.DatasetTableTaskLogExample
;
import
io.dataease.base.mapper.DatasetTableTaskLogMapper
;
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.dto.dataset.DataSetTaskDTO
;
import
io.dataease.dto.dataset.DataSetTaskLogDTO
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
...
...
@@ -38,8 +44,9 @@ public class DataSetTableTaskLogService {
datasetTableTaskLogMapper
.
deleteByPrimaryKey
(
id
);
}
public
List
<
DataSetTaskLogDTO
>
list
(
DatasetTableTaskLog
request
)
{
return
extDataSetTaskMapper
.
list
(
request
);
public
List
<
DataSetTaskLogDTO
>
list
(
BaseGridRequest
request
)
{
GridExample
gridExample
=
request
.
convertExample
();
return
extDataSetTaskMapper
.
list
(
gridExample
);
}
public
void
deleteByTaskId
(
String
taskId
){
...
...
@@ -57,6 +64,30 @@ public class DataSetTableTaskLogService {
}
public
List
<
DatasetTableTaskLog
>
select
(
DatasetTableTaskLog
datasetTableTaskLog
){
DatasetTableTaskLogExample
example
=
getDatasetTableTaskLogExample
(
datasetTableTaskLog
);
example
.
setOrderByClause
(
"create_time desc"
);
return
datasetTableTaskLogMapper
.
selectByExampleWithBLOBs
(
example
);
}
public
DataSetTaskDTO
lastExecStatus
(
DataSetTaskDTO
dataSetTaskDTO
){
DatasetTableTaskLogExample
example
=
new
DatasetTableTaskLogExample
();
DatasetTableTaskLogExample
.
Criteria
criteria
=
example
.
createCriteria
();
if
(
StringUtils
.
isNotEmpty
(
dataSetTaskDTO
.
getTableId
())){
criteria
.
andTableIdEqualTo
(
dataSetTaskDTO
.
getTableId
());
}
if
(
StringUtils
.
isNotEmpty
(
dataSetTaskDTO
.
getId
())){
criteria
.
andTaskIdEqualTo
(
dataSetTaskDTO
.
getId
());
}
example
.
setOrderByClause
(
"create_time desc limit 1"
);
List
<
DatasetTableTaskLog
>
datasetTableTaskLogs
=
datasetTableTaskLogMapper
.
selectByExampleWithBLOBs
(
example
);
if
(
CollectionUtils
.
isNotEmpty
(
datasetTableTaskLogs
)){
dataSetTaskDTO
.
setLastExecStatus
(
datasetTableTaskLogs
.
get
(
0
).
getStatus
());
dataSetTaskDTO
.
setLastExecTime
(
datasetTableTaskLogs
.
get
(
0
).
getCreateTime
());
}
return
dataSetTaskDTO
;
}
private
DatasetTableTaskLogExample
getDatasetTableTaskLogExample
(
DatasetTableTaskLog
datasetTableTaskLog
)
{
DatasetTableTaskLogExample
example
=
new
DatasetTableTaskLogExample
();
DatasetTableTaskLogExample
.
Criteria
criteria
=
example
.
createCriteria
();
if
(
StringUtils
.
isNotEmpty
(
datasetTableTaskLog
.
getStatus
())){
...
...
@@ -68,7 +99,8 @@ public class DataSetTableTaskLogService {
if
(
StringUtils
.
isNotEmpty
(
datasetTableTaskLog
.
getTaskId
())){
criteria
.
andTaskIdEqualTo
(
datasetTableTaskLog
.
getTaskId
());
}
example
.
setOrderByClause
(
"create_time desc"
);
return
datasetTableTaskLogMapper
.
selectByExampleWithBLOBs
(
example
);
return
example
;
}
}
backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java
浏览文件 @
70c51f98
package
io
.
dataease
.
service
.
dataset
;
import
com.google.gson.Gson
;
import
io.dataease.base.domain.DatasetTable
;
import
io.dataease.base.domain.DatasetTableTask
;
import
io.dataease.base.domain.DatasetTableTaskExample
;
import
io.dataease.base.domain.DatasetTableTaskLog
;
import
io.dataease.base.mapper.DatasetTableTaskMapper
;
import
io.dataease.base.mapper.ext.ExtDataSetTaskMapper
;
import
io.dataease.base.mapper.ext.query.GridExample
;
import
io.dataease.commons.constants.JobStatus
;
import
io.dataease.commons.constants.ScheduleType
;
import
io.dataease.commons.constants.TaskStatus
;
import
io.dataease.commons.constants.TriggerType
;
import
io.dataease.controller.request.dataset.DataSetTaskRequest
;
import
io.dataease.controller.sys.base.BaseGridRequest
;
import
io.dataease.controller.sys.response.SysUserGridResponse
;
import
io.dataease.controller.sys.response.SysUserRole
;
import
io.dataease.dto.dataset.DataSetTaskDTO
;
import
io.dataease.exception.DataEaseException
;
import
io.dataease.i18n.Translator
;
import
io.dataease.service.ScheduleService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.quartz.CronExpression
;
...
...
@@ -21,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
/**
* @Author gin
...
...
@@ -40,12 +51,15 @@ public class DataSetTableTaskService {
private
DataSetTableService
dataSetTableService
;
@Resource
private
ExtractDataService
extractDataService
;
@Resource
private
ExtDataSetTaskMapper
extDataSetTaskMapper
;
public
DatasetTableTask
save
(
DataSetTaskRequest
dataSetTaskRequest
)
throws
Exception
{
checkName
(
dataSetTaskRequest
);
DatasetTableTask
datasetTableTask
=
dataSetTaskRequest
.
getDatasetTableTask
();
dataSetTableService
.
saveIncrementalConfig
(
dataSetTaskRequest
.
getDatasetTableIncrementalConfig
());
if
(!
datasetTableTask
.
getType
().
equalsIgnoreCase
(
"add_scope"
)){
dataSetTableService
.
saveIncrementalConfig
(
dataSetTaskRequest
.
getDatasetTableIncrementalConfig
());
}
// check
if
(
StringUtils
.
equalsIgnoreCase
(
datasetTableTask
.
getRate
(),
"CRON"
)){
if
(
StringUtils
.
isNotEmpty
(
datasetTableTask
.
getCron
()))
{
...
...
@@ -67,34 +81,48 @@ public class DataSetTableTaskService {
if
(
StringUtils
.
isEmpty
(
datasetTableTask
.
getId
()))
{
datasetTableTask
.
setId
(
UUID
.
randomUUID
().
toString
());
datasetTableTask
.
setCreateTime
(
System
.
currentTimeMillis
());
// SIMPLE 类型,提前占位
if
(
datasetTableTask
.
getRate
().
equalsIgnoreCase
(
ScheduleType
.
SIMPLE
.
toString
()))
{
if
(
datasetTableTask
.
getType
().
equalsIgnoreCase
(
"add_scope"
))
{
DatasetTable
datasetTable
=
dataSetTableService
.
get
(
datasetTableTask
.
getTableId
());
if
(
datasetTable
.
getLastUpdateTime
()
==
0
||
datasetTable
.
getLastUpdateTime
()
==
null
)
{
DataEaseException
.
throwException
(
Translator
.
get
(
"i18n_not_exec_add_sync"
));
}
}
if
(
extractDataService
.
updateSyncStatusIsNone
(
dataSetTableService
.
get
(
datasetTableTask
.
getTableId
())))
{
DataEaseException
.
throwException
(
Translator
.
get
(
"i18n_sync_job_exists"
));
}
else
{
//write log
DatasetTableTaskLog
datasetTableTaskLog
=
new
DatasetTableTaskLog
();
datasetTableTaskLog
.
setTableId
(
datasetTableTask
.
getTableId
());
datasetTableTaskLog
.
setTaskId
(
datasetTableTask
.
getId
());
datasetTableTaskLog
.
setStatus
(
JobStatus
.
Underway
.
name
());
datasetTableTaskLog
.
setStartTime
(
System
.
currentTimeMillis
());
dataSetTableTaskLogService
.
save
(
datasetTableTaskLog
);
}
}
datasetTableTask
.
setStatus
(
TaskStatus
.
Underway
.
name
());
datasetTableTaskMapper
.
insert
(
datasetTableTask
);
}
else
{
datasetTableTaskMapper
.
updateByPrimaryKeySelective
(
datasetTableTask
);
}
scheduleService
.
addSchedule
(
datasetTableTask
);
if
(
datasetTableTask
.
getRate
().
equalsIgnoreCase
(
ScheduleType
.
SIMPLE
.
toString
())
&&
datasetTableTask
.
getStatus
().
equalsIgnoreCase
(
TaskStatus
.
Underway
.
name
()))
{
// SIMPLE 类型,提前占位
execNow
(
datasetTableTask
);
datasetTableTask
.
setLastExecStatus
(
JobStatus
.
Underway
.
name
());
datasetTableTask
.
setLastExecTime
(
System
.
currentTimeMillis
());
update
(
datasetTableTask
);
}
if
(!
datasetTableTask
.
getRate
().
equalsIgnoreCase
(
ScheduleType
.
SIMPLE
.
name
())){
scheduleService
.
addSchedule
(
datasetTableTask
);
}
else
{
if
(
datasetTableTask
.
getStatus
().
equalsIgnoreCase
(
JobStatus
.
Underway
.
name
())){
scheduleService
.
addSchedule
(
datasetTableTask
);
}
}
return
datasetTableTask
;
}
private
void
execNow
(
DatasetTableTask
datasetTableTask
)
{
if
(
datasetTableTask
.
getType
().
equalsIgnoreCase
(
"add_scope"
))
{
DatasetTable
datasetTable
=
dataSetTableService
.
get
(
datasetTableTask
.
getTableId
());
if
(
datasetTable
.
getLastUpdateTime
()
==
null
||
datasetTable
.
getLastUpdateTime
()
==
0
)
{
DataEaseException
.
throwException
(
Translator
.
get
(
"i18n_not_exec_add_sync"
));
}
}
if
(
extractDataService
.
existSyncTask
(
dataSetTableService
.
get
(
datasetTableTask
.
getTableId
()),
null
))
{
DataEaseException
.
throwException
(
Translator
.
get
(
"i18n_sync_job_exists"
));
}
//write log
DatasetTableTaskLog
datasetTableTaskLog
=
new
DatasetTableTaskLog
();
datasetTableTaskLog
.
setTableId
(
datasetTableTask
.
getTableId
());
datasetTableTaskLog
.
setTaskId
(
datasetTableTask
.
getId
());
datasetTableTaskLog
.
setStatus
(
JobStatus
.
Underway
.
name
());
datasetTableTaskLog
.
setStartTime
(
System
.
currentTimeMillis
());
datasetTableTaskLog
.
setTriggerType
(
TriggerType
.
Custom
.
name
());
dataSetTableTaskLogService
.
save
(
datasetTableTaskLog
);
}
public
void
delete
(
String
id
)
{
DatasetTableTask
datasetTableTask
=
datasetTableTaskMapper
.
selectByPrimaryKey
(
id
);
datasetTableTaskMapper
.
deleteByPrimaryKey
(
id
);
...
...
@@ -121,19 +149,34 @@ public class DataSetTableTaskService {
}
public
void
update
(
DatasetTableTask
datasetTableTask
)
{
datasetTableTaskMapper
.
updateByPrimaryKey
(
datasetTableTask
);
datasetTableTaskMapper
.
updateByPrimaryKeySelective
(
datasetTableTask
);
}
public
void
update
(
List
<
String
>
taskIds
,
DatasetTableTask
datasetTableTask
)
{
if
(
CollectionUtils
.
isEmpty
(
taskIds
)){
return
;
}
DatasetTableTaskExample
example
=
new
DatasetTableTaskExample
();
example
.
createCriteria
().
andIdIn
(
taskIds
);
datasetTableTaskMapper
.
updateByExampleSelective
(
datasetTableTask
,
example
);
}
public
List
<
DatasetTableTask
>
list
(
DatasetTableTask
datasetTableTask
)
{
DatasetTableTaskExample
datasetTableTaskExample
=
new
DatasetTableTaskExample
();
DatasetTableTaskExample
.
Criteria
criteria
=
datasetTableTaskExample
.
createCriteria
();
if
(
StringUtils
.
isNotEmpty
(
datasetTableTask
.
getTableId
()))
{
if
(
datasetTableTask
!=
null
&&
StringUtils
.
isNotEmpty
(
datasetTableTask
.
getTableId
()))
{
criteria
.
andTableIdEqualTo
(
datasetTableTask
.
getTableId
());
}
datasetTableTaskExample
.
setOrderByClause
(
"create_time desc,name asc"
);
return
datasetTableTaskMapper
.
selectByExample
(
datasetTableTaskExample
);
}
public
List
<
DataSetTaskDTO
>
taskList
(
BaseGridRequest
request
)
{
GridExample
gridExample
=
request
.
convertExample
();
List
<
DataSetTaskDTO
>
dataSetTaskDTOS
=
extDataSetTaskMapper
.
taskList
(
gridExample
);
return
dataSetTaskDTOS
;
}
private
void
checkName
(
DataSetTaskRequest
dataSetTaskRequest
)
{
DatasetTableTaskExample
datasetTableTaskExample
=
new
DatasetTableTaskExample
();
DatasetTableTaskExample
.
Criteria
criteria
=
datasetTableTaskExample
.
createCriteria
();
...
...
@@ -151,4 +194,29 @@ public class DataSetTableTaskService {
throw
new
RuntimeException
(
Translator
.
get
(
"i18n_task_name_repeat"
));
}
}
public
void
updateDatasetTableTaskStatus
(
DatasetTableTask
datasetTableTask
){
DatasetTableTaskExample
datasetTableTaskExample
=
new
DatasetTableTaskExample
();
DatasetTableTaskExample
.
Criteria
criteria
=
datasetTableTaskExample
.
createCriteria
();
criteria
.
andIdEqualTo
(
datasetTableTask
.
getId
());
DatasetTableTask
record
=
new
DatasetTableTask
();
record
.
setStatus
(
datasetTableTask
.
getStatus
());
datasetTableTaskMapper
.
updateByExampleSelective
(
record
,
datasetTableTaskExample
);
}
public
void
execTask
(
DatasetTableTask
datasetTableTask
)
throws
Exception
{
execNow
(
datasetTableTask
);
// datasetTableTask.setStatus(TaskStatus.Underway.name());
datasetTableTask
.
setLastExecStatus
(
JobStatus
.
Underway
.
name
());
datasetTableTask
.
setLastExecTime
(
System
.
currentTimeMillis
());
update
(
datasetTableTask
);
if
(
datasetTableTask
.
getRate
().
equalsIgnoreCase
(
ScheduleType
.
CRON
.
toString
())){
scheduleService
.
fireNow
(
datasetTableTask
);
}
if
(
datasetTableTask
.
getRate
().
equalsIgnoreCase
(
ScheduleType
.
SIMPLE
.
toString
())){
scheduleService
.
addSchedule
(
datasetTableTask
);
}
}
}
backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java
浏览文件 @
70c51f98
...
...
@@ -6,10 +6,7 @@ import io.dataease.base.mapper.DatasetTableMapper;
import
io.dataease.base.mapper.DatasetTableTaskMapper
;
import
io.dataease.base.mapper.DatasourceMapper
;
import
io.dataease.base.mapper.ext.ExtChartViewMapper
;
import
io.dataease.commons.constants.JdbcConstants
;
import
io.dataease.commons.constants.JobStatus
;
import
io.dataease.commons.constants.ScheduleType
;
import
io.dataease.commons.constants.UpdateType
;
import
io.dataease.commons.constants.*
;
import
io.dataease.commons.model.AuthURD
;
import
io.dataease.commons.utils.*
;
import
io.dataease.datasource.constants.DatasourceTypes
;
...
...
@@ -134,28 +131,48 @@ public class ExtractDataService {
"fi\n"
+
"rm -rf %s\n"
;
public
synchronized
boolean
updateSyncStatusIsNone
(
DatasetTable
datasetTable
){
public
synchronized
boolean
existSyncTask
(
DatasetTable
datasetTable
,
DatasetTableTask
datasetTableTask
){
datasetTable
.
setSyncStatus
(
JobStatus
.
Underway
.
name
());
DatasetTableExample
example
=
new
DatasetTableExample
();
example
.
createCriteria
().
andIdEqualTo
(
datasetTable
.
getId
());
datasetTableMapper
.
selectByExample
(
example
);
example
.
clear
();
example
.
createCriteria
().
andIdEqualTo
(
datasetTable
.
getId
()).
andSyncStatusNotEqualTo
(
JobStatus
.
Underway
.
name
());
example
.
or
(
example
.
createCriteria
().
andIdEqualTo
(
datasetTable
.
getId
()).
andSyncStatusIsNull
());
return
datasetTableMapper
.
updateByExampleSelective
(
datasetTable
,
example
)
==
0
;
Boolean
existSyncTask
=
datasetTableMapper
.
updateByExampleSelective
(
datasetTable
,
example
)
==
0
;
if
(
existSyncTask
){
if
(
datasetTableTask
!=
null
){
DatasetTableTaskLog
datasetTableTaskLog
=
new
DatasetTableTaskLog
();
datasetTableTaskLog
.
setTaskId
(
datasetTableTask
.
getId
());
datasetTableTaskLog
.
setTableId
(
datasetTable
.
getId
());
datasetTableTaskLog
.
setStatus
(
JobStatus
.
Underway
.
name
());
List
<
DatasetTableTaskLog
>
datasetTableTaskLogs
=
dataSetTableTaskLogService
.
select
(
datasetTableTaskLog
);
if
(
CollectionUtils
.
isNotEmpty
(
datasetTableTaskLogs
)
&&
datasetTableTaskLogs
.
get
(
0
).
getTriggerType
().
equalsIgnoreCase
(
TriggerType
.
Custom
.
name
())){
return
false
;
}
}
return
true
;
}
else
{
return
false
;
}
}
public
void
extractData
(
String
datasetTableId
,
String
taskId
,
String
type
,
JobExecutionContext
context
)
{
DatasetTable
datasetTable
=
getDatasetTable
(
datasetTableId
);
if
(
datasetTable
==
null
){
LogUtil
.
error
(
"Can not find DatasetTable: "
+
datasetTableId
);
return
;
}
DatasetTableTask
datasetTableTask
=
datasetTableTaskMapper
.
selectByPrimaryKey
(
taskId
);
boolean
isCronJob
=
(
datasetTableTask
!=
null
&&
datasetTableTask
.
getRate
().
equalsIgnoreCase
(
ScheduleType
.
CRON
.
toString
()));
if
(
updateSyncStatusIsNone
(
datasetTable
)
&&
isCronJob
){
LogUtil
.
info
(
"Skip synchronization task for table : "
+
datasetTableId
);
if
(
datasetTableTask
.
getStatus
().
equalsIgnoreCase
(
TaskStatus
.
Stopped
.
name
())
&&
!
datasetTableTask
.
getRate
().
equalsIgnoreCase
(
ScheduleType
.
SIMPLE
.
name
())){
LogUtil
.
info
(
"Skip synchronization task, task ID : "
+
datasetTableTask
.
getId
());
return
;
}
if
(
existSyncTask
(
datasetTable
,
datasetTableTask
)){
LogUtil
.
info
(
"Skip synchronization task for dataset, dataset ID : "
+
datasetTableId
);
return
;
}
datasetTableTask
.
setLastExecTime
(
System
.
currentTimeMillis
());
datasetTableTask
.
setLastExecStatus
(
JobStatus
.
Underway
.
name
());
dataSetTableTaskService
.
update
(
datasetTableTask
);
DatasetTableTaskLog
datasetTableTaskLog
=
new
DatasetTableTaskLog
();
UpdateType
updateType
=
UpdateType
.
valueOf
(
type
);
if
(
context
!=
null
){
...
...
@@ -207,20 +224,29 @@ public class ExtractDataService {
sendWebMsg
(
datasetTable
,
taskId
,
true
);
//
deleteFile("all_scope", datasetTableId);
deleteFile
(
"all_scope"
,
datasetTableId
);
updateTableStatus
(
datasetTableId
,
datasetTable
,
JobStatus
.
Completed
,
execTime
);
// if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString())) {
// datasetTableTask.setStatus(TaskStatus.Stopped.name());
// }
datasetTableTask
.
setLastExecStatus
(
JobStatus
.
Completed
.
name
());
dataSetTableTaskService
.
update
(
datasetTableTask
);
}
catch
(
Exception
e
){
saveErrorLog
(
datasetTableId
,
taskId
,
e
);
datasetTableTask
.
setLastExecStatus
(
JobStatus
.
Error
.
name
());
// if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString())) {
// datasetTableTask.setStatus(TaskStatus.Stopped.name());
// }
dataSetTableTaskService
.
update
(
datasetTableTask
);
sendWebMsg
(
datasetTable
,
taskId
,
false
);
updateTableStatus
(
datasetTableId
,
datasetTable
,
JobStatus
.
Error
,
null
);
dropDorisTable
(
DorisTableUtils
.
dorisTmpName
(
DorisTableUtils
.
dorisName
(
datasetTableId
)));
//
deleteFile("all_scope", datasetTableId);
deleteFile
(
"all_scope"
,
datasetTableId
);
}
finally
{
if
(
datasetTableTask
!=
null
&&
datasetTableTask
.
getRate
().
equalsIgnoreCase
(
ScheduleType
.
SIMPLE
.
toString
()))
{
datasetTableTask
.
setRate
(
ScheduleType
.
SIMPLE_COMPLETE
.
toString
());
dataSetTableTaskService
.
update
(
datasetTableTask
);
}
}
break
;
...
...
@@ -274,22 +300,28 @@ public class ExtractDataService {
sendWebMsg
(
datasetTable
,
taskId
,
true
);
//
deleteFile("incremental_add", datasetTableId);
//
deleteFile("incremental_delete", datasetTableId);
deleteFile
(
"incremental_add"
,
datasetTableId
);
deleteFile
(
"incremental_delete"
,
datasetTableId
);
updateTableStatus
(
datasetTableId
,
datasetTable
,
JobStatus
.
Completed
,
execTime
);
datasetTableTask
.
setLastExecStatus
(
JobStatus
.
Completed
.
name
());
// if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString())) {
// datasetTableTask.setStatus(TaskStatus.Stopped.name());
// }
dataSetTableTaskService
.
update
(
datasetTableTask
);
}
}
catch
(
Exception
e
){
saveErrorLog
(
datasetTableId
,
taskId
,
e
);
sendWebMsg
(
datasetTable
,
taskId
,
false
);
updateTableStatus
(
datasetTableId
,
datasetTable
,
JobStatus
.
Error
,
null
);
// deleteFile("incremental_add", datasetTableId);
// deleteFile("incremental_delete", datasetTableId);
datasetTableTask
.
setLastExecStatus
(
JobStatus
.
Error
.
name
());
// if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString())) {
// datasetTableTask.setStatus(TaskStatus.Stopped.name());
// }
dataSetTableTaskService
.
update
(
datasetTableTask
);
deleteFile
(
"incremental_add"
,
datasetTableId
);
deleteFile
(
"incremental_delete"
,
datasetTableId
);
}
finally
{
if
(
datasetTableTask
!=
null
&&
datasetTableTask
.
getRate
().
equalsIgnoreCase
(
ScheduleType
.
SIMPLE
.
toString
()))
{
datasetTableTask
.
setRate
(
ScheduleType
.
SIMPLE_COMPLETE
.
toString
());
dataSetTableTaskService
.
update
(
datasetTableTask
);
}
}
break
;
}
...
...
@@ -435,6 +467,7 @@ public class ExtractDataService {
datasetTableTaskLog
.
setTableId
(
datasetTableId
);
datasetTableTaskLog
.
setTaskId
(
taskId
);
datasetTableTaskLog
.
setStatus
(
JobStatus
.
Underway
.
name
());
datasetTableTaskLog
.
setTriggerType
(
TriggerType
.
Cron
.
name
());
List
<
DatasetTableTaskLog
>
datasetTableTaskLogs
=
dataSetTableTaskLogService
.
select
(
datasetTableTaskLog
);
if
(
CollectionUtils
.
isEmpty
(
datasetTableTaskLogs
)){
datasetTableTaskLog
.
setStartTime
(
System
.
currentTimeMillis
());
...
...
backend/src/main/resources/db/migration/V12__system_task.sql
0 → 100644
浏览文件 @
70c51f98
INSERT
INTO
`sys_menu`
VALUES
(
57
,
1
,
3
,
1
,
'任务管理'
,
'sys-task'
,
'system/task/index'
,
2000
,
'task'
,
'system-task'
,
b
'0'
,
b
'0'
,
b
'0'
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
INSERT
INTO
`sys_menu`
VALUES
(
58
,
57
,
0
,
1
,
'数据集任务'
,
'sys-task-dataset'
,
'system/task/dataset'
,
1
,
'task'
,
'dataset'
,
b
'0'
,
b
'0'
,
b
'0'
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
);
ALTER
TABLE
`dataset_table_task`
ADD
COLUMN
`last_exec_time`
BIGINT
(
13
)
NULL
DEFAULT
NULL
COMMENT
'上次执行时间'
AFTER
`create_time`
,
ADD
COLUMN
`status`
VARCHAR
(
50
)
NULL
DEFAULT
NULL
COMMENT
'任务状态'
AFTER
`last_exec_time`
,
ADD
COLUMN
`last_exec_status`
VARCHAR
(
50
)
NULL
DEFAULT
NULL
COMMENT
'上次执行结果'
AFTER
`last_exec_time`
;
update
dataset_table_task
set
status
=
'Underway'
;
update
dataset_table_task
set
rate
=
'SIMPLE'
where
rate
=
'SIMPLE_COMPLETE'
;
ALTER
TABLE
`dataset_table_task_log`
ADD
COLUMN
`trigger_type`
VARCHAR
(
45
)
NULL
AFTER
`create_time`
;
update
dataset_table_task_log
set
trigger_type
=
'Cron'
;
frontend/src/api/dataset/dataset.js
浏览文件 @
70c51f98
...
...
@@ -128,4 +128,21 @@ export function isKettleRunning(showLoading = true) {
})
}
export
function
taskList
(
spage
,
size
,
data
)
{
return
request
({
url
:
'/dataset/group/isKettleRunning'
,
method
:
'post'
,
loading
:
showLoading
})
}
export
function
datasetTaskList
(
page
,
size
,
data
)
{
return
request
({
url
:
'/dataset/task/pageList/'
+
page
+
'/'
+
size
,
method
:
'post'
,
data
,
loading
:
true
})
}
export
default
{
loadTable
,
getScene
,
addGroup
,
delGroup
,
addTable
,
delTable
,
groupTree
}
frontend/src/icons/svg/task.svg
0 → 100644
浏览文件 @
70c51f98
<svg
t=
"1625478118793"
class=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"1202"
width=
"200"
height=
"200"
><path
d=
"M585.142857 804.571429h365.714286v-73.142858H585.142857v73.142858z m-219.428571-292.571429h585.142857v-73.142857H365.714286v73.142857z m365.714285-292.571429h219.428572V146.285714h-219.428572v73.142857z m292.571429 475.428572v146.285714c0 20.004571-16.566857 36.571429-36.571429 36.571429H36.571429c-20.004571 0-36.571429-16.566857-36.571429-36.571429v-146.285714c0-20.004571 16.566857-36.571429 36.571429-36.571429h950.857142c20.004571 0 36.571429 16.566857 36.571429 36.571429z m0-292.571429v146.285715c0 20.004571-16.566857 36.571429-36.571429 36.571428H36.571429c-20.004571 0-36.571429-16.566857-36.571429-36.571428v-146.285715c0-20.004571 16.566857-36.571429 36.571429-36.571428h950.857142c20.004571 0 36.571429 16.566857 36.571429 36.571428z m0-292.571428v146.285714c0 20.004571-16.566857 36.571429-36.571429 36.571429H36.571429c-20.004571 0-36.571429-16.566857-36.571429-36.571429V109.714286c0-20.004571 16.566857-36.571429 36.571429-36.571429h950.857142c20.004571 0 36.571429 16.566857 36.571429 36.571429z"
fill=
""
p-id=
"1203"
></path></svg>
frontend/src/lang/en.js
浏览文件 @
70c51f98
...
...
@@ -921,6 +921,23 @@ export default {
char_can_not_more_50
:
'Dataset name can not more 50'
,
task_add_title
:
'Add Task'
,
task_edit_title
:
'Edit Task'
,
task
:
{
list
:
'Task list'
,
record
:
'Execution record'
,
create
:
'New task'
,
name
:
'Task name'
,
last_exec_time
:
'Last execution time'
,
next_exec_time
:
'Next execution time'
,
last_exec_status
:
'Last execution result'
,
task_status
:
'Task status'
,
dataset
:
'Data set'
,
search_by_name
:
'Search by name'
,
underway
:
'Running'
,
stopped
:
'Stopped'
,
exec
:
'Execute'
,
confirm_exec
:
'Manual trigger execution?'
,
change_success
:
'State switch successful'
},
field_group_type
:
'Type'
,
location
:
'Location'
},
...
...
frontend/src/lang/tw.js
浏览文件 @
70c51f98
...
...
@@ -921,6 +921,23 @@ export default {
char_can_not_more_50
:
'數據集名稱不能超過50個字符'
,
task_add_title
:
'添加任務'
,
task_edit_title
:
'編輯任務'
,
task
:
{
list
:
'任務列表'
,
record
:
'執行紀錄'
,
create
:
'新建任務'
,
name
:
'任務名稱'
,
last_exec_time
:
'上次執行時間'
,
next_exec_time
:
'下次執行時間'
,
last_exec_status
:
'上次執行結果'
,
task_status
:
'任務狀態'
,
dataset
:
'數據集'
,
search_by_name
:
'根據名稱搜索'
,
underway
:
'運行中'
,
stopped
:
'停止'
,
exec
:
'執行'
,
confirm_exec
:
'手動觸發執行?'
,
change_success
:
'狀態切換成功'
},
field_group_type
:
'分類'
,
location
:
'地理位置'
},
...
...
frontend/src/lang/zh.js
浏览文件 @
70c51f98
...
...
@@ -921,6 +921,23 @@ export default {
char_can_not_more_50
:
'数据集名称不能超过50个字符'
,
task_add_title
:
'添加任务'
,
task_edit_title
:
'编辑任务'
,
task
:
{
list
:
'任务列表'
,
record
:
'执行记录'
,
create
:
'新建任务'
,
name
:
'任务名称'
,
last_exec_time
:
'上次执行时间'
,
next_exec_time
:
'下次执行时间'
,
last_exec_status
:
'上次执行结果'
,
task_status
:
'任务状态'
,
dataset
:
'数据集'
,
search_by_name
:
'根据名称搜索'
,
underway
:
'运行中'
,
stopped
:
'停止'
,
exec
:
'执行'
,
confirm_exec
:
'手动触发执行?'
,
change_success
:
'状态切换成功'
},
field_group_type
:
'分类'
,
location
:
'地理位置'
},
...
...
frontend/src/utils/webMsg.js
浏览文件 @
70c51f98
export
const
msgTypes
=
[
// { value: -1, label: '全部类型' },
// { value: 0, label: '仪表板分享' },
// { value: 1, label: '数据集同步' }
{
value
:
-
1
,
label
:
'webmsg.all_type'
},
{
value
:
0
,
label
:
'webmsg.panel_type'
},
{
value
:
1
,
label
:
'webmsg.dataset_type'
}
...
...
frontend/src/views/chart/group/Group.vue
浏览文件 @
70c51f98
...
...
@@ -7,20 +7,9 @@
{{
$t
(
'chart.datalist'
)
}}
</span>
<el-button
icon=
"el-icon-plus"
type=
"text"
size=
"mini"
style=
"float: right;"
@
click=
"add('group')"
>
<!--
{{
$t
(
'chart.add_group'
)
}}
-->
</el-button>
</el-row>
<el-divider
/>
<!--
<el-row>
-->
<!--
<el-button
type=
"primary"
size=
"mini"
@
click=
"add('group')"
>
-->
<!--
{{
$t
(
'chart.add_group'
)
}}
-->
<!--
</el-button>
-->
<!--
<el-button
type=
"primary"
size=
"mini"
@
click=
"add('scene')"
>
-->
<!--
{{
$t
(
'chart.add_scene'
)
}}
-->
<!--
</el-button>
-->
<!--
</el-row>
-->
<el-row>
<el-form>
<el-form-item
class=
"form-item"
>
...
...
@@ -53,14 +42,6 @@
>
<span
v-if=
"data.type ==='group'"
slot-scope=
"
{ node, data }" class="custom-tree-node father">
<span
style=
"display: flex;flex: 1;width: 0;"
>
<!--
<span
v-if=
"data.type === 'scene'"
>
-->
<!-- <!–
<el-button
&
ndash
;&
gt
;
--
>
<!-- <!– icon="el-icon-folder-opened"–>-->
<!-- <!– type="text"–>-->
<!-- <!– size="mini"–>-->
<!-- <!– />–>-->
<!--
<svg-icon
icon-class=
"scene"
class=
"ds-icon-scene"
/>
-->
<!--
</span>
-->
<span>
<i
class=
"el-icon-folder"
/>
</span>
...
...
@@ -80,9 +61,6 @@
<el-dropdown-item
icon=
"el-icon-folder-add"
:command=
"beforeClickAdd('group',data,node)"
>
{{
$t
(
'chart.group'
)
}}
</el-dropdown-item>
<!--
<el-dropdown-item
icon=
"el-icon-folder-add"
:command=
"beforeClickAdd('scene',data,node)"
>
-->
<!--
{{
$t
(
'chart.scene'
)
}}
-->
<!--
</el-dropdown-item>
-->
<el-dropdown-item
icon=
"el-icon-circle-plus"
:command=
"beforeClickAdd('chart',data,node)"
>
{{
$t
(
'chart.add_chart'
)
}}
</el-dropdown-item>
...
...
@@ -691,25 +669,10 @@ export default {
if
(
data
.
type
!==
'group'
)
{
this
.
$emit
(
'switchComponent'
,
{
name
:
'ChartEdit'
,
param
:
data
})
}
// if (data.type === 'scene') {
// this.sceneMode = true
// this.currGroup = data
// this.$store.dispatch('chart/setSceneId', this.currGroup.id)
// this.chartTree()
// }
// if (node.expanded) {
// this.expandedArray.push(data.id)
// } else {
// const index = this.expandedArray.indexOf(data.id)
// if (index > -1) {
// this.expandedArray.splice(index, 1)
// }
// }
},
back
()
{
this
.
sceneMode
=
false
// this.$router.push('/chart/home')
this
.
$emit
(
'switchComponent'
,
{
name
:
''
})
},
...
...
@@ -718,13 +681,9 @@ export default {
'type'
:
type
}
},
sceneClick
(
data
,
node
)
{
// this.$store.dispatch('chart/setViewId', null)
// this.$store.dispatch('chart/setViewId', data.id)
this
.
$emit
(
'switchComponent'
,
{
name
:
'ChartEdit'
,
param
:
{
'id'
:
data
.
id
}})
},
reviewChartList
()
{
if
(
this
.
$store
.
state
.
chart
.
chartSceneData
)
{
const
that
=
this
...
...
frontend/src/views/chart/view/TableSelector.vue
浏览文件 @
70c51f98
<
template
>
<de-container>
<de-aside-container>
<dataset-group-selector-tree
@
getTable=
"getTable"
/>
<dataset-group-selector-tree
@
getTable=
"getTable"
:mode=
mode
:type=
type
:showMode=
showMode
/>
</de-aside-container>
<de-main-container>
...
...
@@ -15,7 +15,6 @@ import DeMainContainer from '@/components/dataease/DeMainContainer'
import
DeContainer
from
'@/components/dataease/DeContainer'
import
DeAsideContainer
from
'@/components/dataease/DeAsideContainer'
// import DatasetGroupSelector from '../../dataset/common/DatasetGroupSelector'
import
DatasetGroupSelectorTree
from
'../../dataset/common/DatasetGroupSelectorTree'
import
DatasetTableData
from
'../../dataset/common/DatasetTableData'
import
{
getTable
}
from
'@/api/dataset/dataset'
...
...
@@ -26,6 +25,23 @@ export default {
DatasetTableData
,
DeMainContainer
,
DeContainer
,
DeAsideContainer
,
DatasetGroupSelectorTree
},
props
:
{
mode
:
{
type
:
Number
,
required
:
false
,
default
:
-
1
},
type
:
{
type
:
String
,
required
:
false
,
default
:
null
},
showMode
:
{
type
:
String
,
required
:
false
,
default
:
null
}
},
data
()
{
return
{
table
:
{}
...
...
frontend/src/views/dataset/common/DatasetGroupSelectorTree.vue
浏览文件 @
70c51f98
...
...
@@ -41,11 +41,6 @@
<span
v-if=
"data.type === 'group'"
slot-scope=
"
{ node, data }" class="custom-tree-node">
<span
style=
"display: flex;flex: 1;width: 0;"
>
<span
v-if=
"data.type === 'scene'"
>
<!--
<el-button-->
<!-- icon="el-icon-folder-opened"-->
<!-- type="text"-->
<!-- size="mini"-->
<!-- />-->
<svg-icon
icon-class=
"scene"
class=
"ds-icon-scene"
/>
</span>
<span
style=
"margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;"
:title=
"data.name"
>
{{
data
.
name
}}
</span>
...
...
@@ -95,6 +90,11 @@ export default {
required
:
false
,
default
:
-
1
},
type
:
{
type
:
String
,
required
:
false
,
default
:
null
},
unionData
:
{
type
:
Array
,
required
:
false
,
...
...
@@ -184,7 +184,6 @@ export default {
},
mounted
()
{
this
.
treeNode
(
this
.
groupForm
)
// this.tableTree()
},
created
()
{
this
.
kettleState
()
...
...
@@ -261,20 +260,6 @@ export default {
if
(
data
.
type
!==
'group'
)
{
this
.
sceneClick
(
data
,
node
)
}
// if (data.type === 'scene') {
// this.sceneMode = true
// this.currGroup = data
// this.tableTree()
// }
// if (node.expanded) {
// this.expandedArray.push(data.id)
// } else {
// const index = this.expandedArray.indexOf(data.id)
// if (index > -1) {
// this.expandedArray.splice(index, 1)
// }
// }
// console.log(this.expandedArray);
},
back
()
{
...
...
@@ -364,6 +349,7 @@ export default {
sort
:
'type asc,name asc,create_time desc'
,
sceneId
:
node
.
data
.
id
,
mode
:
this
.
mode
<
0
?
null
:
this
.
mode
,
type
:
this
.
type
,
typeFilter
:
this
.
customType
?
this
.
customType
:
null
},
false
).
then
(
response
=>
{
this
.
tables
=
response
.
data
...
...
frontend/src/views/dataset/data/UpdateInfo.vue
浏览文件 @
70c51f98
...
...
@@ -472,7 +472,6 @@ export default {
post
(
'/dataset/table/incrementalConfig'
,
{
tableId
:
this
.
table
.
id
}).
then
(
response
=>
{
this
.
incrementalConfig
=
response
.
data
this
.
incrementalUpdateType
=
'incrementalAdd'
// console.log(this.sql)
if
(
this
.
incrementalConfig
.
incrementalAdd
)
{
this
.
sql
=
this
.
incrementalConfig
.
incrementalAdd
}
else
{
...
...
@@ -555,7 +554,8 @@ export default {
}
},
listTaskLog
(
loading
=
true
)
{
post
(
'/dataset/taskLog/list/'
+
this
.
page
.
currentPage
+
'/'
+
this
.
page
.
pageSize
,
{
tableId
:
this
.
table
.
id
},
loading
).
then
(
response
=>
{
const
params
=
{
"conditions"
:[{
"field"
:
"dataset_table_task.table_id"
,
"operator"
:
"eq"
,
"value"
:
this
.
table
.
id
}],
"orders"
:[]}
post
(
'/dataset/taskLog/list/'
+
this
.
page
.
currentPage
+
'/'
+
this
.
page
.
pageSize
,
params
,
loading
).
then
(
response
=>
{
this
.
taskLogData
=
response
.
data
.
listObject
this
.
page
.
total
=
response
.
data
.
itemCount
})
...
...
frontend/src/views/system/task/DatasetTaskList.vue
0 → 100644
浏览文件 @
70c51f98
差异被折叠。
点击展开。
frontend/src/views/system/task/TaskRecord.vue
0 → 100644
浏览文件 @
70c51f98
<
template
>
<el-col>
<el-row
style=
"margin-top: 10px;"
>
<complex-table
:data=
"data"
:columns=
"columns"
local-key=
"datasetTaskRecord"
:search-config=
"searchConfig"
:pagination-config=
"paginationConfig"
@
select=
"select"
@
search=
"search"
@
sort-change=
"sortChange"
>
<el-table-column
prop=
"name"
:label=
"$t('dataset.task_name')"
/>
<el-table-column
prop=
"startTime"
:label=
"$t('dataset.start_time')"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
startTime
|
timestampFormatDate
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"endTime"
:label=
"$t('dataset.end_time')"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
endTime
|
timestampFormatDate
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"status"
:label=
"$t('dataset.status')"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.status === 'Completed'"
style=
"color: green"
>
{{
$t
(
'dataset.completed'
)
}}
</span>
<span
v-if=
"scope.row.status === 'Underway'"
style=
"color: blue"
>
<i
class=
"el-icon-loading"
/>
{{
$t
(
'dataset.underway'
)
}}
</span>
<span
v-if=
"scope.row.status === 'Error'"
style=
"color: red"
>
<el-link
type=
"danger"
style=
"font-size: 12px"
@
click=
"showErrorMassage(scope.row.info)"
>
{{
$t
(
'dataset.error'
)
}}
</el-link>
</span>
</
template
>
</el-table-column>
</complex-table>
</el-row>
</el-col>
</template>
<
script
>
import
LayoutContent
from
'@/components/business/LayoutContent'
import
ComplexTable
from
'@/components/business/complex-table'
import
{
formatCondition
,
formatQuickCondition
,
addOrder
,
formatOrders
}
from
'@/utils/index'
import
'@riophae/vue-treeselect/dist/vue-treeselect.css'
import
{
post
}
from
'@/api/dataset/dataset'
import
cron
from
'@/components/cron/cron'
import
TableSelector
from
'@/views/chart/view/TableSelector'
export
default
{
name
:
'TaskRecord'
,
components
:
{
ComplexTable
,
LayoutContent
,
cron
,
TableSelector
},
data
()
{
return
{
header
:
''
,
columns
:
[],
buttons
:
[
{
label
:
this
.
$t
(
'commons.edit'
),
icon
:
'el-icon-edit'
,
type
:
'primary'
,
click
:
this
.
edit
,
show
:
this
.
checkPermission
([
'user:edit'
])
}
],
searchConfig
:
{
useQuickSearch
:
true
,
useComplexSearch
:
true
,
quickPlaceholder
:
this
.
$t
(
'dataset.task.search_by_name'
),
components
:
[
{
field
:
'dataset_table_task.name'
,
label
:
this
.
$t
(
'dataset.task.name'
),
component
:
'DeComplexInput'
},
{
field
:
'dataset_table_task_log.status'
,
label
:
this
.
$t
(
'commons.status'
),
component
:
'FuComplexSelect'
,
options
:
[{
label
:
this
.
$t
(
'dataset.completed'
),
value
:
'Completed'
},
{
label
:
this
.
$t
(
'dataset.underway'
),
value
:
'Underway'
},
{
label
:
this
.
$t
(
'dataset.error'
),
value
:
'Error'
}],
multiple
:
false
}
]
},
paginationConfig
:
{
currentPage
:
1
,
pageSize
:
10
,
total
:
0
},
data
:
[],
dialogVisible
:
false
,
editPasswordVisible
:
false
,
form
:
{
roles
:
[{
id
:
''
}]
},
checkPasswordForm
:
{},
ruleForm
:
{},
defaultForm
:
{
id
:
null
,
username
:
null
,
nickName
:
null
,
gender
:
'男'
,
email
:
null
,
enabled
:
1
,
deptId
:
null
,
phone
:
null
},
depts
:
null
,
roles
:
[],
roleDatas
:
[],
userRoles
:
[],
formType
:
'add'
,
orderConditions
:
[],
last_condition
:
null
,
}
},
created
()
{
this
.
search
()
this
.
timer
=
setInterval
(()
=>
{
this
.
search
()
},
5000
)
},
computed
:
{
},
beforeDestroy
()
{
clearInterval
(
this
.
timer
)
},
methods
:
{
sortChange
({
column
,
prop
,
order
})
{
this
.
orderConditions
=
[]
if
(
!
order
)
{
this
.
search
(
this
.
last_condition
)
return
}
if
(
prop
===
'dept'
)
{
prop
=
'u.deptId'
}
if
(
prop
===
'status'
)
{
prop
=
'u.enabled'
}
this
.
orderConditions
=
[]
addOrder
({
field
:
prop
,
value
:
order
},
this
.
orderConditions
)
this
.
search
(
this
.
last_condition
)
},
select
(
selection
)
{
},
search
(
condition
)
{
this
.
last_condition
=
condition
console
.
log
(
condition
)
condition
=
formatQuickCondition
(
condition
,
'dataset_table_task.name'
)
const
temp
=
formatCondition
(
condition
)
const
param
=
temp
||
{}
param
[
'orders'
]
=
formatOrders
(
this
.
orderConditions
)
post
(
'/dataset/taskLog/list/'
+
this
.
paginationConfig
.
currentPage
+
'/'
+
this
.
paginationConfig
.
pageSize
,
param
).
then
(
response
=>
{
this
.
data
=
response
.
data
.
listObject
this
.
paginationConfig
.
total
=
response
.
data
.
itemCount
})
},
deleteTask
(
task
)
{
this
.
$confirm
(
this
.
$t
(
'dataset.confirm_delete'
),
this
.
$t
(
'dataset.tips'
),
{
confirmButtonText
:
this
.
$t
(
'dataset.confirm'
),
cancelButtonText
:
this
.
$t
(
'dataset.cancel'
),
type
:
'warning'
}).
then
(()
=>
{
post
(
'/dataset/task/delete/'
+
task
.
id
,
null
).
then
(
response
=>
{
this
.
$message
({
message
:
this
.
$t
(
'dataset.delete_success'
),
type
:
'success'
,
showClose
:
true
})
this
.
search
()
})
}).
catch
(()
=>
{
})
}
}
}
</
script
>
<
style
scoped
>
.el-divider--horizontal
{
margin
:
12px
0
;
}
.el-radio
{
margin-right
:
10px
;
}
.el-radio
>>>
.el-radio__label
{
font-size
:
12px
;
}
.dialog-css
>>>
.el-dialog__header
{
padding
:
20px
20px
0
;
}
.dialog-css
>>>
.el-dialog__body
{
padding
:
10px
20px
20px
;
}
.el-form-item
{
margin-bottom
:
10px
;
}
span
{
font-size
:
12px
;
}
</
style
>
frontend/src/views/system/task/dataset.vue
0 → 100644
浏览文件 @
70c51f98
<
template
>
<layout-content
v-loading=
"$store.getters.loadingMap[$store.getters.currentPath]"
>
<el-row
style=
"height: 100%;overflow-y: hidden;width: 100%;"
>
<el-tabs
v-model=
"tabActive"
>
<el-tab-pane
:label=
"$t('dataset.task.list')"
name=
"DatasetTaskList"
>
<dataset-task-list
/>
</el-tab-pane>
<el-tab-pane
:label=
"$t('dataset.task.record')"
name=
"TaskRecord"
>
<task-record
/>
</el-tab-pane>
</el-tabs>
</el-row>
</layout-content>
</
template
>
<
script
>
import
LayoutContent
from
'@/components/business/LayoutContent'
import
ComplexTable
from
'@/components/business/complex-table'
import
UnionView
from
"@/views/dataset/data/UnionView"
;
import
UpdateInfo
from
"@/views/dataset/data/UpdateInfo"
;
import
DatasetTaskList
from
"@/views/system/task/DatasetTaskList"
;
import
TaskRecord
from
"@/views/system/task/TaskRecord"
;
import
TabDataPreview
from
"@/views/dataset/data/TabDataPreview"
;
import
DatasetTableData
from
"@/views/dataset/common/DatasetTableData"
;
export
default
{
components
:
{
DatasetTableData
,
LayoutContent
,
ComplexTable
,
UnionView
,
UpdateInfo
,
TabDataPreview
,
DatasetTaskList
,
TaskRecord
},
data
()
{
return
{
tabActive
:
'DatasetTaskList'
,
}
},
methods
:
{
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.de-msg-radio-class
{
padding
:
0
5px
;
>>>
.el-radio-button__inner
{
border-radius
:
4px
4px
4px
4px
!
important
;
border-left
:
1px
solid
#dcdfe6
!
important
;
padding
:
10px
10px
;
}
>>>
.el-radio-button__orig-radio
:checked
+
.el-radio-button__inner
{
color
:
#fff
;
background-color
:
#0a7be0
;
border-color
:
#0a7be0
;
-webkit-box-shadow
:
0px
0
0
0
#0a7be0
;
box-shadow
:
0px
0
0
0
#0a7be0
;
}
}
.de-msg-a
:hover
{
text-decoration
:
underline
!
important
;
color
:
#0a7be0
!
important
;
cursor
:
pointer
!
important
;
}
</
style
>
frontend/src/views/system/task/index.vue
0 → 100644
浏览文件 @
70c51f98
<
template
>
<router-view
/>
</
template
>
<
script
>
export
default
({
data
()
{
return
{
}
},
created
()
{
this
.
$store
.
dispatch
(
'app/toggleSideBarHide'
,
false
)
},
method
:
{
}
})
</
script
>
frontend/src/views/system/user/index.vue
浏览文件 @
70c51f98
...
...
@@ -12,7 +12,6 @@
>
<template
#
toolbar
>
<el-button
v-permission=
"['user:add']"
icon=
"el-icon-circle-plus-outline"
@
click=
"create"
>
{{
$t
(
'user.create'
)
}}
</el-button>
<!--
<fu-table-button
v-permission=
"['user:add']"
icon=
"el-icon-circle-plus-outline"
:label=
"$t('user.create')"
@
click=
"create"
/>
-->
</
template
>
<el-table-column
prop=
"username"
label=
"ID"
/>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论