Files
my-mom-system/prd/mom系统单据编码规则文档.md
panchengyong c28ada5050 commit content
2026-03-06 02:02:59 +08:00

12 KiB
Raw Permalink Blame History

MOM 系统单据编码规则文档

本文档梳理 MOM 系统中所有业务单据的自动编码规则,包括编码前缀、生成格式、命名规律及后端实现机制。
数据来源:系统「单据编码」配置页面 + 后端源码实现。


1. 编码规则总览

系统共配置 15 条单据编码规则,按业务模块分为 销售生产采购 三大类。

1.1 销售模块(排序 1 - 5

排序 业务名称 业务类型 编码前缀 说明
1 销售订单 销售订单 XSDD 常规销售订单
2 销售订单 备货订单 XSBH 备货类型销售订单
3 销售订单 零部件订单 LJBK 零部件备库订单
4 发货通知单 XSFH 销售发货通知
4 退货通知单 XSTH 销售退货通知
5 开票通知单 XSKP 销售开票结算

1.2 生产模块(排序 10 - 11

排序 业务名称 业务类型 编码前缀 说明
10 生产计划单 SCJH 生产排程计划
11 物料清单 MBOM 制造 BOM

1.3 采购模块(排序 12 - 23

排序 业务名称 业务类型 编码前缀 说明
12 采购计划单 原材料 CGJH 原材料采购计划
13 采购计划单 零部件 FLJH 零部件(附料)采购计划
14 采购计划单 五金 BCJH 五金(辅材)采购计划
20 采购订单 CGDD 采购订单
21 采购到货单 CGDH 采购到货登记
22 采购退货单 CGTH 采购退货处理
23 采购发票单 CGFP 采购发票登记

2. 编码生成格式

系统中单据编码的生成格式分为两种:

2.1 格式 A前缀 + 6 位流水号

适用于大多数业务单据,编码长度固定为 10 位4 位前缀 + 6 位数字)。

项目 说明
规则 {4位前缀} + {6位流水号不足补零}
总长度 10 位
流水号范围 000001 ~ 999999
递增方式 查询数据库当前最大编号,+1 递增

示例:

CGJH000001    -- 第 1 张原材料采购计划单
CGJH000002    -- 第 2 张原材料采购计划单
CGDD000041    -- 第 41 张采购订单
XSDD000085    -- 第 85 张销售订单

已确认使用此格式的单据:

编码前缀 单据类型 后端实现
CGJH 采购计划单(原材料) MpPurchaseServiceImpl.java 第 33 行
CGDD 采购订单 PoOrderServiceImpl.java 第 156 行
XSDD 销售订单 从业务数据推断(如 XSDD000085

推断XSBH、LJBK、XSFH、XSTH、XSKP、FLJH、BCJH、CGDH、CGTH、CGFP 也采用此格式(前缀 + 6 位流水号),与系统通用编码规范一致。

2.2 格式 B前缀 + 日期 + 3 位序号

适用于需要按日期归类的单据,编码长度固定为 15 位4 位前缀 + 8 位日期 + 3 位序号)。

项目 说明
规则 {4位前缀} + {yyyyMMdd} + {3位序号不足补零}
总长度 15 位
日期部分 当天日期,格式 yyyyMMdd
序号范围 001 ~ 999按日重置
递增方式 查询当天最大序号,+1 递增;跨日重新从 001 开始

示例:

SCJH20260126001    -- 2026年1月26日 第 1 张生产计划单
SCJH20260126002    -- 2026年1月26日 第 2 张生产计划单
SCJH20260127001    -- 2026年1月27日 第 1 张生产计划单(跨日重置)

已确认使用此格式的单据:

编码前缀 单据类型 后端实现
SCJH 生产计划单 MpPlanServiceImpl.java 第 109-128 行

补充:系统中销售合同(前缀 XSHT)也使用格式 B虽未在单据编码配置页面中列出但实现逻辑一致SlContractServiceImpl.java 第 186-192 行)。

2.3 格式 C前缀 + 时间戳(特殊)

物料清单 MBOM 采用特殊的时间戳生成方式。

项目 说明
规则 MBOM + {毫秒时间戳} + {计数}
后端实现 MpPlanServiceImpl.java 第 318 行

示例:

MBOM17063291400001    -- 基于时间戳生成

3. 编码前缀命名规律

3.1 前缀构成规则

编码前缀通常由 模块缩写 + 业务动作缩写 组成,均为大写字母,长度 4 位。

缩写 含义 所属
XS 销售Xiao Shou 模块前缀
CG 采购Cai Gou 模块前缀
SC 生产Sheng Chan 模块前缀
DD 订单Ding Dan 业务动作
JH 计划Ji Hua 业务动作
FH 发货Fa Huo 业务动作
TH 退货Tui Huo 业务动作
KP 开票Kai Piao 业务动作
DH 到货Dao Huo 业务动作
FP 发票Fa Piao 业务动作

3.2 常规组合

编码前缀 拼音全称 中文含义
XSDD Xiao Shou Ding Dan 销售订单
XSBH Xiao Shou Bei Huo 销售备货
XSFH Xiao Shou Fa Huo 销售发货
XSTH Xiao Shou Tui Huo 销售退货
XSKP Xiao Shou Kai Piao 销售开票
CGDD Cai Gou Ding Dan 采购订单
CGJH Cai Gou Ji Hua 采购计划
CGDH Cai Gou Dao Huo 采购到货
CGTH Cai Gou Tui Huo 采购退货
CGFP Cai Gou Fa Piao 采购发票
SCJH Sheng Chan Ji Hua 生产计划

3.3 特殊前缀

编码前缀 拼音全称 中文含义 备注
LJBK Ling Jian Bei Ku 零件备库 零部件销售订单
FLJH Fu Liao Ji Hua 附料计划 零部件采购计划
BCJH Bu Cai Ji Hua 辅材计划 五金采购计划
MBOM Manufacturing BOM 制造物料清单 英文缩写

4. 后端自动编码机制

4.1 硬编码方式(当前主要采用)

各业务模块在 ServiceImpl 层直接定义编码前缀,通过查询数据库最大编号后递增生成。

核心逻辑伪代码:

// 格式 A前缀 + 6位流水号
String prefix = "CGDD";
String maxCode = mapper.selectMaxCode(prefix);  // 查询最大编码
int nextSeq = parseSeq(maxCode) + 1;            // 解析序号 +1
return prefix + String.format("%06d", nextSeq);  // 补零拼接
// 输出: CGDD000042

// 格式 B前缀 + 日期 + 3位序号
String prefix = "SCJH";
String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date());
String pattern = prefix + dateStr;               // SCJH20260126
String maxCode = mapper.selectMaxCode(pattern);   // 查询当天最大编码
int maxSeq = parseSeq(maxCode) + 1;              // 解析序号 +1
return String.format("%s%03d", pattern, maxSeq);  // 补零拼接
// 输出: SCJH20260126003

