提交 afd2a7ae authored 作者: taojinlong's avatar taojinlong

fix: 定时任务创建全量任务,执行完成后修改为增量,发现增量不生效

上级 ec9139bd
......@@ -31,10 +31,6 @@ public class ChartGroupService {
@Resource
private ExtChartGroupMapper extChartGroupMapper;
@Resource
private ExtDataSetGroupMapper extDataSetGroupMapper;
@Resource
private SysAuthService sysAuthService;
@Resource
private ExtChartViewMapper extChartViewMapper;
public ChartGroupDTO save(ChartGroup chartGroup) {
......
......@@ -2245,8 +2245,7 @@ public class DataSetTableService {
List<DatasetTable> jobStoppeddDatasetTables = new ArrayList<>();
datasetTableMapper.selectByExample(example).forEach(datasetTable -> {
if (StringUtils.isEmpty(datasetTable.getQrtzInstance()) || !activeQrtzInstances.contains(
datasetTable.getQrtzInstance().substring(0, datasetTable.getQrtzInstance().length() - 13))) {
if (StringUtils.isNotEmpty(datasetTable.getQrtzInstance()) && !activeQrtzInstances.contains(datasetTable.getQrtzInstance().substring(0, datasetTable.getQrtzInstance().length() - 13))) {
jobStoppeddDatasetTables.add(datasetTable);
}
});
......@@ -2314,4 +2313,8 @@ public class DataSetTableService {
saveTableField(datasetTable);
return datasetTable;
}
public int updateByExampleSelective(DatasetTable record, DatasetTableExample example ){
return datasetTableMapper.updateByExampleSelective(record, example);
}
}
......@@ -10,6 +10,7 @@ import io.dataease.dto.dataset.DataSetTaskLogDTO;
import io.dataease.plugins.common.base.domain.DatasetTableTaskLog;
import io.dataease.plugins.common.base.domain.DatasetTableTaskLogExample;
import io.dataease.plugins.common.base.mapper.DatasetTableTaskLogMapper;
import io.dataease.plugins.common.base.mapper.DatasetTableTaskMapper;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
......@@ -29,8 +30,13 @@ public class DataSetTableTaskLogService {
private DatasetTableTaskLogMapper datasetTableTaskLogMapper;
@Resource
private ExtDataSetTaskMapper extDataSetTaskMapper;
@Resource
private DatasetTableTaskMapper datasetTableTaskMapper;
public DatasetTableTaskLog save(DatasetTableTaskLog datasetTableTaskLog) {
if(datasetTableTaskMapper.selectByPrimaryKey(datasetTableTaskLog.getTaskId()) == null){
return datasetTableTaskLog;
}
if (StringUtils.isEmpty(datasetTableTaskLog.getId())) {
datasetTableTaskLog.setId(UUID.randomUUID().toString());
datasetTableTaskLog.setCreateTime(System.currentTimeMillis());
......
......@@ -108,26 +108,32 @@ public class DataSetTableTaskService {
DataEaseException.throwException(Translator.get("i18n_not_exec_add_sync"));
}
}
if (existSyncTask(dataSetTableService.get(datasetTableTask.getTableId()), datasetTableTask)) {
if (existSyncTask(datasetTableTask.getTableId(), datasetTableTask.getId())) {
DataEaseException.throwException(Translator.get("i18n_sync_job_exists"));
}
}
private synchronized boolean existSyncTask(DatasetTable datasetTable, DatasetTableTask datasetTableTask) {
datasetTable.setSyncStatus(JobStatus.Underway.name());
private synchronized boolean existSyncTask(String datasetTableId, String datasetTableTaskId) {
DatasetTable record = new DatasetTable();
record.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;
example.createCriteria().andIdEqualTo(datasetTableId).andSyncStatusNotEqualTo(JobStatus.Underway.name());
example.or(example.createCriteria().andIdEqualTo(datasetTableId).andSyncStatusIsNull());
Boolean existSyncTask = datasetTableMapper.updateByExampleSelective(record, example) == 0;
if (!existSyncTask) {
Long startTime = System.currentTimeMillis();
datasetTableTask.setLastExecTime(startTime);
datasetTableTask.setLastExecStatus(JobStatus.Underway.name());
datasetTableTask.setStatus(TaskStatus.Exec.name());
update(datasetTableTask);
DatasetTableTask datasetTableTaskRecord = new DatasetTableTask();
datasetTableTaskRecord.setLastExecTime(startTime);
datasetTableTaskRecord.setLastExecStatus(JobStatus.Underway.name());
datasetTableTaskRecord.setStatus(TaskStatus.Exec.name());
DatasetTableTaskExample datasetTableTaskExample = new DatasetTableTaskExample();
datasetTableTaskExample.createCriteria().andIdEqualTo(datasetTableTaskId);
updateByExampleSelective(datasetTableTaskRecord, datasetTableTaskExample);
DatasetTableTaskLog datasetTableTaskLog = new DatasetTableTaskLog();
datasetTableTaskLog.setTableId(datasetTableTask.getTableId());
datasetTableTaskLog.setTaskId(datasetTableTask.getId());
datasetTableTaskLog.setTableId(datasetTableId);
datasetTableTaskLog.setTaskId(datasetTableTaskId);
datasetTableTaskLog.setStatus(JobStatus.Underway.name());
datasetTableTaskLog.setStartTime(startTime);
datasetTableTaskLog.setTriggerType(TriggerType.Custom.name());
......@@ -173,7 +179,7 @@ public class DataSetTableTaskService {
}
}
public void checkTaskIsStopped(DatasetTableTask datasetTableTask) {
public void checkTaskIsStopped(final DatasetTableTask datasetTableTask) {
if (StringUtils.isNotEmpty(datasetTableTask.getEnd()) && datasetTableTask.getEnd().equalsIgnoreCase("1")) {
BaseGridRequest request = new BaseGridRequest();
ConditionEntity conditionEntity = new ConditionEntity();
......@@ -186,24 +192,30 @@ public class DataSetTableTaskService {
return;
}
if (dataSetTaskDTOS.get(0).getNextExecTime() == null || dataSetTaskDTOS.get(0).getNextExecTime() <= 0) {
datasetTableTask.setStatus(TaskStatus.Stopped.name());
update(datasetTableTask);
DatasetTableTask record = new DatasetTableTask();
record.setStatus(TaskStatus.Stopped.name());
DatasetTableTaskExample datasetTableTaskExample = new DatasetTableTaskExample();
datasetTableTaskExample.createCriteria().andIdEqualTo(datasetTableTask.getId());
updateByExampleSelective(record, datasetTableTaskExample);
return;
}
if (dataSetTaskDTOS.get(0).getNextExecTime() > datasetTableTask.getEndTime()) {
datasetTableTask.setStatus(TaskStatus.Stopped.name());
update(datasetTableTask);
DatasetTableTask record = new DatasetTableTask();
record.setStatus(TaskStatus.Stopped.name());
DatasetTableTaskExample datasetTableTaskExample = new DatasetTableTaskExample();
datasetTableTaskExample.createCriteria().andIdEqualTo(datasetTableTask.getId());
updateByExampleSelective(record, datasetTableTaskExample);
}
}
}
public void updateTaskStatus(DatasetTableTask datasetTableTask, JobStatus lastExecStatus) {
datasetTableTask.setLastExecStatus(lastExecStatus.name());
DatasetTableTask recore = new DatasetTableTask();
recore.setLastExecStatus(lastExecStatus.name());
if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.name())) {
datasetTableTask.setStatus(TaskStatus.Stopped.name());
recore.setStatus(TaskStatus.Stopped.name());
} else {
// datasetTableTask = datasetTableTaskMapper.selectByPrimaryKey(datasetTableTask.getId());
datasetTableTask.setLastExecStatus(lastExecStatus.name());
recore.setLastExecStatus(lastExecStatus.name());
if (StringUtils.isNotEmpty(datasetTableTask.getEnd()) && datasetTableTask.getEnd().equalsIgnoreCase("1")) {
BaseGridRequest request = new BaseGridRequest();
ConditionEntity conditionEntity = new ConditionEntity();
......@@ -216,19 +228,25 @@ public class DataSetTableTaskService {
return;
}
if (dataSetTaskDTOS.get(0).getNextExecTime() == null || dataSetTaskDTOS.get(0).getNextExecTime() <= 0) {
datasetTableTask.setStatus(TaskStatus.Stopped.name());
recore.setStatus(TaskStatus.Stopped.name());
} else {
datasetTableTask.setStatus(TaskStatus.Underway.name());
recore.setStatus(TaskStatus.Underway.name());
}
} else {
datasetTableTask.setStatus(TaskStatus.Underway.name());
recore.setStatus(TaskStatus.Underway.name());
}
}
update(datasetTableTask);
DatasetTableTaskExample datasetTableTaskExample = new DatasetTableTaskExample();
datasetTableTaskExample.createCriteria().andIdEqualTo(datasetTableTask.getId());
updateByExampleSelective(recore, datasetTableTaskExample);
}
public void update(DatasetTableTask datasetTableTask) {
datasetTableTaskMapper.updateByPrimaryKeySelective(datasetTableTask);
public DatasetTableTask selectByPrimaryKey(String id) {
return datasetTableTaskMapper.selectByPrimaryKey(id);
}
public void updateByExampleSelective(DatasetTableTask datasetTableTask, DatasetTableTaskExample datasetTableTaskExample) {
datasetTableTaskMapper.updateByExampleSelective(datasetTableTask, datasetTableTaskExample);
}
public List<DatasetTableTask> list(DatasetTableTask datasetTableTask) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论