提交 3b0b5d2f authored 作者: taojinlong's avatar taojinlong

fix(數據集): 数据集任务,增加简单重复执行的功能

上级 7b345b40
...@@ -100,8 +100,9 @@ public class DataSetTableService { ...@@ -100,8 +100,9 @@ public class DataSetTableService {
private void extractData(DataSetTableRequest datasetTable) throws Exception{ private void extractData(DataSetTableRequest datasetTable) throws Exception{
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) { if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
commonThreadPool.addTask(() -> { commonThreadPool.addTask(() -> {
extractDataService.extractData(datasetTable.getId(), null, "all_scope", null); extractDataService.extractExcelData(datasetTable.getId(), "all_scope");
}); });
return;
} }
if (StringUtils.isNotEmpty(datasetTable.getSyncType()) && datasetTable.getSyncType().equalsIgnoreCase("sync_now")) { if (StringUtils.isNotEmpty(datasetTable.getSyncType()) && datasetTable.getSyncType().equalsIgnoreCase("sync_now")) {
DataSetTaskRequest dataSetTaskRequest = new DataSetTaskRequest(); DataSetTaskRequest dataSetTaskRequest = new DataSetTaskRequest();
...@@ -111,8 +112,6 @@ public class DataSetTableService { ...@@ -111,8 +112,6 @@ public class DataSetTableService {
datasetTableTask.setType("all_scope"); datasetTableTask.setType("all_scope");
datasetTableTask.setName(datasetTable.getName() + " 更新设置"); datasetTableTask.setName(datasetTable.getName() + " 更新设置");
datasetTableTask.setEnd("0"); datasetTableTask.setEnd("0");
datasetTableTask.setStatus(TaskStatus.Underway.name());
datasetTableTask.setStartTime(System.currentTimeMillis());
dataSetTaskRequest.setDatasetTableTask(datasetTableTask); dataSetTaskRequest.setDatasetTableTask(datasetTableTask);
dataSetTableTaskService.save(dataSetTaskRequest); dataSetTableTaskService.save(dataSetTaskRequest);
} }
...@@ -149,11 +148,11 @@ public class DataSetTableService { ...@@ -149,11 +148,11 @@ public class DataSetTableService {
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) { if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
if (datasetTable.getEditType() == 0) { if (datasetTable.getEditType() == 0) {
commonThreadPool.addTask(() -> { commonThreadPool.addTask(() -> {
extractDataService.extractData(datasetTable.getId(), null, "all_scope", null); extractDataService.extractExcelData(datasetTable.getId(), "all_scope");
}); });
} else if (datasetTable.getEditType() == 1) { } else if (datasetTable.getEditType() == 1) {
commonThreadPool.addTask(() -> { commonThreadPool.addTask(() -> {
extractDataService.extractData(datasetTable.getId(), null, "add_scope", null); extractDataService.extractExcelData(datasetTable.getId(), "add_scope");
}); });
} }
} }
......
package io.dataease.service.dataset; package io.dataease.service.dataset;
import com.google.gson.Gson; import com.google.gson.Gson;
import io.dataease.base.domain.DatasetTable; import io.dataease.base.domain.*;
import io.dataease.base.domain.DatasetTableTask; import io.dataease.base.mapper.DatasetTableMapper;
import io.dataease.base.domain.DatasetTableTaskExample;
import io.dataease.base.domain.DatasetTableTaskLog;
import io.dataease.base.mapper.DatasetTableTaskMapper; import io.dataease.base.mapper.DatasetTableTaskMapper;
import io.dataease.base.mapper.ext.ExtDataSetTaskMapper; import io.dataease.base.mapper.ext.ExtDataSetTaskMapper;
import io.dataease.base.mapper.ext.query.GridExample; import io.dataease.base.mapper.ext.query.GridExample;
...@@ -53,6 +51,9 @@ public class DataSetTableTaskService { ...@@ -53,6 +51,9 @@ public class DataSetTableTaskService {
private ExtractDataService extractDataService; private ExtractDataService extractDataService;
@Resource @Resource
private ExtDataSetTaskMapper extDataSetTaskMapper; private ExtDataSetTaskMapper extDataSetTaskMapper;
@Resource
private DatasetTableMapper datasetTableMapper;
public DatasetTableTask save(DataSetTaskRequest dataSetTaskRequest) throws Exception { public DatasetTableTask save(DataSetTaskRequest dataSetTaskRequest) throws Exception {
checkName(dataSetTaskRequest); checkName(dataSetTaskRequest);
...@@ -86,19 +87,15 @@ public class DataSetTableTaskService { ...@@ -86,19 +87,15 @@ public class DataSetTableTaskService {
} else { } else {
datasetTableTaskMapper.updateByPrimaryKeySelective(datasetTableTask); datasetTableTaskMapper.updateByPrimaryKeySelective(datasetTableTask);
} }
// simple
if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString()) && datasetTableTask.getStatus().equalsIgnoreCase(TaskStatus.Underway.name())) { // SIMPLE 类型,提前占位 if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString()) && datasetTableTask.getStatus().equalsIgnoreCase(TaskStatus.Underway.name())) { // SIMPLE 类型,提前占位
execNow(datasetTableTask); execNow(datasetTableTask);
datasetTableTask.setLastExecStatus(JobStatus.Underway.name()); scheduleService.addSchedule(datasetTableTask);
datasetTableTask.setLastExecTime(System.currentTimeMillis());
update(datasetTableTask);
} }
//cron、simple_cron
if(!datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.name())){ if(!datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.name())){
scheduleService.addSchedule(datasetTableTask); scheduleService.addSchedule(datasetTableTask);
}else {
if(datasetTableTask.getStatus().equalsIgnoreCase(JobStatus.Underway.name())){
System.out.println(new Gson().toJson(datasetTableTask));
scheduleService.addSchedule(datasetTableTask);
}
} }
return datasetTableTask; return datasetTableTask;
...@@ -111,10 +108,21 @@ public class DataSetTableTaskService { ...@@ -111,10 +108,21 @@ public class DataSetTableTaskService {
DataEaseException.throwException(Translator.get("i18n_not_exec_add_sync")); DataEaseException.throwException(Translator.get("i18n_not_exec_add_sync"));
} }
} }
if (extractDataService.existSyncTask(dataSetTableService.get(datasetTableTask.getTableId()), null)) { if (existSyncTask(dataSetTableService.get(datasetTableTask.getTableId()), datasetTableTask)) {
DataEaseException.throwException(Translator.get("i18n_sync_job_exists")); DataEaseException.throwException(Translator.get("i18n_sync_job_exists"));
} }
//write log }
private synchronized boolean existSyncTask(DatasetTable datasetTable, DatasetTableTask datasetTableTask) {
datasetTable.setSyncStatus(JobStatus.Underway.name());
DatasetTableExample example = new DatasetTableExample();
example.createCriteria().andIdEqualTo(datasetTable.getId()).andSyncStatusNotEqualTo(JobStatus.Underway.name());
example.or(example.createCriteria().andIdEqualTo(datasetTable.getId()).andSyncStatusIsNull());
Boolean existSyncTask = datasetTableMapper.updateByExampleSelective(datasetTable, example) == 0;
if(!existSyncTask){
datasetTableTask.setLastExecTime(System.currentTimeMillis());
datasetTableTask.setLastExecStatus(JobStatus.Underway.name());
update(datasetTableTask);
DatasetTableTaskLog datasetTableTaskLog = new DatasetTableTaskLog(); DatasetTableTaskLog datasetTableTaskLog = new DatasetTableTaskLog();
datasetTableTaskLog.setTableId(datasetTableTask.getTableId()); datasetTableTaskLog.setTableId(datasetTableTask.getTableId());
datasetTableTaskLog.setTaskId(datasetTableTask.getId()); datasetTableTaskLog.setTaskId(datasetTableTask.getId());
...@@ -123,6 +131,8 @@ public class DataSetTableTaskService { ...@@ -123,6 +131,8 @@ public class DataSetTableTaskService {
datasetTableTaskLog.setTriggerType(TriggerType.Custom.name()); datasetTableTaskLog.setTriggerType(TriggerType.Custom.name());
dataSetTableTaskLogService.save(datasetTableTaskLog); dataSetTableTaskLogService.save(datasetTableTaskLog);
} }
return existSyncTask;
}
public void delete(String id) { public void delete(String id) {
DatasetTableTask datasetTableTask = datasetTableTaskMapper.selectByPrimaryKey(id); DatasetTableTask datasetTableTask = datasetTableTaskMapper.selectByPrimaryKey(id);
...@@ -207,11 +217,6 @@ public class DataSetTableTaskService { ...@@ -207,11 +217,6 @@ public class DataSetTableTaskService {
public void execTask(DatasetTableTask datasetTableTask) throws Exception{ public void execTask(DatasetTableTask datasetTableTask) throws Exception{
execNow(datasetTableTask); 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())){ if(datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.CRON.toString())){
scheduleService.fireNow(datasetTableTask); scheduleService.fireNow(datasetTableTask);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论