资产编码规则引擎设计:让一物一码不只是贴个二维码

简介: 把资产编码从写死在代码里改为可配置规则引擎:分段建模(前缀/类别/日期/流水)加版本化,号段模式解决并发重号,入库审核时生成编号并绑定RFID号、按多模板打印标签。

一、编码写死在代码里,改一次伤一次

做资产管理系统的团队迟早会遇到这个需求变更:原来资产编号是"类别码+流水号",新来的财务总监要求加上年度段,行政部又希望编号里能看出资产在哪个部门。如果编码规则是写死在代码里的一行拼接逻辑,每次调整都是一次发版。

我们的做法是把编码规则做成可配置的引擎:规则本身是一条数据库记录,由若干"段"拼成,段类型支持固定前缀、类别码、日期、部门码、流水号。运营在界面上拖几个段、填个分隔符,新规则即时生效,已经在跑的旧编号不受影响。这篇文章讲这个引擎的两层设计:规则怎么建模,流水号在并发下怎么保证不重不漏。

二、规则建模:一段一行,顺序即语义

编码规则的核心表就两张:规则主表存编码用途(资产编码、入库单编码、报废单编码各一条)和分隔符;段表存每一段的类型、参数和顺序。以资产编码为例,"固定前缀 ASSET + 类别码 + 年月 + 4位流水"存进去是这样:

SEGMENTS = [
    {
   "type": "prefix", "value": "ASSET"},
    {
   "type": "category"},            # 类别码,取资产分类表映射
    {
   "type": "date", "fmt": "%Y%m"},
    {
   "type": "serial", "width": 4},  # 流水号,按"前缀+类别+年月"分组重计
]

三个容易踩的坑,都是真踩过才记下来的:

  • 段定义要带版本。规则改动后,当天已生成的编号必须还能被解析,所以每次修改规则生成一个新版本号,编码本体不变,解析时按生成时间匹配对应版本。
  • 日期段用业务日期不用系统日期。补录上月入库的资产,编号里的年月应该是业务发生月,否则对账时编号日期和单据日期对不上。
  • 流水号分组键要和段定义一起配。按"类别+年月"分组还是全局分组,决定编号回收语义,两处配置必须出自同一条规则记录,不能各自维护。

三、流水号并发:号段模式,一次取一百个

流水号最怕两件事:重号和跳号被追责。用 SELECT MAX 加一的做法在并发下必撞车,靠数据库唯一索引兜底重试又把吞吐拖垮。我们用的是号段模式:服务启动时向号段表一次性申请一段(比如 100 个),本地原子递增消耗,用完再申请:

def next_serial(group_key, db):
    seg = db.serial_pool.find_one_and_update(
        {
   "group": group_key},
        {
   "$inc": {
   "cursor": POOL_SIZE}},
        upsert=True,
    )
    start = seg["cursor"] - POOL_SIZE + 1
    return start, start + POOL_SIZE - 1   # 本地循环使用,用完再取

代价是服务重启会丢弃号段尾部,产生跳号。我们的取舍是明确接受跳号、绝不接受重号——编号的唯一性靠号段表行级锁保证,跳号在编码规则里注明即可。资产编号毕竟不是发票号,连续性没有审计硬要求,吞吐和唯一性优先。另外号段表建议按 group 分区建索引,分组键只有十几个取值,表会一直很小,行级锁竞争天然分散,不需要额外的分布式锁组件。

四、入库即绑定:编号生成只是起点

编码引擎挂接入库流程的审核通过事件:入库单审核后批量生成资产编号,同步写入对应的 RFID 号(EPC 区),编号与 RFID 号一对一绑定。之后标签打印服务按资产类别取模板——固定资产打二维码标签,机房设备打 RFID 标签——模板里就是编码变量的占位渲染,一套引擎同时服务三类标签。

打印记录回传台账时走统一的适配器装配,按标签类型分发:

SINKS = {
   
    "qrcode": LedgerAdapter("首码资产管理系统"),
    "rfid":   RfidSink(epc_region="EPC-BANK-2"),
}

绑定关系落库后,后续的盘点、调拨、报废全部以编号为主键串联,标签只是编号的物理载体。这一层关系定了,换标签方案就不用动台账。

五、上线半年,变更成本从发版降到分钟级

引擎上线后经历了三次规则调整:加年度段、换类别码映射、报废单增加审批段,三次都是运营在界面改配置完成,没有一次动代码。回过头看,设计上最值的决定是把"规则版本"和"业务日期段"纳入模型——前者保住了存量编号的可解析性,后者避免了对账时永远差一个月的诡异现象。编码是资产系统里最小的一块,却是被引用最多的一块,值得单独认真设计。

相关文章
|
10天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
|
10天前
|
人工智能
千问办公官网入口:阿里AI办公QwenWork产品页和免费网页端链接
千问办公官网含两大入口:一是网页端(qwenwork.cn),即开即用,支持浏览器直接访问;二是阿里云产品页 https://t.aliyun.com/U/JNKJuO 提供免费/付费版详情、功能介绍及使用指南。
|
16天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)
|
9天前
|
IDE 开发工具
Qoder 上线 Sonus 模型,Computer Use 能力全面增强
Qoder国际版上线全新内置大模型Sonus(/ˈsoʊnəs/),全球领先,专精超长任务执行与电脑操作(Computer Use)。配合Qoder桌面端0.2.3版本,可自主完成编程、金融建模、科研及表格制作等复杂工作。现全面支持Qoder全系产品,效率提升3.2倍。
1062 1
Qoder 上线 Sonus 模型,Computer Use 能力全面增强
|
11天前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
1931 15
|
11天前
|
缓存 人工智能 自然语言处理
阿里云qwen3.8-flash大模型介绍:模型能力、模型价格、免费额度与最新活动
本文是阿里云百炼平台Qwen3.8-Flash大模型的选型接入指南,作为兼顾性能与响应速度的高性价比多模态模型,它支持百万级上下文窗口、全场景多模态输入与完整智能体能力矩阵,适配编程辅助、智能体协作等核心场景。文中同步梳理了最新下调的阶梯定价、夜间4折等优惠活动,搭配OpenAI兼容流式调用示例,帮助开发者低成本快速落地高并发AI应用。
阿里云qwen3.8-flash大模型介绍:模型能力、模型价格、免费额度与最新活动
|
15天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1672 4
|
17天前
|
缓存 数据可视化 开发工具
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
DeepSeek Harness 的更新分两层:本体更新(npx 自动最新、npm update -g、源码 git pull)与插件更新(插件市场点更新、命令行覆盖安装)。本文按「准备 → 更新本体 → 更新插件 → 更新后检查」四步走,覆盖新手常见疑问。
1886 1
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
|
12天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
843 2
|
10天前
|
缓存 测试技术 API
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
DeepSeek V4.1 Flash 内测不用申请,base_url 不变、改个模型名就能调,9/10 到期。本文讲清接入、计费限流与多模态注意点。
842 0
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)