已实现的编码生成接口:

API 路径 编码前缀 实现类
GET /erp/mp/purchase/genCode CGJH MpPurchaseServiceImpl
GET /erp/po/order/genCode CGDD PoOrderServiceImpl
内部调用(新增时自动生成) SCJH MpPlanServiceImpl
内部调用(新增时自动生成) MBOM MpPlanServiceImpl

4.2 通用编码引擎(可配置方式)

系统内置了一套基于数据库配置的通用编码生成引擎,支持灵活组合编码规则。

数据库表结构:

表名 用途
sys_auto_code_rule 编码规则主表,定义规则标识、名称、最大长度、填充方式等
sys_auto_code_part 编码规则组成表,定义各段(固定字符/日期/流水号/输入字符)
sys_auto_code_result 编码生成记录表,记录最后生成的编号和流水号

编码段类型part_type

类型 说明 示例
FIXCHAR 固定字符 CGDDWM
NOWDATE 当前日期 202601262026
SERIALNO 流水号 001000001
INPUTCHAR 输入字符 由调用方传入的自定义段

通用生成接口:

GET /system/autocode/get/{ruleCode}
GET /system/autocode/get/{ruleCode}/{inputCharacter}

管理页面: 已在 mom-backend-ui 中实现(/views/system/autocode/),可通过界面配置编码规则。

