增强版自动编码字段插件plugin-field-sequence-pro

得益于Ai,又搓了一个插件 :grinning:

plugin-field-sequence-pro

增强版自动编码字段插件,在官方 @nocobase/plugin-field-sequence 基础上新增变量字段、值映射字典、多维度隔离流水三大特性。

功能概览

规则类型

| 规则 | 说明 | 示例 |

|------|------|------|

| 固定文本 (string) | 静态字符串 | P- |

| 自动递增 (integer) | 基于计数器的自增数字,支持位数、起始值、重置周期 | 0001, 0099 |

| 日期 (date) | 从记录的日期字段取值,支持 Day.js 格式 | 202607, 2026-07-12 |

| 随机字符 (randomChar) | 指定长度和字符集(数字/小写/大写/符号)的随机串 | A3k9 |

| :new: 表单变量 (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 | 最后生成时间,用于周期重置 |

| :new: 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

1 Like

欢迎提交 PR 到 GitHub - nocobase/awesome-nocobase: A curated list of awesome NocoBase plugins and resources. · GitHub

插件已上传github有需要的朋友可以下载测试。

搞不懂这个,刚才鼓捣了下,不知道对不对 :joy:

我怎么导入插件导不进去

什么提示?




插件管理不显示

试试安装包 plugin-field-sequence-pro-2.1.21.tgz


y也测试过 上传了 刷新 插件界面上没有

请问是nocobase是什么版本
目前在2.2.0beta15,v2.1.26能正常安装使用

2.0.8

:joy:可能是版本问题了,无能为力

好的

好东西,让自动编号活了。大赞! :+1:

1 Like

确实强大,可惜不支持外部数据源…

源码已上传,你用ai看能不能二开,因为我工作用不到没往这方面研究 :smile:

安装之后所有原有已经存在的编号会重新开始从1编号,打乱了数据,还没有办法恢复数据,因为都是真实数据。只能是还没进入生产环境的应用才能使用现在这个插件

没遇到此情况,我这边对于原有生成的编码是不会改动的。

image
image