mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +08:00 
			
		
		
		
	feat(generator): 代码生成同步最新数据表结构支持同步排序
This commit is contained in:
		| @@ -37,6 +37,6 @@ public interface FieldConfigMapper extends BaseMapper<FieldConfigDO> { | ||||
|      * @param tableName 表名称 | ||||
|      * @return 字段配置信息 | ||||
|      */ | ||||
|     @Select("SELECT * FROM gen_field_config WHERE table_name = #{tableName}") | ||||
|     @Select("SELECT * FROM gen_field_config WHERE table_name = #{tableName} ORDER BY field_sort ASC") | ||||
|     List<FieldConfigDO> selectListByTableName(@Param("tableName") String tableName); | ||||
| } | ||||
|   | ||||
| @@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.annotation.TableField; | ||||
| import com.baomidou.mybatisplus.annotation.TableName; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import jakarta.validation.constraints.NotBlank; | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| import lombok.NonNull; | ||||
| @@ -93,6 +94,13 @@ public class FieldConfigDO implements Serializable { | ||||
|     @NotBlank(message = "字段类型不能为空") | ||||
|     private String fieldType; | ||||
|  | ||||
|     /** | ||||
|      * 字段排序 | ||||
|      */ | ||||
|     @Schema(description = "字段排序", example = "字段排序") | ||||
|     @NotNull(message = "字段排序不能为空") | ||||
|     private Integer fieldSort; | ||||
|  | ||||
|     /** | ||||
|      * 注释 | ||||
|      */ | ||||
|   | ||||
| @@ -130,36 +130,29 @@ public class GeneratorServiceImpl implements GeneratorService { | ||||
|     @Override | ||||
|     public List<FieldConfigDO> listFieldConfig(String tableName, Boolean requireSync) { | ||||
|         List<FieldConfigDO> fieldConfigList = fieldConfigMapper.selectListByTableName(tableName); | ||||
|         if (CollUtil.isEmpty(fieldConfigList)) { | ||||
|             Collection<Column> columnList = MetaUtils.getColumns(dataSource, tableName); | ||||
|             return columnList.stream().map(FieldConfigDO::new).toList(); | ||||
|         if (CollUtil.isNotEmpty(fieldConfigList) && Boolean.FALSE.equals(requireSync)) { | ||||
|             return fieldConfigList; | ||||
|         } | ||||
|         // 同步最新数据表列信息 | ||||
|         if (Boolean.TRUE.equals(requireSync)) { | ||||
|             Collection<Column> columnList = MetaUtils.getColumns(dataSource, tableName); | ||||
|             // 移除已不存在的字段配置 | ||||
|             List<String> columnNameList = columnList.stream().map(Column::getName).toList(); | ||||
|             fieldConfigList.removeIf(column -> !columnNameList.contains(column.getColumnName())); | ||||
|             // 新增或更新字段配置 | ||||
|             Map<String, FieldConfigDO> fieldConfigMap = fieldConfigList.stream() | ||||
|                 .collect(Collectors.toMap(FieldConfigDO::getColumnName, Function.identity(), (key1, key2) -> key2)); | ||||
|             for (Column column : columnList) { | ||||
|                 FieldConfigDO fieldConfig = fieldConfigMap.get(column.getName()); | ||||
|                 if (null != fieldConfig) { | ||||
|                     // 更新已有字段配置 | ||||
|                     String columnType = StrUtil.splitToArray(column.getTypeName(), StringConstants.SPACE)[0] | ||||
|                         .toLowerCase(); | ||||
|                     fieldConfig.setColumnType(columnType); | ||||
|                     fieldConfig.setColumnSize(Convert.toStr(column.getSize())); | ||||
|                     fieldConfig.setComment(column.getComment()); | ||||
|                 } else { | ||||
|                     // 新增字段配置 | ||||
|                     fieldConfig = new FieldConfigDO(column); | ||||
|                     fieldConfigList.add(fieldConfig); | ||||
|                 } | ||||
|         List<FieldConfigDO> latestFieldConfigList = new ArrayList<>(); | ||||
|         // 获取最新数据表列信息 | ||||
|         Collection<Column> columnList = MetaUtils.getColumns(dataSource, tableName); | ||||
|         // 新增或更新字段配置 | ||||
|         Map<String, FieldConfigDO> fieldConfigMap = fieldConfigList.stream() | ||||
|             .collect(Collectors.toMap(FieldConfigDO::getColumnName, Function.identity(), (key1, key2) -> key2)); | ||||
|         int i = 1; | ||||
|         for (Column column : columnList) { | ||||
|             FieldConfigDO fieldConfig = Optional.ofNullable(fieldConfigMap.get(column.getName())) | ||||
|                 .orElseGet(() -> new FieldConfigDO(column)); | ||||
|             fieldConfig.setFieldSort(i++); | ||||
|             // 更新已有字段配置 | ||||
|             if (null != fieldConfig.getCreateTime()) { | ||||
|                 String columnType = StrUtil.splitToArray(column.getTypeName(), StringConstants.SPACE)[0].toLowerCase(); | ||||
|                 fieldConfig.setColumnType(columnType); | ||||
|                 fieldConfig.setColumnSize(Convert.toStr(column.getSize())); | ||||
|             } | ||||
|             latestFieldConfigList.add(fieldConfig); | ||||
|         } | ||||
|         return fieldConfigList; | ||||
|         return latestFieldConfigList; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
		Reference in New Issue
	
	Block a user