refactor: 编辑数据集,字段不会删除重建

This commit is contained in:
junjie 2021-11-04 12:34:33 +08:00
parent e08d96c4ea
commit fb37a033c8

View File

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