fix: 替换excel时,提示影响计算字段

This commit is contained in:
taojinlong 2022-05-30 01:11:53 +08:00
parent a132fa3891
commit 2ae62dff1e
6 changed files with 76 additions and 17 deletions

View File

@ -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;
}

View File

@ -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()

View File

@ -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',

View File

@ -1249,7 +1249,8 @@ export default {
exec: '執行一次',
confirm_exec: '手動觸發執行?',
change_success: '狀態切換成功',
excel_replace_msg: '可能會影響計算欄位、自定義數据集、關聯數据集、儀錶板等,確認替換?'
excel_replace_msg: '可能會影響計算欄位、自定義數据集、關聯數据集、儀錶板等,確認替換?',
effect_ext_field: '會影響計算欄位'
},
field_group_type: '分類',
location: '地理位置',

View File

@ -1250,7 +1250,8 @@ export default {
exec: '执行一次',
confirm_exec: '手动触发执行?',
change_success: '状态切换成功',
excel_replace_msg: '可能会影响计算字段、自定义数据集、关联数据集、仪表板等,确认替换?'
excel_replace_msg: '可能会影响自定义数据集、关联数据集、仪表板等,确认替换?',
effect_ext_field: '会影响计算字段'
},
field_group_type: '分类',
location: '地理位置',

View File

@ -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 {