forked from github/dataease
refactor: 编辑数据集,字段不会删除重建
This commit is contained in:
parent
e08d96c4ea
commit
fb37a033c8
@ -87,6 +87,8 @@ public class DataSetTableService {
|
|||||||
private DatasetTableTaskLogMapper datasetTableTaskLogMapper;
|
private DatasetTableTaskLogMapper datasetTableTaskLogMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ExtDataSetGroupMapper extDataSetGroupMapper;
|
private ExtDataSetGroupMapper extDataSetGroupMapper;
|
||||||
|
@Resource
|
||||||
|
private DatasetTableFieldMapper datasetTableFieldMapper;
|
||||||
private static String lastUpdateTime = "${__last_update_time__}";
|
private static String lastUpdateTime = "${__last_update_time__}";
|
||||||
private static String currentUpdateTime = "${__current_update_time__}";
|
private static String currentUpdateTime = "${__current_update_time__}";
|
||||||
|
|
||||||
@ -242,7 +244,7 @@ public class DataSetTableService {
|
|||||||
if (update == 1) {
|
if (update == 1) {
|
||||||
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql") || StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql") || StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
|
||||||
// 删除所有字段,重新抽象
|
// 删除所有字段,重新抽象
|
||||||
dataSetTableFieldsService.deleteByTableId(datasetTable.getId());
|
// dataSetTableFieldsService.deleteByTableId(datasetTable.getId());
|
||||||
saveTableField(datasetTable);
|
saveTableField(datasetTable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1035,31 +1037,51 @@ public class DataSetTableService {
|
|||||||
qp = ProviderFactory.getQueryProvider(ds.getType());
|
qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(fields)) {
|
if (CollectionUtils.isNotEmpty(fields)) {
|
||||||
|
List<String> originNameList = new ArrayList<>();
|
||||||
for (int i = 0; i < fields.size(); i++) {
|
for (int i = 0; i < fields.size(); i++) {
|
||||||
TableFiled filed = fields.get(i);
|
TableFiled filed = fields.get(i);
|
||||||
System.out.println(new Gson().toJson(filed));
|
System.out.println(new Gson().toJson(filed));
|
||||||
|
originNameList.add(filed.getFieldName());
|
||||||
|
|
||||||
DatasetTableField datasetTableField = DatasetTableField.builder().build();
|
DatasetTableField datasetTableField = DatasetTableField.builder().build();
|
||||||
datasetTableField.setTableId(datasetTable.getId());
|
|
||||||
datasetTableField.setOriginName(filed.getFieldName());
|
// 物理字段名设定为唯一,查询当前数据集下是否已存在该字段,存在则update,不存在则insert
|
||||||
datasetTableField.setName(filed.getRemarks());
|
DatasetTableFieldExample datasetTableFieldExample = new DatasetTableFieldExample();
|
||||||
datasetTableField.setDataeaseName(DorisTableUtils.columnName(filed.getFieldName()));
|
// 字段名一致,认为字段没有改变
|
||||||
datasetTableField.setType(filed.getFieldType());
|
datasetTableFieldExample.createCriteria().andTableIdEqualTo(datasetTable.getId()).andOriginNameEqualTo(filed.getFieldName());
|
||||||
if (ObjectUtils.isEmpty(ds)) {
|
List<DatasetTableField> datasetTableFields = datasetTableFieldMapper.selectByExample(datasetTableFieldExample);
|
||||||
datasetTableField.setDeType(transFieldType(filed.getFieldType()));
|
if (CollectionUtils.isNotEmpty(datasetTableFields)) {
|
||||||
datasetTableField.setDeExtractType(transFieldType(filed.getFieldType()));
|
datasetTableField.setId(datasetTableFields.get(0).getId());
|
||||||
|
datasetTableField.setOriginName(filed.getFieldName());
|
||||||
|
datasetTableField.setType(filed.getFieldType());
|
||||||
|
datasetTableField.setSize(filed.getFieldSize());
|
||||||
} else {
|
} else {
|
||||||
Integer fieldType = qp.transFieldType(filed.getFieldType());
|
datasetTableField.setTableId(datasetTable.getId());
|
||||||
datasetTableField.setDeType(fieldType == 4 ? 2 : fieldType);
|
datasetTableField.setOriginName(filed.getFieldName());
|
||||||
datasetTableField.setDeExtractType(fieldType);
|
datasetTableField.setName(filed.getRemarks());
|
||||||
|
datasetTableField.setDataeaseName(DorisTableUtils.columnName(filed.getFieldName()));
|
||||||
|
datasetTableField.setType(filed.getFieldType());
|
||||||
|
if (ObjectUtils.isEmpty(ds)) {
|
||||||
|
datasetTableField.setDeType(transFieldType(filed.getFieldType()));
|
||||||
|
datasetTableField.setDeExtractType(transFieldType(filed.getFieldType()));
|
||||||
|
} else {
|
||||||
|
Integer fieldType = qp.transFieldType(filed.getFieldType());
|
||||||
|
datasetTableField.setDeType(fieldType == 4 ? 2 : fieldType);
|
||||||
|
datasetTableField.setDeExtractType(fieldType);
|
||||||
|
}
|
||||||
|
datasetTableField.setSize(filed.getFieldSize());
|
||||||
|
datasetTableField.setChecked(true);
|
||||||
|
datasetTableField.setColumnIndex(i);
|
||||||
|
datasetTableField.setLastSyncTime(syncTime);
|
||||||
|
datasetTableField.setExtField(0);
|
||||||
|
datasetTableField.setGroupType(datasetTableField.getDeType() < 2 ? "d" : "q");
|
||||||
}
|
}
|
||||||
datasetTableField.setSize(filed.getFieldSize());
|
|
||||||
datasetTableField.setChecked(true);
|
|
||||||
datasetTableField.setColumnIndex(i);
|
|
||||||
datasetTableField.setLastSyncTime(syncTime);
|
|
||||||
datasetTableField.setExtField(0);
|
|
||||||
datasetTableField.setGroupType(datasetTableField.getDeType() < 2 ? "d" : "q");
|
|
||||||
dataSetTableFieldsService.save(datasetTableField);
|
dataSetTableFieldsService.save(datasetTableField);
|
||||||
}
|
}
|
||||||
|
// delete 数据库中多余的字段
|
||||||
|
DatasetTableFieldExample datasetTableFieldExample = new DatasetTableFieldExample();
|
||||||
|
datasetTableFieldExample.createCriteria().andTableIdEqualTo(datasetTable.getId()).andOriginNameNotIn(originNameList);
|
||||||
|
datasetTableFieldMapper.deleteByExample(datasetTableFieldExample);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user