得益于Ai,又搓了一个插件 ![]()
plugin-field-sequence-pro
增强版自动编码字段插件,在官方 @nocobase/plugin-field-sequence 基础上新增变量字段、值映射字典、多维度隔离流水三大特性。
功能概览
规则类型
| 规则 | 说明 | 示例 |
|------|------|------|
| 固定文本 (string) | 静态字符串 | P- |
| 自动递增 (integer) | 基于计数器的自增数字,支持位数、起始值、重置周期 | 0001, 0099 |
| 日期 (date) | 从记录的日期字段取值,支持 Day.js 格式 | 202607, 2026-07-12 |
| 随机字符 (randomChar) | 指定长度和字符集(数字/小写/大写/符号)的随机串 | A3k9 |
|
表单变量 (variable) | 从当前表字段取值,支持映射字典和维度隔离 | JL, SG |
Pro 增强特性
1. 变量段 (Variable Pattern)
从正在保存的表单数据中提取字段值作为编码段。
# 配置
类型: 表单变量
字段路径: business_type
# 效果
记录 business_type='监理' → 编码含 "监理"
2. 值映射字典 (Value Mapping)
将变量值与映射字典匹配后替换。
# 配置
类型: 表单变量
字段路径: business_type
值映射字典: { "监理": "JL", "施工": "SG" }
# 效果
记录 business_type='监理' → 编码含 "JL"
记录 business_type='施工' → 编码含 "SG"
智能映射键输入:当所选字段路径对应的字段具有
enum/choices配置时,映射字典的"原始值"输入框会自动变为下拉选择。
3. 多维度隔离流水 (Dimension-based Isolation)
变量段 + 日期段组合成 dimensionKey,不同维度的计数器独立递增。
# 配置
类型: 表单变量
字段路径: business_type
值映射字典: { "监理": "JL", "施工": "SG" }
作为独立流水维度重置: ✓
类型: 日期
日期格式: YYYYMM
类型: 自动递增
位数: 4
# 效果
插入 business_type='监理' → JL_202607_0001
插入 business_type='施工' → SG_202607_0001 ← 独立计数
插入 business_type='监理' → JL_202607_0002 ← 继续递增
数据库
计数器表扩展
在官方 sequences 表基础上新增 dimensionKey 字段和四列复合唯一索引:
| 字段 | 类型 | 说明 |
|------|------|------|
| collection | string | 所属集合名 |
| field | string | 序列字段名 |
| key | integer | 随机 key,区分同字段的多个 integer 规则 |
| current | bigInt | 当前已分配的最大序号 |
| lastGeneratedAt | date | 最后生成时间,用于周期重置 |
|
dimensionKey | string (nullable) | 维度隔离标识,NULL 表示默认计数器 |
唯一索引:UNIQUE (collection, field, key, dimensionKey)
MySQL InnoDB 中 NULL 值与任意非 NULL 值不同,天然支持默认计数器和维度隔离计数器共存。
安装与启用
# 启用插件(使用 scoped 包名)
yarn pm enable @nocobase/plugin-field-sequence-pro
# 如果同时启用了官方版,禁用以避免冲突
yarn pm disable field-sequence
启用后,在数据表字段管理界面中,"自动编码"字段的规则类型下拉中会出现"表单变量"选项。
兼容 V1 / V2 客户端
插件同时提供 V1(src/client/)和 V2(src/client-v2/)客户端代码:
-
V1:基于 Formily v1 +
SchemaComponentOptions+SchemaComponent -
V2:基于 antd Form +
FieldConfigurePropertyComponentProps+ FlowEngine
并发安全
所有 integer pattern 的计数器操作(generate / batchGenerate / update)均在同一数据库事务内完成,依赖 (collection, field, key, dimensionKey) 的行级锁保证不会产生重复编号。
License
Apache-2.0







