Files
docs/业务单据编号契约.md

5.1 KiB

业务单据编号契约

格式与分配

纳入本契约的新建业务单据采用 前缀 + yyyyMMdd + 四位流水,无分隔符。前缀为 2~4 位大写英文字母,总长度为 14~16 位,例如 FL202610200001。

  • 业务日期统一按 Asia/Shanghai 计算;每个前缀每天独立分配 0001 至 9999。
  • 同一前缀不按客户或仓库分段;服务内所有创建入口共用同一个序列。前缀按下表归属,禁止在不同服务重复分配同一前缀。
  • 单号由服务端生成并保持不变。编辑、审核、作废、重复提交不换号;幂等重放返回原业务记录及原号,不重新取号。
  • 序列在所属服务数据库内以原子更新和独立短事务分配;外层业务回滚允许断号,已分配号不回收。不以最大业务编号加一、时间戳、随机串、实体 ID 或其截断值生成。
  • 单日四位流水用尽时明确失败,不改为五位、不循环或随机回退。日期在取号前确定,不能在格式化时重新读取日期。
  • 本契约不授权对已有测试数据改号、回填、重置或执行 SQL;数据库与部署操作须独立授权。

前缀登记

服务 前缀与单据
Order FL 头程主订单
Warehouse ZGRK 国内整柜入库、ZGCK 国内整柜出库
Firstleg OB 订舱、TA 国内拖车派车、LP 预装/正式装柜计划、DECL 报关申报批次、BR 报关行批次、PS 船节点船期、SL 船期日历航次、ST 船期周模板、CLG 同柜组
Lastleg 入出库 WC 头程来源尾程订单、IP 入仓计划、CK 普通出库、DFCK 一件代发出库、HBCK 换标出库、THCK 退货出库、PDA 出库作业任务、DL 派送、EX 异常、CD 废弃
Lastleg 库内服务 TB 换标、ZY 转运、TH 退货、THHB 退货换标、RR 退货收货、RB 收货批次、HX 合箱计划、YY 送仓预约
Lastleg 商业业务 TR 本土卡车、LB 散板、CG 采购订单、PR 采购实收、PJ 采购交寄、PF 采购费用(含更正与退款费用)、PN 采购说明、PX 采购关闭、PG 采购更正记录
Lastleg 车队 PC 海外排车(原规则已符合)、CT 车次、FB 车队预订、FO 运力发布、VR 车辆运维记录
Finance REC 对账单、AR 应收结算、AP 应付结算、RC 充值申请、AC 账户流水、VC 车辆成本、VP 车辆付款、PAY 结算付款流水

同柜组按入仓码查询的公开摘要返回 groupNo;结算详情的付款流水返回 transactionNo,均取已生成的业务号。应收结算引用的收款凭证不生成 PAY 号,其 transactionNo 为空,不以内部 ID 或银行参考号替代。

同一类型的所有创建入口共用序列:例如普通卡车下单与车队商业池创建均使用 TR;正常车次与取货车次均使用 CT。预装和正式装柜清单继续使用同一个 LP 计划编号。

海外出库作业任务统一使用 PDA + yyyyMMdd + 四位流水,例如 PDA202610230001;一件代发、退货、转运和换标出库共用该序列,不拼接内部实体 ID。PDA 出库列表及详情以出库单号为主标识,任务号标明“任务号”作为辅助信息;扫描出库单号或任务号均可定位当前任务。入仓任务编号不在此规则范围内。

头程来源尾程订单采用 WC + yyyyMMdd + 四位流水,共14位,例如 WC202610210001,按来源柜 sourceContainerBookingId 复用:该来源柜首次创建尾程订单时在柜级行锁内取号,后续同柜的入仓单、不同客户或跨日交接事件复用原号;事件重放不重新取号。真实集装箱号 containerNo 不作为复用身份,不同来源柜即使使用相同集装箱号也不能共用尾程编号。

明确保留的规则

  • 入仓码、拆分子订单号和子入仓码不变。子订单继续使用主订单号加拆分后缀;新主订单改号后子单自然继承主号,但不改拆分算法或重新分配独立流水。
  • 柜次号继续使用全局连续的 D0001,不按日期重置,超过四位自然增长。
  • 实物箱码、散货托盘码、退货/转运箱码及一件代发 DP-yyMMdd-#### 托盘标签不纳入本次改号。
  • 换标、转运、退货来源尾程订单继续沿用对应业务单号,不增加第二套业务身份。
  • 自营采集任务号、主数据编码及未列入登记表的其他编号不在本次范围。
  • 外部提单号、真实集装箱号、运单号、FBA 货件号、银行流水号等保留外部原号。

实现与验收

通用格式由 baiyue-firstleg/common-core/.../number/DailyDocumentNumber.java 提供;各服务通过自己的 DocumentSequenceRepository → DocumentSequenceMapper 访问本库编号表。海外排车继续复用原 DispatchNumberSequence。

验证覆盖北京时间跨日、前缀独立、并发唯一、外层回滚不复用、缓存绕过、9999 上限、业务重放及保留编号规则。数据库变更同步模块空库基线和 deploy/sql/ 统一空库入口;本地测试不代表已执行数据库变更或已部署。