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()); } /**