12 KiB
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 | 固定字符 | CGDD、WM |
| NOWDATE | 当前日期 | 20260126、2026 |
| SERIALNO | 流水号 | 001、000001 |
| 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 位 |