package cn.iocoder.yudao.framework.common.util.number; /** * 业务编码(单据号 / 主数据编码)生成的公共约定。 * *

需求:系统中所有自动生成的业务编码统一为「16 位纯数字」,且全系统唯一(任意两条编码都不重复)。 * *

实现约定:全系统共用同一个 Redis 自增 KEY({@link #GLOBAL_SEQ_KEY}), * 每次生成时对其执行 INCR 得到单调递增的序列号,再左补 '0' 到 {@link #CODE_LENGTH} 位。 * 由于所有编码都来自同一条递增序列,故天然保证「全系统唯一」。 * *

注意: *

*/ public class BizNoUtils { /** * 全系统业务编码统一使用的 Redis 自增 KEY。 * *

所有模块(erp / crm / trade / aftersales / hrm / bpm / mes)共用此 KEY, * 以保证「全系统唯一」。 */ public static final String GLOBAL_SEQ_KEY = "biz:seq_no:global"; /** * 业务编码的总长度:16 位 */ public static final int CODE_LENGTH = 16; /** * 将自增序列号格式化为 16 位纯数字编码(左侧补 '0') * * @param seq 自增序列号 * @return 16 位纯数字编码 */ public static String format(Long seq) { return String.format("%0" + CODE_LENGTH + "d", seq); } }