通用可扩展表

通用可扩展表flexibletabl 通用可扩展表 无限字段扩展 低代码

1、需求背景

在日常开发中经常会遇到一类需求,比如要记录学生的信息,通常的做法是在数据库创建一张学生表,根据需求确定好表的字段,然后开发增、删、改、查的功能,包括前端和后台。但系统使用的过程中有时需要记录多一些信息,这时就得在表里增加字段,前端后台也得进行开发、测试、发布。更常见的是,当系统开发完成,给不同的客户部署的时候,每家客户需要记录的信息都是不同的,因此就要针对客户的需求,再修改数据库的表设计,前端后台也得跟着修改,不够灵活。

因此,我们设计了一个可伸缩表适配功能flexible table adapter,针对任意表,可无限字段扩展,支持主流字段类型,所有字段支持任意组合查询、排序;查询支持多种操作符,如大于、小于、等于、不等于、区间、包括、包含等;支持记录增删改查、导入导出Excel,导出修改再导入更新;前后端组件化、分层模块化;单表维护、多表复杂查询可实现无代码化,配置即可不需开发,可显著有效提高开发效率。

技术栈:PostgreSQL、Java、React Antd

2、功能介绍

2.1 数据表

首先,在数据库创建表,如:t_student。

create table t_student ( sid int8 primary key, --主键 name varchar(100), my_number numeric(12,2), my_timestamp timestamp(6), my_date date, my_time time(6), my_bool bool, my_varchar varchar(255), my_sex varchar(30), my_int int4, my_text text, my_jsonb jsonb, my_add varchar(255), my_long int8, --外键 constraint fkey_user_id foreign key (my_long) sys_user (user_id) );

2.2 维护表

其次,在系统创建该表。

属性

描述

表格编码

数据库中的表名。

表格名称

表的中文描述名称。导出excel时,文件名为表格名称+日期。

表格类型

数据字典:TABLE_TYPE,取值包括[表格]和[存储过程]。

表格状态

启用或禁用,如果禁用相当该表没有在系统定义。

值表

扩展字段(非数据库表字段)的值存储的值表,不填默认sys_table_field_value

SQL

存储过程/复杂查询的SQL。

注:flexible table adapter除了支持单表的无代码维护,还支持复杂查询,只需写一条SQL。

2.3 维护字段分类

字段分类的用途主要是对表的字段进行归类和分类显示,体现在查询组件和新增、修改表单。

属性

描述

类型编码

字段分类的编码。

类型名称

字段分类的名称。

类型状态

字段分类的状态。禁用则相当于该类型下的所有字段在系统中没有定义,字段在前端的查询组件、数据表格以及新增、修改表单中均不显示。

类型排序

字段分类的排序。

备注

备注。

2.4 维护字段数据

维护表字段的数据,定义字段的特性。

属性

描述

字段编码

数据库表中的字段名。

字段名称

字段的中文描述名称。

字段分类

上述维护的字段分类。

输入类型

前端该字段输入组件的类型。数据字典:INPUT_TYPE,int整数|numeric浮点数|text文本|textarea文本域|bool布尔|radio单选|multiple多选|dict数据字典|datetime日期时间|date日期|time时间|jsonJSON|file文件|pic图片

字段状态

启用/禁用。禁用则相当于该字段在系统中没有定义,字段在前端的查询组件、数据表格以及新增、修改表单中均不显示,接口也不返回该字段。

主外键

主键/外键。如果字段是主键或外键必须维护。

外键描述

用于生成新增、修改表单中外键的下拉选项。维护成如下格式:

外键表名,主键字段,描述字段,如:sys_user,user_id,username

数据类型

数据库表中该字段的数据类型,数据字典:DATA_TYPE。仅作记录,可不维护,系统目前不依赖此字段作任何逻辑处理。

默认值

字段在新增表单中的默认值。

顺序

字段的排序顺序。体现中前端的查询组件、表格和表单中。

取值范围

