fix:修复远程excel数据源同步数据的问题 (#15294)

Co-authored-by: taojinlong <jinlong@fit2cloud.com>
This commit is contained in:
taojinlong
2025-03-11 23:34:35 +08:00
committed by GitHub
parent e84cf2e46a
commit fd71b63841
6 changed files with 27 additions and 11 deletions

View File

@@ -927,21 +927,13 @@ public class DatasourceServer implements DatasourceApi {
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(transDTO(coreDatasource));
List<DatasetTableDTO> datasetTableDTOS = ExcelUtils.getTables(datasourceRequest);
List<ExcelSheetData> excelSheetDataList = new ArrayList<>();
for (ExcelSheetData sheet : excelFileData.getSheets()) {
for (DatasetTableDTO datasetTableDTO : datasetTableDTOS) {
if (excelDataTableName(datasetTableDTO.getTableName()).equals(sheet.getTableName())) {
List<TableField> newTableFields = sheet.getFields();
datasourceRequest.setTable(datasetTableDTO.getTableName());
List<TableField> oldTableFields = ExcelUtils.getTableFields(datasourceRequest);
if (isEqual(newTableFields, oldTableFields)) {
sheet.setDeTableName(datasetTableDTO.getTableName());
excelSheetDataList.add(sheet);
}
sheet.setDeTableName(datasetTableDTO.getTableName());
}
}
}
excelFileData.setSheets(excelSheetDataList);
}
for (ExcelSheetData sheet : excelFileData.getSheets()) {
for (int i = 0; i < sheet.getFields().size() - 1; i++) {

View File

@@ -8,7 +8,7 @@ defineProps({
<template>
<div class="base-info-item">
<p class="label">{{ label }}</p>
<p class="value">
<p class="value ellipsis">
<slot></slot>
</p>
</div>

View File

@@ -190,7 +190,17 @@ const initApiItem = (
) => {
pluginDs.value = pluginDsList
pluginIndex.value = indexPlugin
isPlugin.value = isPluginDs
if (!isPluginDs) {
const arr = pluginDs.value.filter(ele => {
return ele.type === from.type
})
if (arr && arr.length > 0) {
isPlugin.value = true
}
} else {
isPlugin.value = isPluginDs
}
copyItem.value = val.copy
copyDs.value = from.copy
dsType.value = from.type

View File

@@ -252,6 +252,10 @@ const validateExcel = () => {
}
const clearForm = () => {
state.excelData = []
activeTab.value = ''
tabList.value = []
Object.assign(sheetObj, cloneDeep(defaultSheetObj))
return remoteExcelForm.value.clearValidate()
}

View File

@@ -711,6 +711,7 @@ const init = (nodeInfo: Form | Param, id?: string, res?: object, supportSetKey:
}
nextTick(() => {
detail?.value?.clearForm()
excelRemote?.value?.clearForm()
xpack?.value?.invokeMethod({
methodName: 'clearForm',
args: []
@@ -725,6 +726,13 @@ const drawTitle = computed(() => {
if (creator && id && currentDsType.value == 'Excel') {
return editType === 1 ? t('data_source.append_data') : t('data_source.replace_data')
}
if (currentDsType.value == 'ExcelRemote') {
return editDs.value
? !form2.id
? t('data_source.copy_data_source')
: t('datasource.modify')
: t('data_source.create_data_source')
}
return editDs.value
? !form.id
? t('data_source.copy_data_source')

View File

@@ -33,6 +33,7 @@ import org.slf4j.LoggerFactory;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.security.cert.X509Certificate;
import java.util.*;
@@ -403,6 +404,7 @@ public class HttpClientUtil {
}
private static String extractFileName(HttpResponse response, String url) {
url = URLDecoder.decode(url);
String fileName = "";
String disposition = response.getHeaders("Content-Disposition").toString();
if (disposition != null) {