注意:当前核心业务单据(销售、采购、生产)主要使用硬编码方式,通用编码引擎用于仓库、质检等辅助模块。


5. 补充编码列表(仓库 / 质检 / 其他模块)

以下为系统中通过通用编码引擎管理的其他业务单据编码规则标识(定义于 UserConstants.java

规则标识 中文名称 说明
VENDOR_CODE 供应商编码 供应商主数据
CLIENT_CODE 客户编码 客户主数据
ITEM_TYPE_CODE 物料分类编码 物料分类
ITEM_CODE 物料编码 物料主数据
MACHINERY_TYPE_CODE 设备类型编码 设备分类
TASK_CODE 生产任务编码 生产任务
DEFECT_CODE 缺陷编码 质量缺陷记录
SN_CODE 序列号编码 产品序列号
TRANS_ORDER_CODE 调拨单编码 库存调拨
ARRIVALNOTICE_CODE 到货通知单编码 到货通知
ITEMRECPT_CODE 物料入库编码 物料采购入库
WM_RTVENDOR_CODE 退回供应商编码 退回供应商出库
ISSUE_CODE 生产领料编码 生产领料出库
RTISSUE_CODE 生产退料编码 生产退料入库
WM_SALES_NOTICE_CODE 产品入库/发货通知编码 产品入库、发货通知
PRODUCTSALSE_CODE 销售出库编码 销售出库
WM_RTSALSE_CODE 销售退货入库编码 销售退货入库
TRANSFER_CODE 移库编码 库存移库
WM_STOCK_TAKING_CODE 盘点任务编码 库存盘点
WM_OUTSOURCE_ISSUE_CODE 外协领料编码 外协领料出库
WM_OUTSOURCE_RECPT_CODE 外协入库编码 外协入库
FEEDBACK_CODE 报工单编码 生产报工
CARD_CODE 流转卡编码 生产流转卡
QC_IQC_CODE 来料检验单编码 IQC 来料检验
QC_PQC_CODE 过程检验单编码 PQC 过程检验
QC_OQC_CODE 出货检验单编码 OQC 出货检验
QC_RESULT_CODE 检验结果编码 样品检验结果编号
BATCH_CODE 批次编码 物料批次号
DV_REPAIR_CODE 维修单编码 设备维修单

6. 编码规则配置页面

系统提供了单据编码的可视化管理页面(如参考截图所示),支持以下操作:

  • 查看:以列表形式展示所有编码规则,包含排序、业务名称、业务类型、编码前缀
  • 搜索:支持按业务名称下拉筛选 + 搜索
  • 新增:添加新的编码规则配置
  • 重置:清空搜索条件

页面路径(后台管理): mom-backend-ui -> 系统管理 -> 单据编码

页面路径(前端 ERP 对应前端页面路径待确认


附录:编码前缀速查表

编码前缀 单据类型 所属模块 编码格式 编码长度
XSDD 销售订单(销售订单) 销售 前缀 + 6位流水号 10 位
XSBH 销售订单(备货订单) 销售 前缀 + 6位流水号 10 位
LJBK 销售订单(零部件订单) 销售 前缀 + 6位流水号 10 位
XSFH 发货通知单 销售 前缀 + 6位流水号 10 位
XSTH 退货通知单 销售 前缀 + 6位流水号 10 位
XSKP 开票通知单 销售 前缀 + 6位流水号 10 位
SCJH 生产计划单 生产 前缀 + 日期 + 3位序号 15 位
MBOM 物料清单 生产 前缀 + 时间戳 + 计数 不固定
CGJH 采购计划单(原材料) 采购 前缀 + 6位流水号 10 位
FLJH 采购计划单(零部件) 采购 前缀 + 6位流水号 10 位
BCJH 采购计划单(五金) 采购 前缀 + 6位流水号 10 位
CGDD 采购订单 采购 前缀 + 6位流水号 10 位
CGDH 采购到货单 采购 前缀 + 6位流水号 10 位
CGTH 采购退货单 采购 前缀 + 6位流水号 10 位
CGFP 采购发票单 采购 前缀 + 6位流水号 10 位