字段的取值范围。单选或多选的枚举值,英文逗号间隔;如果是字典,填字典编码;如果是外键,填sql,如:select user_id,username from sys_user where status=''1''',用于外键字段的文本翻译。

查询设置

字段的查询设置。数据字典:QUERY_SETTING,快捷可查、组件可查、全部可查、全不可查。

显示设置

字段的显示设置。数据字典:DISPLAY_SETTING,表格可见、表单可见、全部可见、全不可见。

可否排序

可否排序,是则前端查询列表表格,支持按该字段升序或降序排序

是否必填

在表单中该字段是否必填。必填/非必填。

值字段

暂未用到,可不维护。

备注

字段备注。导出Excel时,用于生成提示信息。

注:

1、除了定义数据库表中存在的字段(基础字段)之外,还可以定义t_student表中不存在的字段(扩展字段),扩展字段的值实际上以行的方式存在【值表】当中,查询时以行转列的方式拼接到了数据库表字段的末尾。

2、在功能使用的过程中,如有需要,可随时增加字段,包括基础字段和扩展字段,不需进行任何开发。值得注意的时候,定义的字段一旦使用,原则上不应再删除。系统上也做了限制,如果是数据库表字段,删除字段定义不会删除数据库表中的字段;如果是扩展字段,字段一旦存值,外键约束会限制删除不了,除非先删除使用了该字段的所有记录。

2.5 创建菜单

表和字段定义完成之后,创建菜单,如下:URL路径固定维护成:/sys/commonPage/表名。

打开菜单,该学生表t_student的增、删、改、查,导入导出Excel,导出修改再导入更新的功能即可直接使用了。

3、功能组件

现在我们来看,生成的菜单的功能及其组件。

3.1 表格组件

1、显示设置:当字段定义时显示设置为表格可见或全部可见时,在表格中会出现该字段。

2、可否排序:当字段定义时可否排序开关打开时,点表头 可按该字段升序或降序排序。并且支持多个排序条件,如先按性别升序,再按性别降序。

3、字典字段、外键字段在表中存的是字典编码和外键表的主键ID,表格实现了文本的翻译。

比如:性别是数据字典,表中存的是F和M,表格显示时自动翻译了字典项目的文本。

          用户是外键字段,表中存的用户ID,表格显示时根据外键配置自动翻译成了文本。

   

3.2 查询组件

查询组件包含两部分:快捷查询和组合查询。

1、快捷查询

当字段的查询设置配置为[快捷可查]或[全部可查],并且字段类型是整形或字符型时,输入字段值, ,系统会搜查所有的可快捷查询的字段,任意字段的值符合条件即返回该条记录,字符型字段支持模糊查询。

2、组合查询

当字段的查询设置配置为[组件可查]或[全部可查]时,字段会出现在查询组件的字段名下拉列表中,支持字段的任意组合查询。操作符,根据字段的输入类型和数据类型支持不同的操作符;字段值,根据字段的输入类型自动切换不同的输入组件,如文本框、数值框、日期选择框或下拉框等。字段查询条件之间支持用[与]及[或]连接,以及用括号进行组合。

字段名:

操作符:

字段值:

当操作符为包括、不包括时,字段值可以以英语逗号为间隔,输入多个值进行批量查询,如下图所示。

查询组件支持的所有操作符:

操作符

SQL运算符

含义

eq

=

等于

ne

<>

不等于

gt

>

大于

lt

<

小于

ge

>=

大于等于

le

<=

小于等于

like

like

包含

not like

not like

不包含

in

in

包括

not in

not in

不包括

start

like 'value%'

开始以

end

like '%value'

结束以

value

is not null and <>''

有值

no value

is null or =''

无值

输入类型与操作符的对应关系:

输入类型InputType

输入类型描述

推荐DataType

操作符

int

整数

int4

eq, ne, gt, lt, ge, le

in, not_in

numeric

浮点数

numeric

eq, ne, gt, lt, ge, le

text

文本

varchar

eq, ne

like, not_like

in, not_in

start, end, value, no_value

textarea

文本域

text

like, not_like

start, end, value, no_value

bool

布尔

bool

eq, ne

radio

单选

varchar

eq, ne

in, not_in

multiple

多选

varchar

like, not_like

dict

数据字典

varchar(30)

eq, ne

in, not_in

datetime

日期时间

timestamp

eq, ne, gt, lt, ge, le

date

日期

date

eq, ne, gt, lt, ge, le

time

时间

time

eq, ne, gt, lt, ge, le

json

JSON

jsonb

不能查询

file

文件

varchar

暂不支持

pic

图片

varchar

暂不支持

3.3 表单组件

表单组件根据字段分类和字段定义生成表单,字段的输入类型就体现 在表单和查询组件中。

新建表单:

编辑表单:

3.4 Excel操作

Excel操作支持导出模板、导出数据和导入数据。

1、导出数据到Excel;

2、支持导出模板填充数据后导入(无主键列,新增记录);

3、导出表格数据修改然后再导入(有主键列,更新记录)。

在导出的Excel文件中:

如果是必填字段,表头红色显示,提示是必填项;

如果是数值字段,在Excel限制了只能输入数值;

如果是日期时间、日期、时间,均提示格式。

如果是单选、多选、字典、布尔类型或是外键字段,均做成了下拉选择:

导入Excel

导入Excel时,系统会校验必填字段必须有值,校验数值、日期、时间、JSON字段的数据合法性。报错时,会明确指明是哪一行哪一列的单格的数据有问题。

      

今天的文章 通用可扩展表分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-11 09:11
下一篇 2024-12-11 09:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/83702.html