forked from github/dataease
fix: 替换excel时,提示影响计算字段
This commit is contained in:
parent
620661f1bd
commit
a4a665203d
@ -3,6 +3,7 @@ package io.dataease.dto.dataset;
|
||||
import io.dataease.plugins.common.dto.datasource.TableField;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -29,4 +30,7 @@ public class ExcelSheetData {
|
||||
private String path;
|
||||
@ApiModelProperty("字段MD5")
|
||||
private String fieldsMd5;
|
||||
@ApiModelProperty("字段变更")
|
||||
private Boolean changeFiled = false;
|
||||
private Boolean effectExtField = false;
|
||||
}
|
||||
|
@ -66,6 +66,8 @@ import java.text.MessageFormat;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static io.dataease.commons.constants.ColumnPermissionConstants.Desensitization_desc;
|
||||
@ -1890,9 +1892,9 @@ public class DataSetTableService {
|
||||
List<ExcelSheetData> excelSheetDataList = parseExcel2(filename, file.getInputStream(), true);
|
||||
List<ExcelSheetData> retrunSheetDataList = new ArrayList<>();
|
||||
|
||||
if (StringUtils.isNotEmpty(tableId) && editType == 1) {
|
||||
List<DatasetTableField> datasetTableFields = dataSetTableFieldsService.getFieldsByTableId(tableId)
|
||||
.stream().filter(datasetTableField -> datasetTableField.getExtField() == 0).collect(Collectors.toList());
|
||||
if (StringUtils.isNotEmpty(tableId)) {
|
||||
List<DatasetTableField> fields = dataSetTableFieldsService.getFieldsByTableId(tableId);
|
||||
List<DatasetTableField> datasetTableFields = fields.stream().filter(datasetTableField -> datasetTableField.getExtField() == 0).collect(Collectors.toList());
|
||||
datasetTableFields.sort((o1, o2) -> {
|
||||
if (o1.getColumnIndex() == null) {
|
||||
return -1;
|
||||
@ -1904,18 +1906,57 @@ public class DataSetTableService {
|
||||
});
|
||||
|
||||
List<String> oldFields = datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList());
|
||||
for (ExcelSheetData excelSheetData : excelSheetDataList) {
|
||||
List<TableField> fields = excelSheetData.getFields();
|
||||
List<String> newFields = fields.stream().map(TableField::getRemarks).collect(Collectors.toList());
|
||||
if (oldFields.equals(newFields)) {
|
||||
|
||||
if(editType == 1){
|
||||
for (ExcelSheetData excelSheetData : excelSheetDataList) {
|
||||
List<TableField> tableFields = excelSheetData.getFields();
|
||||
List<String> newFields = tableFields.stream().map(TableField::getRemarks).collect(Collectors.toList());
|
||||
if (oldFields.equals(newFields)) {
|
||||
retrunSheetDataList.add(excelSheetData);
|
||||
}
|
||||
}
|
||||
if (retrunSheetDataList.size() == 0) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_column_change"));
|
||||
}
|
||||
}else {
|
||||
List<DatasetTableField> extFields = fields.stream().filter(datasetTableField -> datasetTableField.getExtField() > 0).collect(Collectors.toList());
|
||||
List<String> extFieldsRefIds = new ArrayList<>();
|
||||
for (DatasetTableField extField : extFields) {
|
||||
String originField = extField.getOriginName().replaceAll("[\\t\\n\\r]]", "");
|
||||
String regex = "\\[(.*?)]";
|
||||
Pattern pattern = Pattern.compile(regex);
|
||||
Matcher matcher = pattern.matcher(originField);
|
||||
while (matcher.find()) {
|
||||
String id = matcher.group(1);
|
||||
if(!extFieldsRefIds.contains(id)){
|
||||
extFieldsRefIds.add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
List<String> extFieldsRefNames = datasetTableFields.stream().filter(datasetTableField -> extFieldsRefIds.contains(datasetTableField.getId())).map(DatasetTableField::getOriginName).collect(Collectors.toList());
|
||||
for (ExcelSheetData excelSheetData : excelSheetDataList) {
|
||||
List<TableField> tableFields = excelSheetData.getFields();
|
||||
List<String> newFields = tableFields.stream().map(TableField::getRemarks).collect(Collectors.toList());
|
||||
if (oldFields.equals(newFields)) {
|
||||
excelSheetData.setChangeFiled(false);
|
||||
}else {
|
||||
excelSheetData.setChangeFiled(true);
|
||||
}
|
||||
boolean effectExtField = false;
|
||||
for (String extFieldsRefName : extFieldsRefNames) {
|
||||
if(!newFields.contains(extFieldsRefName)){
|
||||
effectExtField = true;
|
||||
}
|
||||
}
|
||||
excelSheetData.setEffectExtField(effectExtField);
|
||||
|
||||
retrunSheetDataList.add(excelSheetData);
|
||||
}
|
||||
if (retrunSheetDataList.size() == 0) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_column_change"));
|
||||
}
|
||||
}
|
||||
|
||||
if (retrunSheetDataList.size() == 0) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_column_change"));
|
||||
}
|
||||
} else {
|
||||
}else {
|
||||
retrunSheetDataList = excelSheetDataList;
|
||||
}
|
||||
retrunSheetDataList = retrunSheetDataList.stream()
|
||||
|
@ -1249,7 +1249,8 @@ export default {
|
||||
exec: 'Execute Once',
|
||||
confirm_exec: 'Manual trigger execution?',
|
||||
change_success: 'State switch successful',
|
||||
excel_replace_msg: 'Calculation fields, custom datasets, associated datasets, dashboards, etc. may be affected. Confirm the replacement?'
|
||||
excel_replace_msg: 'Calculation fields, custom datasets, associated datasets, dashboards, etc. may be affected. Confirm the replacement?',
|
||||
effect_ext_field: 'Affect calculated fields'
|
||||
},
|
||||
field_group_type: 'Type',
|
||||
location: 'Location',
|
||||
|
@ -1249,7 +1249,8 @@ export default {
|
||||
exec: '執行一次',
|
||||
confirm_exec: '手動觸發執行?',
|
||||
change_success: '狀態切換成功',
|
||||
excel_replace_msg: '可能會影響計算欄位、自定義數据集、關聯數据集、儀錶板等,確認替換?'
|
||||
excel_replace_msg: '可能會影響計算欄位、自定義數据集、關聯數据集、儀錶板等,確認替換?',
|
||||
effect_ext_field: '會影響計算欄位'
|
||||
},
|
||||
field_group_type: '分類',
|
||||
location: '地理位置',
|
||||
|
@ -1250,7 +1250,8 @@ export default {
|
||||
exec: '执行一次',
|
||||
confirm_exec: '手动触发执行?',
|
||||
change_success: '状态切换成功',
|
||||
excel_replace_msg: '可能会影响计算字段、自定义数据集、关联数据集、仪表板等,确认替换?'
|
||||
excel_replace_msg: '可能会影响自定义数据集、关联数据集、仪表板等,确认替换?',
|
||||
effect_ext_field: '会影响计算字段'
|
||||
},
|
||||
field_group_type: '分类',
|
||||
location: '地理位置',
|
||||
|
@ -310,6 +310,8 @@ export default {
|
||||
var validate = true
|
||||
var selectedSheet = []
|
||||
var sheetFileMd5 = []
|
||||
var effectExtField = false
|
||||
var changeFiled = false
|
||||
var selectNode = this.$refs.tree.getCheckedNodes()
|
||||
for (var i = 0; i < selectNode.length; i++) {
|
||||
if (selectNode[i].sheet) {
|
||||
@ -331,6 +333,12 @@ export default {
|
||||
})
|
||||
return
|
||||
}
|
||||
if(selectNode[i].effectExtField){
|
||||
effectExtField = true
|
||||
}
|
||||
if(selectNode[i].changeFiled){
|
||||
changeFiled = true
|
||||
}
|
||||
selectedSheet.push(selectNode[i])
|
||||
sheetFileMd5.push(selectNode[i].fieldsMd5)
|
||||
}
|
||||
@ -366,8 +374,11 @@ export default {
|
||||
editType: this.param.editType ? this.param.editType : 0
|
||||
}
|
||||
}
|
||||
if (this.param.editType === 0 && this.param.tableId) {
|
||||
$confirm(i18n.t('dataset.task.excel_replace_msg'), () => {
|
||||
|
||||
if (this.param.editType === 0 && this.param.tableId && (effectExtField || changeFiled)) {
|
||||
|
||||
var msg = effectExtField ? i18n.t('dataset.task.effect_ext_field') + ', ' + i18n.t('dataset.task.excel_replace_msg') : i18n.t('dataset.task.excel_replace_msg')
|
||||
$confirm(msg, () => {
|
||||
this.saveExcelData(sheetFileMd5, table)
|
||||
})
|
||||
}else {
|
||||
|
Loading…
Reference in New Issue
Block a user