From 8f494f3755cb6a75ce29a8fc9c729fe4a6c76129 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Fri, 13 Aug 2021 12:04:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=BF=E6=8D=A2excel=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=9B=BF=E6=8D=A2=E6=88=90=E5=8A=9F=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E6=89=8D=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E9=9B=86=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dataset/DataSetTableService.java | 27 ++++++++++--------- .../service/dataset/ExtractDataService.java | 12 +++++++-- 2 files changed, 24 insertions(+), 15 deletions(-) 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 18ae9a79c4..4ad87b6a16 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -141,9 +141,9 @@ public class DataSetTableService { sheetTable.setInfo(new Gson().toJson(info)); int insert = datasetTableMapper.insert(sheetTable); if (insert == 1) { - saveExcelTableField(sheetTable.getId(), excelSheetDataList.get(0).getFields()); + saveExcelTableField(sheetTable.getId(), excelSheetDataList.get(0).getFields(), true); commonThreadPool.addTask(() -> { - extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入"); + extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null); }); } } @@ -169,9 +169,9 @@ public class DataSetTableService { sheetTable.setInfo(new Gson().toJson(info)); int insert = datasetTableMapper.insert(sheetTable); if (insert == 1) { - saveExcelTableField(sheetTable.getId(), sheet.getFields()); + saveExcelTableField(sheetTable.getId(), sheet.getFields(), true); commonThreadPool.addTask(() -> { - extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入"); + extractDataService.extractExcelData(sheetTable.getId(), "all_scope", "初始导入", null); }); } } @@ -203,20 +203,16 @@ public class DataSetTableService { info.setExcelSheetDataList(excelSheetDataList); datasetTable.setInfo(new Gson().toJson(info)); int update = datasetTableMapper.updateByPrimaryKeySelective(datasetTable); - // 删除所有字段,重新抽象 - if(datasetTable.getEditType() == 0){ - dataSetTableFieldsService.deleteByTableId(datasetTable.getId()); - saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields()); - } + // 替換時,先不刪除旧字段;同步成功后再删除 if (update == 1) { if (datasetTable.getEditType() == 0) { commonThreadPool.addTask(() -> { - extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换"); + extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换", saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false)); }); } else if (datasetTable.getEditType() == 1) { commonThreadPool.addTask(() -> { - extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加"); + extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加", null); }); } } @@ -900,7 +896,8 @@ public class DataSetTableService { } } - public void saveExcelTableField(String datasetTableId, List fields) throws Exception { + public List saveExcelTableField(String datasetTableId, List fields, boolean insert){ + List datasetTableFields = new ArrayList<>(); if (CollectionUtils.isNotEmpty(fields)) { for (int i = 0; i < fields.size(); i++) { TableFiled filed = fields.get(i); @@ -918,9 +915,13 @@ public class DataSetTableService { datasetTableField.setLastSyncTime(System.currentTimeMillis()); datasetTableField.setExtField(0); datasetTableField.setGroupType(datasetTableField.getDeType() < 2 ? "d" : "q"); - dataSetTableFieldsService.save(datasetTableField); + if(insert){ + dataSetTableFieldsService.save(datasetTableField); + } + datasetTableFields.add(datasetTableField); } } + return datasetTableFields; } public void saveTableField(DatasetTable datasetTable) throws Exception { 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 d332229b03..53bdf602fe 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -151,7 +151,7 @@ public class ExtractDataService { } } - public void extractExcelData(String datasetTableId, String type, String ops) { + public void extractExcelData(String datasetTableId, String type, String ops, List datasetTableFields) { Datasource datasource = new Datasource(); datasource.setType("excel"); DatasetTable datasetTable = getDatasetTable(datasetTableId); @@ -161,7 +161,9 @@ public class ExtractDataService { } UpdateType updateType = UpdateType.valueOf(type); DatasetTableTaskLog datasetTableTaskLog = new DatasetTableTaskLog(); - List datasetTableFields = dataSetTableFieldsService.list(DatasetTableField.builder().tableId(datasetTable.getId()).build()); + if(datasetTableFields == null){ + datasetTableFields = dataSetTableFieldsService.list(DatasetTableField.builder().tableId(datasetTable.getId()).build()); + } datasetTableFields.sort((o1, o2) -> { if (o1.getColumnIndex() == null) { return -1; @@ -186,6 +188,12 @@ public class ExtractDataService { saveSucessLog(datasetTableTaskLog); // sendWebMsg(datasetTable, null, true); updateTableStatus(datasetTableId, datasetTable, JobStatus.Completed, execTime); + if(ops.equalsIgnoreCase("替换")){ + dataSetTableFieldsService.deleteByTableId(datasetTable.getId()); + datasetTableFields.forEach(datasetTableField -> { + dataSetTableFieldsService.save(datasetTableField); + }); + } } catch (Exception e) { saveErrorLog(datasetTableId, null, e); // sendWebMsg(datasetTable, null, false);