forked from github/dataease
Merge pull request #223 from dataease/pr@dev@feat_excel上传后可修改字段类型再保存
feat: excel上传后可编辑字段类型再保存
This commit is contained in:
commit
0188ca497c
@ -1,6 +1,7 @@
|
|||||||
package io.dataease.controller.request.dataset;
|
package io.dataease.controller.request.dataset;
|
||||||
|
|
||||||
import io.dataease.base.domain.DatasetTable;
|
import io.dataease.base.domain.DatasetTable;
|
||||||
|
import io.dataease.datasource.dto.TableFiled;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@ -21,4 +22,5 @@ public class DataSetTableRequest extends DatasetTable {
|
|||||||
private Integer editType;
|
private Integer editType;
|
||||||
private Boolean isRename;
|
private Boolean isRename;
|
||||||
private List<String> typeFilter;
|
private List<String> typeFilter;
|
||||||
|
private List<TableFiled> fields;
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ public class DataSetTableService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void extractData(DataSetTableRequest datasetTable) throws Exception{
|
private void extractData(DataSetTableRequest datasetTable) throws Exception {
|
||||||
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
|
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
|
||||||
commonThreadPool.addTask(() -> {
|
commonThreadPool.addTask(() -> {
|
||||||
extractDataService.extractExcelData(datasetTable.getId(), "all_scope");
|
extractDataService.extractExcelData(datasetTable.getId(), "all_scope");
|
||||||
@ -154,7 +154,7 @@ public class DataSetTableService {
|
|||||||
});
|
});
|
||||||
} else if (datasetTable.getEditType() == 1) {
|
} else if (datasetTable.getEditType() == 1) {
|
||||||
commonThreadPool.addTask(() -> {
|
commonThreadPool.addTask(() -> {
|
||||||
extractDataService.extractExcelData(datasetTable.getId(), "add_scope");
|
extractDataService.extractExcelData(datasetTable.getId(), "add_scope");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -664,11 +664,12 @@ public class DataSetTableService {
|
|||||||
datasourceRequest.setQuery(sqlAsTable);
|
datasourceRequest.setQuery(sqlAsTable);
|
||||||
fields = datasourceProvider.fetchResultField(datasourceRequest);
|
fields = datasourceProvider.fetchResultField(datasourceRequest);
|
||||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
|
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
|
||||||
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
/*DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
||||||
String path = dataTableInfoDTO.getData();
|
String path = dataTableInfoDTO.getData();
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
Map<String, Object> map = parseExcel(path.substring(path.lastIndexOf("/") + 1), new FileInputStream(file), false);
|
Map<String, Object> map = parseExcel(path.substring(path.lastIndexOf("/") + 1), new FileInputStream(file), false);
|
||||||
fields = (List<TableFiled>) map.get("fields");
|
fields = (List<TableFiled>) map.get("fields");*/
|
||||||
|
fields = dataSetTableRequest.getFields();
|
||||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
||||||
// save field
|
// save field
|
||||||
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
||||||
@ -882,7 +883,7 @@ public class DataSetTableService {
|
|||||||
String filename = file.getOriginalFilename();
|
String filename = file.getOriginalFilename();
|
||||||
// parse file
|
// parse file
|
||||||
Map<String, Object> fileMap = parseExcel(filename, file.getInputStream(), true);
|
Map<String, Object> fileMap = parseExcel(filename, file.getInputStream(), true);
|
||||||
if(StringUtils.isNotEmpty(tableId)){
|
if (StringUtils.isNotEmpty(tableId)) {
|
||||||
List<DatasetTableField> datasetTableFields = dataSetTableFieldsService.getFieldsByTableId(tableId);
|
List<DatasetTableField> datasetTableFields = dataSetTableFieldsService.getFieldsByTableId(tableId);
|
||||||
datasetTableFields.sort((o1, o2) -> {
|
datasetTableFields.sort((o1, o2) -> {
|
||||||
if (o1.getColumnIndex() == null) {
|
if (o1.getColumnIndex() == null) {
|
||||||
@ -893,9 +894,9 @@ public class DataSetTableService {
|
|||||||
}
|
}
|
||||||
return o1.getColumnIndex().compareTo(o2.getColumnIndex());
|
return o1.getColumnIndex().compareTo(o2.getColumnIndex());
|
||||||
});
|
});
|
||||||
List<TableFiled> fields = (List<TableFiled>)fileMap.get("fields");
|
List<TableFiled> fields = (List<TableFiled>) fileMap.get("fields");
|
||||||
List<String> newFields = fields.stream().map(TableFiled::getRemarks).collect(Collectors.toList());
|
List<String> newFields = fields.stream().map(TableFiled::getRemarks).collect(Collectors.toList());
|
||||||
List<String> oldFields = datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList());
|
List<String> oldFields = datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList());
|
||||||
if (!oldFields.equals(newFields)) {
|
if (!oldFields.equals(newFields)) {
|
||||||
DataEaseException.throwException(Translator.get("i18n_excel_colume_change"));
|
DataEaseException.throwException(Translator.get("i18n_excel_colume_change"));
|
||||||
}
|
}
|
||||||
@ -1073,7 +1074,7 @@ public class DataSetTableService {
|
|||||||
double eps = 1e-10;
|
double eps = 1e-10;
|
||||||
if (value - Math.floor(value) < eps) {
|
if (value - Math.floor(value) < eps) {
|
||||||
if (cellType) {
|
if (cellType) {
|
||||||
if (StringUtils.isEmpty(tableFiled.getFieldType()) || tableFiled.getFieldType().equalsIgnoreCase("TEXT")){
|
if (StringUtils.isEmpty(tableFiled.getFieldType()) || tableFiled.getFieldType().equalsIgnoreCase("TEXT")) {
|
||||||
tableFiled.setFieldType("LONG");
|
tableFiled.setFieldType("LONG");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1124,7 +1125,7 @@ public class DataSetTableService {
|
|||||||
double eps = 1e-10;
|
double eps = 1e-10;
|
||||||
if (value - Math.floor(value) < eps) {
|
if (value - Math.floor(value) < eps) {
|
||||||
if (cellType) {
|
if (cellType) {
|
||||||
if (StringUtils.isEmpty(tableFiled.getFieldType()) || tableFiled.getFieldType().equalsIgnoreCase("TEXT")){
|
if (StringUtils.isEmpty(tableFiled.getFieldType()) || tableFiled.getFieldType().equalsIgnoreCase("TEXT")) {
|
||||||
tableFiled.setFieldType("LONG");
|
tableFiled.setFieldType("LONG");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,52 @@
|
|||||||
:field="field.fieldName"
|
:field="field.fieldName"
|
||||||
:title="field.remarks"
|
:title="field.remarks"
|
||||||
:resizable="true"
|
:resizable="true"
|
||||||
/>
|
>
|
||||||
|
<template slot="header" slot-scope="scope">
|
||||||
|
<span v-if="!param.tableId" style="display: flex;align-items: center;">
|
||||||
|
<span style="display: inline-block;font-size: 12px;">
|
||||||
|
<div style="display: inline-block;">
|
||||||
|
<el-select v-model="field.fieldType" size="mini" style="display: inline-block;width: 120px;">
|
||||||
|
<el-option
|
||||||
|
v-for="item in fieldOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
<span style="float: left">
|
||||||
|
<svg-icon v-if="item.value === 'TEXT'" icon-class="field_text" class="field-icon-text" />
|
||||||
|
<svg-icon v-if="item.value === 'DATETIME'" icon-class="field_time" class="field-icon-time" />
|
||||||
|
<svg-icon v-if="item.value === 'LONG' || item.value === 'DOUBLE'" icon-class="field_value" class="field-icon-value" />
|
||||||
|
</span>
|
||||||
|
<span style="float: left; color: #8492a6; font-size: 12px">{{ item.label }}</span>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
<!-- <span style="margin-left: 8px;">-->
|
||||||
|
<!-- <span v-if="field.fieldType === 'TEXT'">-->
|
||||||
|
<!-- <svg-icon v-if="field.fieldType === 'TEXT'" icon-class="field_text" class="field-icon-text" />-->
|
||||||
|
<!-- <span class="field-class">{{ $t('dataset.text') }}</span>-->
|
||||||
|
<!-- </span>-->
|
||||||
|
<!-- <span v-if="field.fieldType === 'DATETIME'">-->
|
||||||
|
<!-- <svg-icon v-if="field.fieldType === 'DATETIME'" icon-class="field_time" class="field-icon-time" />-->
|
||||||
|
<!-- <span class="field-class">{{ $t('dataset.time') }}</span>-->
|
||||||
|
<!-- </span>-->
|
||||||
|
<!-- <span v-if="field.fieldType === 'LONG' || field.fieldType === 'DOUBLE'">-->
|
||||||
|
<!-- <svg-icon v-if="field.fieldType === 'LONG' || field.fieldType === 'DOUBLE'" icon-class="field_value" class="field-icon-value" />-->
|
||||||
|
<!-- <span v-if="field.fieldType === 'LONG'" class="field-class">{{ $t('dataset.value') }}</span>-->
|
||||||
|
<!-- <span v-if="field.fieldType === 'DOUBLE'" class="field-class">{{ $t('dataset.value') + '(' + $t('dataset.float') + ')' }}</span>-->
|
||||||
|
<!-- </span>-->
|
||||||
|
<!-- </span>-->
|
||||||
|
</span>
|
||||||
|
<span style="font-size: 12px;margin-left: 10px;">
|
||||||
|
{{ field.remarks }}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<span v-else style="font-size: 12px;">
|
||||||
|
{{ field.remarks }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</ux-table-column>
|
||||||
</ux-grid>
|
</ux-grid>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -109,7 +154,13 @@ export default {
|
|||||||
headers: { Authorization: token, 'Accept-Language': i18n.locale.replace('_', '-') },
|
headers: { Authorization: token, 'Accept-Language': i18n.locale.replace('_', '-') },
|
||||||
baseUrl: process.env.VUE_APP_BASE_API,
|
baseUrl: process.env.VUE_APP_BASE_API,
|
||||||
path: '',
|
path: '',
|
||||||
uploading: false
|
uploading: false,
|
||||||
|
fieldOptions: [
|
||||||
|
{ label: this.$t('dataset.text'), value: 'TEXT' },
|
||||||
|
{ label: this.$t('dataset.time'), value: 'DATETIME' },
|
||||||
|
{ label: this.$t('dataset.value'), value: 'LONG' },
|
||||||
|
{ label: this.$t('dataset.value') + '(' + this.$t('dataset.float') + ')', value: 'DOUBLE' }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@ -207,7 +258,8 @@ export default {
|
|||||||
type: 'excel',
|
type: 'excel',
|
||||||
mode: parseInt(this.mode),
|
mode: parseInt(this.mode),
|
||||||
// info: '{"data":"' + this.path + '"}',
|
// info: '{"data":"' + this.path + '"}',
|
||||||
info: JSON.stringify({ data: this.path })
|
info: JSON.stringify({ data: this.path }),
|
||||||
|
fields: this.fields
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
table = {
|
table = {
|
||||||
|
Loading…
Reference in New Issue
Block a user