fix: 数据集更新

This commit is contained in:
taojinlong 2021-05-10 10:13:00 +08:00
parent a1f210ac91
commit 568288001a
7 changed files with 90 additions and 24 deletions

View File

@ -1,6 +1,8 @@
package io.dataease.controller.dataset;
import io.dataease.base.domain.DatasetTableTask;
import io.dataease.controller.request.dataset.DataSetTaskRequest;
import io.dataease.service.dataset.DataSetTableService;
import io.dataease.service.dataset.DataSetTableTaskService;
import org.springframework.web.bind.annotation.*;
@ -16,10 +18,13 @@ import java.util.List;
public class DataSetTableTaskController {
@Resource
private DataSetTableTaskService dataSetTableTaskService;
@Resource
private DataSetTableService dataSetTableService;
@PostMapping("save")
public DatasetTableTask save(@RequestBody DatasetTableTask datasetTableTask) throws Exception {
return dataSetTableTaskService.save(datasetTableTask);
public DatasetTableTask save(@RequestBody DataSetTaskRequest dataSetTaskRequest) throws Exception {
dataSetTableService.saveIncrementalConfig(dataSetTaskRequest.getDatasetTableIncrementalConfig());
return dataSetTableTaskService.save(dataSetTaskRequest.getDatasetTableTask());
}
@PostMapping("delete/{id}")

View File

@ -480,6 +480,9 @@ public class DataSetTableService {
public void saveIncrementalConfig(DatasetTableIncrementalConfig datasetTableIncrementalConfig) {
if(datasetTableIncrementalConfig == null || StringUtils.isEmpty(datasetTableIncrementalConfig.getTableId())){
return;
}
if (StringUtils.isEmpty(datasetTableIncrementalConfig.getId())) {
datasetTableIncrementalConfig.setId(UUID.randomUUID().toString());
datasetTableIncrementalConfigMapper.insertSelective(datasetTableIncrementalConfig);

View File

@ -22,6 +22,7 @@ import io.dataease.dto.dataset.DataTableInfoDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.pentaho.di.cluster.SlaveServer;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.row.ValueMetaInterface;
@ -167,10 +168,6 @@ public class ExtractDataService {
}
return o1.getColumnIndex().compareTo(o2.getColumnIndex());
});
for (DatasetTableField datasetTableField : datasetTableFields) {
System.out.println(new Gson().toJson(datasetTableField));
}
String dorisTablColumnSql = createDorisTablColumnSql(datasetTableFields);
switch (updateType) {
// 全量更新
@ -227,9 +224,9 @@ public class ExtractDataService {
}
} catch (Exception e) {
e.printStackTrace();
LogUtil.error("ExtractData error, dataaset: " + datasetTableId);
LogUtil.error(e.getMessage(), e);
LogUtil.error("Extract data error: " + datasetTableId, e);
datasetTableTaskLog.setStatus(JobStatus.Error.name());
datasetTableTaskLog.setInfo(ExceptionUtils.getStackTrace(e));
datasetTableTaskLog.setEndTime(System.currentTimeMillis());
dataSetTableTaskLogService.save(datasetTableTaskLog);
} finally {

View File

@ -757,6 +757,9 @@ export default {
start_time: '开始时间',
end_time: '结束时间',
status: '状态',
error: '错误',
completed: '完成',
underway: '执行中',
task_update: '定时更新',
update_type: '更新方式',
all_scope: '全量更新',

View File

@ -4,6 +4,9 @@
<el-button icon="el-icon-setting" size="mini" @click="showConfig">
{{ $t('dataset.update_setting') }}
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="refreshLog">
{{ $t('commons.refresh') }}
</el-button>
</el-row>
<el-row style="margin-top: 10px;">
<el-table
@ -29,13 +32,22 @@
:label="$t('dataset.end_time')"
>
<template slot-scope="scope">
<span>{{ scope.row.endTime | timestampFormatDate }}</span>
<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"></i>
{{ $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>
<el-table-column
prop="status"
:label="$t('dataset.status')"
/>
</el-table>
<el-row style="margin-top: 10px;text-align: right;">
<el-pagination
@ -50,6 +62,18 @@
</el-row>
</el-row>
<el-dialog
:title="$t('dataset.detail')"
:visible="show_error_massage"
:show-close="false"
width="50%"
class="dialog-css">
<span>{{error_massage}}</span>
<span slot="footer" class="dialog-footer">
<el-button size="mini" @click="show_error_massage = false">{{ $t('dataset.close') }}</el-button>
</span>
</el-dialog>
<el-dialog
:title="table.name+' '+$t('dataset.update_setting')"
:visible="update_setting"
@ -137,10 +161,7 @@
<el-button type="primary" size="mini" @click="saveTask(taskForm)">{{ $t('dataset.confirm') }}</el-button>
</div>
</el-dialog>
<el-row>
<!-- <el-button icon="el-icon-download" size="mini">-->
<!-- {{ $t('dataset.sync_now') }}-->
<!-- </el-button>-->
<el-row >
<el-button icon="el-icon-plus" size="mini" @click="addTask(undefined)">
{{ $t('dataset.add_task') }}
</el-button>
@ -155,7 +176,7 @@
>
<el-table-column
prop="name"
:label="$t('dataset.start_time')"
:label="$t('dataset.task_name')"
/>
<el-table-column
prop="rate"
@ -276,6 +297,8 @@ export default {
return {
update_setting: false,
update_task: false,
show_error_massage: false,
error_massage: '',
taskForm: {
name: '',
type: 'all_scope',
@ -331,9 +354,13 @@ export default {
}
},
watch: {
table() {
this.listTask()
this.listTaskLog()
table: {
handler()
{
this.listTask()
this.listTaskLog()
},
immediate: true
}
},
mounted() {
@ -345,10 +372,22 @@ export default {
this.height = window.innerHeight / 2
},
methods: {
cellStyle ({row, column}) {
//
if (row.status === 'Underway' && column === 'status') {
return 'color: blue'
} else if (row.status === 'Completed' && column === 'status') {
return 'color: green'
}else if (row.status === 'Error' && column === 'status') {
return 'color: red'
}
},
incrementalUpdateTypeChange: function() {
if (this.incrementalUpdateType === 'incrementalAdd') {
if (this.sql) {
this.incrementalConfig.incrementalDelete = this.sql
} else {
this.incrementalConfig.incrementalDelete = ''
}
if (this.incrementalConfig.incrementalAdd) {
this.sql = this.incrementalConfig.incrementalAdd
@ -360,6 +399,8 @@ export default {
if (this.incrementalUpdateType === 'incrementalDelete') {
if (this.sql) {
this.incrementalConfig.incrementalAdd = this.sql
} else {
this.incrementalConfig.incrementalAdd = ''
}
if (this.incrementalConfig.incrementalDelete) {
this.sql = this.incrementalConfig.incrementalDelete
@ -373,6 +414,13 @@ export default {
this.listTask()
this.getIncrementalConfig()
},
refreshLog(){
this.listTaskLog()
},
showErrorMassage(massage){
this.show_error_massage = true
this.error_massage = massage
},
addTask(task) {
if (!task) {
this.resetTaskForm()
@ -414,10 +462,22 @@ export default {
})
},
saveTask(task) {
if (this.incrementalUpdateType === 'incrementalAdd') {
this.incrementalConfig.incrementalAdd = this.sql
} else {
this.incrementalConfig.incrementalDelete = this.sql
}
this.incrementalConfig.tableId = this.table.id
console.log(this.incrementalConfig)
task.startTime = new Date(task.startTime).getTime()
task.endTime = new Date(task.endTime).getTime()
task.tableId = this.table.id
post('/dataset/task/save', task).then(response => {
const dataSetTaskRequest = {
datasetTableTask: task,
datasetTableIncrementalConfig: this.incrementalConfig
}
post('/dataset/task/save', dataSetTaskRequest).then(response => {
this.$message({
message: this.$t('dataset.save_success'),
type: 'success',

View File

@ -86,7 +86,6 @@ export default {
},
methods: {
initTable(id) {
console.log(id)
this.tabActive = 'dataPreview'
this.tableViewRowForm.row = 1000
if (id !== null) {

View File

@ -37,7 +37,6 @@ export default {
},
methods: {
switchComponent(c) {
console.log(c)
this.param = c.param
switch (c.name) {
case 'ViewTable':