diff --git a/ballcat-codegen-backend/src/main/java/com/hccake/ballcat/codegen/database/DbTypeConverterManager.java b/ballcat-codegen-backend/src/main/java/com/hccake/ballcat/codegen/database/DbTypeConverterManager.java index 307fcf9956fa9eebac6df91c5a2bb82d2db2b8fb..29126ec657aa0dc2d36706d9fdc3fac49588a733 100644 --- a/ballcat-codegen-backend/src/main/java/com/hccake/ballcat/codegen/database/DbTypeConverterManager.java +++ b/ballcat-codegen-backend/src/main/java/com/hccake/ballcat/codegen/database/DbTypeConverterManager.java @@ -1,6 +1,8 @@ package com.hccake.ballcat.codegen.database; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.annotation.DbType; +import com.hccake.ballcat.codegen.constant.TemplateEntryConstants; import com.hccake.ballcat.codegen.converter.DbColumnTypeConverter; import com.hccake.ballcat.codegen.model.entity.DbColumnType; import com.hccake.ballcat.codegen.model.entity.FieldType; @@ -10,7 +12,12 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; /** * @author hccake @@ -28,10 +35,21 @@ public class DbTypeConverterManager { */ public List getDbTypeList(DbType dbType, String templateGroupKey) { List fieldTypeList = fieldTypeService.selectDbTypeList(dbType, templateGroupKey); - if (ObjectUtils.isEmpty(fieldTypeList)) { - fieldTypeList = fieldTypeService.selectDbTypeList(dbType); + Map fieldTypeMap = new HashMap<>(fieldTypeList.size()); + for (FieldType fieldType : fieldTypeList) { + String columnKey = fieldType.getColumnKey(); + FieldType fieldTypeMapValue = fieldTypeMap.get(columnKey); + if (Objects.isNull(fieldTypeMapValue)) { + fieldTypeMap.put(columnKey, fieldType); + } + else { + String groupKey = fieldTypeMapValue.getGroupKey(); + if (!Objects.equals(TemplateEntryConstants.TREE_ROOT_ID, groupKey)) { + fieldTypeMap.put(columnKey, fieldType); + } + } } - return fieldTypeList; + return new ArrayList<>(fieldTypeMap.values()); } /** diff --git a/ballcat-codegen-backend/src/main/java/com/hccake/ballcat/codegen/service/impl/FieldTypeServiceImpl.java b/ballcat-codegen-backend/src/main/java/com/hccake/ballcat/codegen/service/impl/FieldTypeServiceImpl.java index dace46b05000b79d5f607204cac2741c34da42d3..ffeff5fa4e60da5d36a7b30df596e3065872aefc 100644 --- a/ballcat-codegen-backend/src/main/java/com/hccake/ballcat/codegen/service/impl/FieldTypeServiceImpl.java +++ b/ballcat-codegen-backend/src/main/java/com/hccake/ballcat/codegen/service/impl/FieldTypeServiceImpl.java @@ -1,6 +1,7 @@ package com.hccake.ballcat.codegen.service.impl; import com.baomidou.mybatisplus.annotation.DbType; +import com.hccake.ballcat.codegen.constant.TemplateEntryConstants; import com.hccake.ballcat.codegen.mapper.FieldTypeMapper; import com.hccake.ballcat.codegen.model.entity.FieldType; import com.hccake.ballcat.codegen.model.qo.FieldTypeQO; @@ -40,7 +41,7 @@ public class FieldTypeServiceImpl extends ExtendServiceImpl selectDbTypeList(DbType dbType, String templateGroupKey) { LambdaQueryWrapperX wrapper = WrappersX.lambdaQueryX(FieldType.class) .eqIfPresent(FieldType::getDbType, DbTypeUtils.getDbType(dbType)) - .eqIfPresent(FieldType::getGroupKey, templateGroupKey); + .in(FieldType::getGroupKey, TemplateEntryConstants.TREE_ROOT_ID, templateGroupKey); return fieldTypeMapper.selectList(wrapper); }