diff --git a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/mapper/FieldConfigMapper.java b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/mapper/FieldConfigMapper.java index 420dc89b..159cab92 100644 --- a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/mapper/FieldConfigMapper.java +++ b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/mapper/FieldConfigMapper.java @@ -37,6 +37,6 @@ public interface FieldConfigMapper extends BaseMapper { * @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 selectListByTableName(@Param("tableName") String tableName); } diff --git a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/model/entity/FieldConfigDO.java b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/model/entity/FieldConfigDO.java index 6f5950e8..a9e80f7e 100644 --- a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/model/entity/FieldConfigDO.java +++ b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/model/entity/FieldConfigDO.java @@ -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; + /** * 注释 */ diff --git a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/impl/GeneratorServiceImpl.java b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/impl/GeneratorServiceImpl.java index 0cd23b97..d5735ef7 100644 --- a/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/impl/GeneratorServiceImpl.java +++ b/continew-admin-generator/src/main/java/top/charles7c/continew/admin/generator/service/impl/GeneratorServiceImpl.java @@ -130,36 +130,29 @@ public class GeneratorServiceImpl implements GeneratorService { @Override public List listFieldConfig(String tableName, Boolean requireSync) { List fieldConfigList = fieldConfigMapper.selectListByTableName(tableName); - if (CollUtil.isEmpty(fieldConfigList)) { - Collection 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 columnList = MetaUtils.getColumns(dataSource, tableName); - // 移除已不存在的字段配置 - List columnNameList = columnList.stream().map(Column::getName).toList(); - fieldConfigList.removeIf(column -> !columnNameList.contains(column.getColumnName())); - // 新增或更新字段配置 - Map 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 latestFieldConfigList = new ArrayList<>(); + // 获取最新数据表列信息 + Collection columnList = MetaUtils.getColumns(dataSource, tableName); + // 新增或更新字段配置 + Map 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 diff --git a/continew-admin-webapi/src/main/resources/db/changelog/mysql/continew-admin_table.sql b/continew-admin-webapi/src/main/resources/db/changelog/mysql/continew-admin_table.sql index 91bb2f98..0d5afcd9 100644 --- a/continew-admin-webapi/src/main/resources/db/changelog/mysql/continew-admin_table.sql +++ b/continew-admin-webapi/src/main/resources/db/changelog/mysql/continew-admin_table.sql @@ -294,6 +294,7 @@ CREATE TABLE IF NOT EXISTS `gen_field_config` ( `column_size` bigint(20) DEFAULT NULL COMMENT '列大小', `field_name` varchar(64) NOT NULL COMMENT '字段名称', `field_type` varchar(25) NOT NULL COMMENT '字段类型', + `field_sort` int NOT NULL DEFAULT 999 COMMENT '字段排序', `comment` varchar(512) DEFAULT NULL COMMENT '注释', `is_required` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否必填', `show_in_list` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否在列表中显示', diff --git a/continew-admin-webapi/src/main/resources/db/changelog/postgresql/continew-admin_table.sql b/continew-admin-webapi/src/main/resources/db/changelog/postgresql/continew-admin_table.sql index a95bfe6b..63eaec29 100644 --- a/continew-admin-webapi/src/main/resources/db/changelog/postgresql/continew-admin_table.sql +++ b/continew-admin-webapi/src/main/resources/db/changelog/postgresql/continew-admin_table.sql @@ -490,6 +490,7 @@ CREATE TABLE IF NOT EXISTS "gen_field_config" ( "column_size" int8 DEFAULT NULL, "field_name" varchar(64) NOT NULL, "field_type" varchar(25) NOT NULL, + "field_sort" int4 NOT NULL DEFAULT 999, "comment" varchar(512) DEFAULT NULL, "is_required" bool NOT NULL DEFAULT true, "show_in_list" bool NOT NULL DEFAULT true, @@ -506,6 +507,7 @@ COMMENT ON COLUMN "gen_field_config"."column_type" IS '列类型'; COMMENT ON COLUMN "gen_field_config"."column_size" IS '列大小'; COMMENT ON COLUMN "gen_field_config"."field_name" IS '字段名称'; COMMENT ON COLUMN "gen_field_config"."field_type" IS '字段类型'; +COMMENT ON COLUMN "gen_field_config"."field_sort" IS '字段排序'; COMMENT ON COLUMN "gen_field_config"."comment" IS '注释'; COMMENT ON COLUMN "gen_field_config"."is_required" IS '是否必填'; COMMENT ON COLUMN "gen_field_config"."show_in_list" IS '是否在列表中显示';