fix: excel 替换时,不重建表结构,做字段 mapping

This commit is contained in:
taojinlong 2021-12-20 15:24:41 +08:00
parent 6454ebf7ea
commit 5f5f33a8de

View File

@ -188,8 +188,34 @@ public class ExtractDataService {
saveSuccessLog(datasetTableTaskLog); saveSuccessLog(datasetTableTaskLog);
updateTableStatus(datasetTableId, datasetTable, JobStatus.Completed, execTime); updateTableStatus(datasetTableId, datasetTable, JobStatus.Completed, execTime);
if(ops.equalsIgnoreCase("替换")){ if(ops.equalsIgnoreCase("替换")){
dataSetTableFieldsService.deleteByTableId(datasetTable.getId()); List<DatasetTableField> oldFileds = getDatasetTableFields(datasetTable.getId());
datasetTableFields.forEach(datasetTableField -> dataSetTableFieldsService.save(datasetTableField)); List<DatasetTableField> toAdd = new ArrayList<>();
List<DatasetTableField> 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) { } catch (Exception e) {
saveErrorLog(datasetTableId, null, e); saveErrorLog(datasetTableId, null, e);
@ -231,6 +257,21 @@ public class ExtractDataService {
} }
} }
private List<DatasetTableField> getDatasetTableFields(String datasetTableId){
List<DatasetTableField> 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) { public void extractData(String datasetTableId, String taskId, String type, JobExecutionContext context) {
DatasetTable datasetTable = getDatasetTable(datasetTableId); DatasetTable datasetTable = getDatasetTable(datasetTableId);
if (datasetTable == null) { if (datasetTable == null) {
@ -264,17 +305,7 @@ public class ExtractDataService {
} else { } else {
datasource.setType(datasetTable.getType()); datasource.setType(datasetTable.getType());
} }
List<DatasetTableField> datasetTableFields = dataSetTableFieldsService.list(DatasetTableField.builder().tableId(datasetTable.getId()).build()); List<DatasetTableField> datasetTableFields = getDatasetTableFields(datasetTable.getId());
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());
});
String dorisTableColumnSql = createDorisTableColumnSql(datasetTableFields); String dorisTableColumnSql = createDorisTableColumnSql(datasetTableFields);
boolean msg = false; boolean msg = false;