From 5f5f33a8de48dd0f5de6c6864eb6d80017b694c8 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 20 Dec 2021 15:24:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20excel=20=E6=9B=BF=E6=8D=A2=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E9=87=8D=E5=BB=BA=E8=A1=A8=E7=BB=93=E6=9E=84?= =?UTF-8?q?=EF=BC=8C=E5=81=9A=E5=AD=97=E6=AE=B5=20mapping?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dataset/ExtractDataService.java | 57 ++++++++++++++----- 1 file changed, 44 insertions(+), 13 deletions(-) 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 f4306972ee..0738565140 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -188,8 +188,34 @@ public class ExtractDataService { saveSuccessLog(datasetTableTaskLog); updateTableStatus(datasetTableId, datasetTable, JobStatus.Completed, execTime); if(ops.equalsIgnoreCase("替换")){ - dataSetTableFieldsService.deleteByTableId(datasetTable.getId()); - datasetTableFields.forEach(datasetTableField -> dataSetTableFieldsService.save(datasetTableField)); + List oldFileds = getDatasetTableFields(datasetTable.getId()); + List toAdd = new ArrayList<>(); + List toDelete = new ArrayList<>(); + for (DatasetTableField oldFiled : oldFileds) { + boolean delete = true; + for (DatasetTableField datasetTableField : datasetTableFields) { + if(oldFiled.getDataeaseName().equalsIgnoreCase(datasetTableField.getDataeaseName()) && oldFiled.getDeExtractType().equals(datasetTableField.getDeExtractType())){ + delete = false; + } + } + if(delete){ + toDelete.add(oldFiled); + } + } + + for (DatasetTableField datasetTableField : datasetTableFields) { + boolean add = true; + for (DatasetTableField oldFiled : oldFileds) { + if(oldFiled.getDataeaseName().equalsIgnoreCase(datasetTableField.getDataeaseName()) && oldFiled.getDeExtractType().equals(datasetTableField.getDeExtractType())){ + add = false; + } + } + if(add){ + toAdd.add(datasetTableField); + } + } + toAdd.forEach(datasetTableField -> dataSetTableFieldsService.save(datasetTableField)); + toDelete.forEach(datasetTableField -> dataSetTableFieldsService.delete(datasetTableField.getId())); } } catch (Exception e) { saveErrorLog(datasetTableId, null, e); @@ -231,6 +257,21 @@ public class ExtractDataService { } } + private List getDatasetTableFields(String datasetTableId){ + List datasetTableFields = dataSetTableFieldsService.list(DatasetTableField.builder().tableId(datasetTableId).build()); + datasetTableFields = datasetTableFields.stream().filter(datasetTableField -> datasetTableField.getExtField() == 0).collect(Collectors.toList()); + datasetTableFields.sort((o1, o2) -> { + if (o1.getColumnIndex() == null) { + return -1; + } + if (o2.getColumnIndex() == null) { + return 1; + } + return o1.getColumnIndex().compareTo(o2.getColumnIndex()); + }); + return datasetTableFields; + } + public void extractData(String datasetTableId, String taskId, String type, JobExecutionContext context) { DatasetTable datasetTable = getDatasetTable(datasetTableId); if (datasetTable == null) { @@ -264,17 +305,7 @@ public class ExtractDataService { } else { datasource.setType(datasetTable.getType()); } - List datasetTableFields = dataSetTableFieldsService.list(DatasetTableField.builder().tableId(datasetTable.getId()).build()); - datasetTableFields = datasetTableFields.stream().filter(datasetTableField -> datasetTableField.getExtField() == 0).collect(Collectors.toList()); - datasetTableFields.sort((o1, o2) -> { - if (o1.getColumnIndex() == null) { - return -1; - } - if (o2.getColumnIndex() == null) { - return 1; - } - return o1.getColumnIndex().compareTo(o2.getColumnIndex()); - }); + List datasetTableFields = getDatasetTableFields(datasetTable.getId()); String dorisTableColumnSql = createDorisTableColumnSql(datasetTableFields); boolean msg = false;