diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 2a287871e0..b99f672017 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -2456,13 +2456,29 @@ public class DataSetTableService { DatasetTableExample example = new DatasetTableExample(); example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name()); List jobStoppeddDatasetTables = new ArrayList<>(); + List syncDatasetTables = new ArrayList<>(); - datasetTableMapper.selectByExample(example).forEach(datasetTable -> { + List datasetTables = datasetTableMapper.selectByExample(example); + datasetTables.forEach(datasetTable -> { if (StringUtils.isNotEmpty(datasetTable.getQrtzInstance()) && !activeQrtzInstances.contains(datasetTable.getQrtzInstance().substring(0, datasetTable.getQrtzInstance().length() - 13))) { jobStoppeddDatasetTables.add(datasetTable); + }else { + syncDatasetTables.add(datasetTable); } }); + datasetTables.forEach(datasetTable -> { + DatasetTableTaskExample datasetTableTaskExample = new DatasetTableTaskExample(); + DatasetTableTaskExample.Criteria criteria = datasetTableTaskExample.createCriteria(); + criteria.andTableIdEqualTo(datasetTable.getId()).andLastExecStatusEqualTo(JobStatus.Underway.name()); + if(CollectionUtils.isEmpty(dataSetTableTaskService.list(datasetTableTaskExample))){ + DatasetTable record = new DatasetTable(); + record.setSyncStatus(JobStatus.Error.name()); + example.clear(); + example.createCriteria().andIdEqualTo(datasetTable.getId()); + datasetTableMapper.updateByExampleSelective(record, example); + } + }); if (CollectionUtils.isEmpty(jobStoppeddDatasetTables)) { return; } diff --git a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index c5447b6525..d892af5f70 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -333,12 +333,12 @@ public class ExtractDataService { System.out.println(ignore.getMessage()); } try { - dataSetTableTaskService.updateTaskStatus(datasetTableTask, lastExecStatus); + updateTableStatus(datasetTableId, lastExecStatus, execTime); } catch (Exception ignore) { System.out.println(ignore.getMessage()); } try { - updateTableStatus(datasetTableId, lastExecStatus, execTime); + dataSetTableTaskService.updateTaskStatus(datasetTableTask, lastExecStatus); } catch (Exception ignore) { System.out.println(ignore.getMessage()); } @@ -392,11 +392,11 @@ public class ExtractDataService { } catch (Exception ignore) { } try { - dataSetTableTaskService.updateTaskStatus(datasetTableTask, lastExecStatus); + updateTableStatus(datasetTableId, lastExecStatus, execTime); } catch (Exception ignore) { } try { - updateTableStatus(datasetTableId, lastExecStatus, execTime); + dataSetTableTaskService.updateTaskStatus(datasetTableTask, lastExecStatus); } catch (Exception ignore) { } } diff --git a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java index 90b9cc9be2..d5d9c6ae60 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -452,19 +452,22 @@ public class DatasourceService { } private void checkAndUpdateDatasourceStatus(Datasource datasource, Boolean withMsg) { + Datasource record = new Datasource(); + DatasourceExample example = new DatasourceExample(); + example.createCriteria().andIdEqualTo(datasource.getId()); try { Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(datasource); String status = datasourceProvider.checkStatus(datasourceRequest); - datasource.setStatus(status); - datasourceMapper.updateByPrimaryKeySelective(datasource); + record.setStatus(status); + datasourceMapper.updateByExampleSelective(datasource, example); } catch (Exception e) { Datasource temp = datasourceMapper.selectByPrimaryKey(datasource.getId()); - datasource.setStatus("Error"); + record.setStatus("Error"); if (!StringUtils.equals(temp.getStatus(), "Error")) { sendWebMsg(datasource); - datasourceMapper.updateByPrimaryKeySelective(datasource); + datasourceMapper.updateByExampleSelective(datasource, example); } }