主题
ERP 企业资源管理 PRD
文档信息
| 项目 | 内容 |
|---|---|
| 产品名称 | PMForge - ERP 企业资源管理 |
| 文档版本 | v2.0 |
| 创建日期 | 2026-09-24 |
| 最后更新 | 2026-09-24 |
| 文档状态 | 评审中 |
| 优先级 | P1 |
一、功能概述
1.1 功能定位
通俗理解:把 ERP 想象成一个"企业的大管家"。就像家庭主妇管账——她知道冰箱里有什么(库存)、要去超市买什么(采购)、今天卖了闲置赚了多少钱(销售)、每个月水电费花了多少(财务)。ERP 就是给企业用的"管家系统":管产品有多少、该买什么、卖给谁了、钱收回来没有,让企业的进销存财一体化运转。
ERP 企业资源管理模块是 PMForge 企业应用层的核心模块之一,覆盖产品管理、库存管理、采购管理、销售管理、供应商管理和财务管理六大业务域,帮助企业实现"采购→入库→销售→出库→收款"的全链路数字化管理。
使用频率预估:
| 功能 | 预计使用频率 | 典型用户 |
|---|---|---|
| 库存查询与操作 | 每日高频 | 仓库管理员 |
| 采购订单管理 | 每日中频 | 采购人员 |
| 销售订单管理 | 每日中频 | 销售人员 |
| 财务收付款 | 每周中频 | 财务人员 |
| 库存盘点 | 每月低频 | 仓库主管 |
| 统计分析 | 每周低频 | 管理层 |
1.2 目标用户
| 用户类型 | 使用场景 | 核心诉求 |
|---|---|---|
| 采购人员 | 创建采购订单、跟踪到货、处理退货 | 采购流程顺畅,不漏单不重复 |
| 销售人员 | 创建销售订单、跟踪发货、处理退货 | 快速下单、库存可查、交付及时 |
| 仓库管理员 | 入库/出库操作、库存盘点、调拨 | 库存准确、操作高效 |
| 财务人员 | 付款/收款管理、对账 | 资金清晰、收付有据 |
| 管理层 | 库存预警、采购/销售统计 | 数据驱动决策、成本可控 |
| 系统管理员 | 基础数据维护、权限配置 | 系统稳定、数据安全 |
1.3 业务价值
| 价值维度 | 具体收益 | 衡量指标 |
|---|---|---|
| 库存精准管控 | 实时掌握库存,避免缺货或积压 | 库存准确率 ≥ 99% |
| 采购流程规范 | 标准化采购流程,降低采购成本 | 采购周期缩短 30% |
| 销售效率提升 | 快速处理订单,缩短交付周期 | 订单处理时间缩短 50% |
| 财务风险管控 | 收付款有据可查,资金流向清晰 | 应收账款逾期率降低 40% |
| 数据驱动决策 | 多维度统计报表,支撑管理决策 | 库存周转率可量化追踪 |
1.4 功能范围
| 功能分类 | 后台管理端 | 前台用户端 |
|---|---|---|
| 产品管理(CRUD、分类、单位) | ✅ | ✅(只读) |
| 库存管理(查询、入出库、盘点、调拨) | ✅ | ✅(只读) |
| 采购管理(订单、入库、退货) | ✅ | ❌ |
| 销售管理(订单、出库、退货) | ✅ | ❌ |
| 供应商管理 | ✅ | ❌ |
| 财务管理(付款单、收款单) | ✅ | ❌ |
| ERP 统计分析 | ✅ | ❌ |
二、用户场景
2.1 用户角色
| 角色 | 描述 | 核心诉求 |
|---|---|---|
| 采购专员小陈 | 负责日常采购下单和跟单 | 采购不漏单、到货及时、退货顺畅 |
| 仓库管理员老张 | 负责仓库出入库和盘点 | 库存准确、操作高效、预警及时 |
| 销售专员小李 | 负责接客户订单和发货 | 下单快速、库存可查、交付准时 |
| 财务主管王姐 | 负责收付款审批和对账 | 资金清晰、收付有据、风险可控 |
| 运营总监赵总 | 统管企业运营 | 看全局数据、发现异常、优化资源配置 |
2.2 使用场景
场景1:采购专员小陈完成采购全流程
前置条件:系统显示某产品库存低于安全库存
操作流程:
- 小陈查看库存预警列表 → 发现"A4打印纸"库存 50 箱,低于安全库存 100 箱
- 创建采购订单 → 选择供应商"文具批发王" → 添加产品明细:A4打印纸 200 箱,单价 25 元
- 系统自动计算总金额 5000 元 → 提交审批
- 采购经理审批通过 → 订单状态变为"已审核"
- 3 天后供应商送货 → 老张收到货后根据采购单创建入库单
- 入库单审核通过 → 库存自动增加到 250 箱
- 王姐根据采购单和入库单创建付款单 → 审批后完成付款
期望结果:采购流程完整闭环、库存自动更新、付款有据可查
验收标准(AC):
- 库存低于安全库存时,系统在首页预警面板标红提示
- 采购订单编号按 PO + 年月日 + 4位序号 格式自动生成
- 入库单审核通过后,库存数量实时更新,并写入库存变动记录
- 付款金额累计不超过采购订单总金额
- 采购订单状态随入库进度自动流转(已审核→部分入库→已入库)
场景2:销售专员小李处理客户订单
前置条件:客户"星辰科技"下了一笔订单
操作流程:
- 小李接到客户电话 → 创建销售订单 → 选择客户、添加产品明细
- 系统自动检查库存 → A4打印纸可用库存 200 箱,满足订单需求 80 箱
- 系统锁定 80 箱库存(可用库存变为 120 箱) → 提交审批
- 销售经理审批通过 → 仓库收到发货通知
- 老张根据销售单创建出库单 → 扫码确认产品 → 审核出库
- 库存自动扣减 80 箱 → 销售订单状态变为"已出库"
- 小李创建收款单 → 客户转账付款 → 王姐确认收款
期望结果:库存自动校验和锁定、出库后库存实时更新、收款闭环
验收标准(AC):
- 创建销售订单时自动校验可用库存,库存不足时提示"库存不足,可用 XX 件"
- 订单审批通过后自动锁定库存,锁定期间其他订单不可使用被锁定的库存
- 出库单审核通过后库存实时扣减,同时释放锁定库存
- 销售订单编号按 SO + 年月日 + 4位序号 格式自动生成
- 收款金额累计不超过销售订单总金额
场景3:仓库管理员老张进行月末盘点
前置条件:月末需要核对仓库实际库存
操作流程:
- 仓库主管创建盘点任务 → 选择"主仓库" → 盘点范围"全部产品"
- 系统生成盘点单 → 显示每个产品的账面库存
- 老张拿着盘点单到现场逐一清点 → 录入实际数量
- 系统自动计算差异 → "A4打印纸"账面 200 箱,实际 198 箱,差异 -2 箱
- 差异超过 1% 的产品标红 → 主管安排复盘
- 复盘确认实际 198 箱 → 主管审核通过
- 系统自动调整库存为 198 箱 → 生成盘亏记录(-2 箱)
期望结果:盘点流程规范、差异自动计算、库存自动调整
验收标准(AC):
- 盘点单自动生成,包含选定范围内所有产品的账面库存
- 差异 = 实际数量 - 账面数量,正值盘盈、负值盘亏
- 差异率超过阈值(默认 1%,可配置)的产品自动标红提醒
- 盘点审核通过后,库存自动调整为实际数量,并写入变动记录
- 盘点期间该仓库的出入库操作被冻结(盘点完成后解冻)
场景4:采购退货处理
前置条件:采购到货的"墨盒"发现有质量问题
操作流程:
- 小陈发现质量问题 → 选择原采购单 → 创建采购退货单
- 填写退货原因"墨盒漏墨,质量不合格" → 选择退货明细:墨盒 10 个
- 提交退货审批 → 采购经理审批通过
- 老张根据退货单进行出库操作 → 将墨盒移出仓库
- 库存自动扣减 10 个 → 退货单状态变为"已退货"
- 王姐创建退款单或抵扣应付款 → 完成退货财务处理
期望结果:退货有据可查、库存自动扣减、财务联动处理
验收标准(AC):
- 采购退货必须关联原采购订单,退货数量不超过已入库数量
- 退货单编号按 PR + 年月日 + 4位序号 格式自动生成
- 退货出库后库存自动扣减,并写入变动记录(类型:退货出库)
- 原采购订单的"已入库数量"相应扣减
- 财务可选择退款或抵扣应付款两种方式处理
场景5:运营总监赵总查看统计报表
前置条件:系统已运行 3 个月
操作流程:
- 赵总进入"ERP 统计"页面 → 查看概览面板
- 库存概览:总 SKU 数 1200、预警产品 15 个、库存总金额 350 万
- 采购统计:本月采购金额 80 万、Top5 供应商排名
- 销售统计:本月销售金额 120 万、Top10 产品排名、客户排名
- 库存周转率:平均周转天数 25 天
- 点击"库存预警" → 查看 15 个预警产品明细 → 一键生成采购建议
期望结果:数据全面准确、图表直观、支持钻取
验收标准(AC):
- 统计数据延迟不超过 5 分钟
- 库存预警产品标红显示,可点击查看库存明细和最近出入库记录
- 供应商/客户/产品排名支持按金额、数量排序
- 库存周转率 = 期间出库总金额 / 平均库存金额 × 365 / 天数
- 支持按时间范围和仓库维度筛选
三、功能需求
3.1 产品管理
功能描述
管理企业产品主数据,包括产品基本信息、产品分类树、计量单位。产品是 ERP 中最基础的实体,采购、销售、库存都围绕产品展开。
页面原型

业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 编码自动生成 | 格式:PRD + 年月日 + 4位序号 | 统一编号规范,避免人工编码冲突 |
| 编码唯一 | 产品编码全局不可重复 | 确保产品标识的唯一性 |
| 分类最多 3 级 | 支持树形分类结构 | 满足大多数企业的分类需求,过深则难以管理 |
| 必须设计量单位 | 产品必须有计量单位 | 出入库操作必须有计量基准 |
| 可设安全库存 | 低于安全库存触发预警 | 防止缺货影响业务 |
| 停用而非删除 | 有业务数据的产品不可删除 | 保证历史数据的完整性 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询产品分页列表 | GET | /admin-api/erp/product/list | 支持分类、名称、编码、状态筛选 |
| 查询产品详情 | GET | /admin-api/erp/product/ | 获取产品完整信息及库存 |
| 创建产品 | POST | /admin-api/erp/product/create | 创建新产品 |
| 修改产品 | PUT | /admin-api/erp/product/update | 更新产品信息 |
| 删除产品 | DELETE | /admin-api/erp/product/delete/ | 逻辑删除(无业务数据时) |
| 停用/启用产品 | PUT | /admin-api/erp/product/status/ | 切换产品状态 |
| 获取分类树 | GET | /admin-api/erp/product/category/tree | 获取产品分类树结构 |
| 创建分类 | POST | /admin-api/erp/product/category/create | 创建产品分类 |
| 修改分类 | PUT | /admin-api/erp/product/category/update | 更新分类信息 |
| 删除分类 | DELETE | /admin-api/erp/product/category/delete/ | 删除空分类 |
| 获取单位列表 | GET | /admin-api/erp/product/unit/list | 获取计量单位列表 |
| 创建单位 | POST | /admin-api/erp/product/unit/create | 创建计量单位 |
| 修改单位 | PUT | /admin-api/erp/product/unit/update | 更新计量单位 |
| 删除单位 | DELETE | /admin-api/erp/product/unit/delete/ | 删除未使用的单位 |
3.2 库存管理
功能描述
管理产品库存的核心模块,支持库存查询、入库、出库、盘点、调拨等操作。库存是企业的核心资产,任何出入库操作都必须有据可查、有迹可循。
页面原型

业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 库存实时更新 | 出入库审核后库存立即变动 | 保证库存数据的实时性 |
| 可用库存 = 库存 - 锁定 | 锁定库存为已审批未出库的量 | 防止超卖,保证订单履约 |
| 库存不足禁止出库 | 可用库存不足时出库单无法审核 | 防止库存变为负数 |
| 出入库必须审核 | 所有出入库操作需审核生效 | 防止误操作导致库存不准 |
| 盘点期间冻结仓库 | 盘点时该仓库不可出入库 | 保证盘点数据的准确性 |
| 变动全程记录 | 每次库存变动写入变动记录 | 库存变动可追溯 |
| 支持多仓库 | 同一产品可在多个仓库有库存 | 满足多仓库管理需求 |
状态机 - 入库单/出库单

接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询库存列表 | GET | /admin-api/erp/stock/list | 按产品、仓库筛选 |
| 查询库存详情 | GET | /admin-api/erp/stock/ | 获取某产品在指定仓库的库存 |
| 查询库存变动记录 | GET | /admin-api/erp/stock/record/list | 按产品、仓库、时间、类型筛选 |
| 创建入库单 | POST | /admin-api/erp/stock/in/create | 创建入库单 |
| 审核入库单 | POST | /admin-api/erp/stock/in/audit/ | 审核入库,触发库存增加 |
| 创建出库单 | POST | /admin-api/erp/stock/out/create | 创建出库单 |
| 审核出库单 | POST | /admin-api/erp/stock/out/audit/ | 审核出库,触发库存扣减 |
| 创建盘点单 | POST | /admin-api/erp/stock/check/create | 创建盘点单 |
| 录入盘点数据 | PUT | /admin-api/erp/stock/check/input/ | 录入实际盘点数量 |
| 审核盘点单 | POST | /admin-api/erp/stock/check/audit/ | 审核盘点,触发库存调整 |
| 创建调拨单 | POST | /admin-api/erp/stock/transfer/create | 创建调拨单 |
| 审核调拨单 | POST | /admin-api/erp/stock/transfer/audit/ | 审核调拨 |
3.3 采购管理
功能描述
管理采购全流程,从采购订单创建到入库、退货。采购是企业"花钱买东西"的环节,需要严格的审批和跟踪。
页面原型

业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 编号自动生成 | 格式:PO + 年月日 + 4位序号 | 统一编号规范 |
| 必须关联供应商 | 采购订单不可无供应商 | 明确采购来源 |
| 入库数量 ≤ 订单数量 | 入库不能超过订单量 | 防止多入导致库存虚增 |
| 退货数量 ≤ 已入库数量 | 退货不能超过已入库量 | 防止退未收到的货 |
| 付款金额 ≤ 订单金额 | 累计付款不超过订单总额 | 防止超付 |
| 状态自动流转 | 部分入库→全部入库→完成 | 减少人工操作 |
状态机 - 采购订单

接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询采购订单列表 | GET | /admin-api/erp/purchase/order/list | 支持供应商、状态、时间筛选 |
| 查询采购订单详情 | GET | /admin-api/erp/purchase/order/ | 获取订单完整信息及入库记录 |
| 创建采购订单 | POST | /admin-api/erp/purchase/order/create | 创建采购订单 |
| 修改采购订单 | PUT | /admin-api/erp/purchase/order/update | 更新订单(仅草稿状态) |
| 删除采购订单 | DELETE | /admin-api/erp/purchase/order/delete/ | 逻辑删除(仅草稿状态) |
| 提交审批 | POST | /admin-api/erp/purchase/order/approve/submit/ | 提交审批 |
| 采购入库 | POST | /admin-api/erp/purchase/in/create | 根据采购单创建入库单 |
| 查询采购入库列表 | GET | /admin-api/erp/purchase/in/list | 按采购单查询入库记录 |
| 采购退货 | POST | /admin-api/erp/purchase/return/create | 创建采购退货单 |
| 查询采购退货列表 | GET | /admin-api/erp/purchase/return/list | 按采购单查询退货记录 |
3.4 销售管理
功能描述
管理销售全流程,从销售订单创建到出库、退货。销售是企业"赚钱卖东西"的环节,需要快速响应客户需求。
业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 编号自动生成 | 格式:SO + 年月日 + 4位序号 | 统一编号规范 |
| 必须关联客户 | 销售订单不可无客户 | 明确销售对象 |
| 出库前校验库存 | 可用库存不足时无法出库 | 防止超卖 |
| 出库后锁定库存释放 | 出库时释放之前锁定的库存 | 保持库存数据一致 |
| 退货自动增加库存 | 退货入库后库存自动增加 | 退货回流库存 |
| 收款金额 ≤ 订单金额 | 累计收款不超过订单总额 | 防止多收 |
状态机 - 销售订单

接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询销售订单列表 | GET | /admin-api/erp/sale/order/list | 支持客户、状态、时间筛选 |
| 查询销售订单详情 | GET | /admin-api/erp/sale/order/ | 获取订单完整信息及出库记录 |
| 创建销售订单 | POST | /admin-api/erp/sale/order/create | 创建销售订单 |
| 修改销售订单 | PUT | /admin-api/erp/sale/order/update | 更新订单(仅草稿状态) |
| 删除销售订单 | DELETE | /admin-api/erp/sale/order/delete/ | 逻辑删除(仅草稿状态) |
| 提交审批 | POST | /admin-api/erp/sale/order/approve/submit/ | 提交审批 |
| 销售出库 | POST | /admin-api/erp/sale/out/create | 根据销售单创建出库单 |
| 查询销售出库列表 | GET | /admin-api/erp/sale/out/list | 按销售单查询出库记录 |
| 销售退货 | POST | /admin-api/erp/sale/return/create | 创建销售退货单 |
| 查询销售退货列表 | GET | /admin-api/erp/sale/return/list | 按销售单查询退货记录 |
3.5 供应商管理
功能描述
管理供应商档案信息,包括基本信息、联系方式、银行账户、信用等级等。供应商是采购的源头,维护好供应商信息有助于采购决策。
业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 编码自动生成 | 格式:SUP + 年月日 + 4位序号 | 统一编号规范 |
| 编码唯一 | 供应商编码全局不可重复 | 确保标识唯一 |
| 有采购记录不可删除 | 只可停用 | 保证历史数据完整性 |
| 银行账户加密存储 | 敏感信息加密 | 资金安全要求 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询供应商列表 | GET | /admin-api/erp/supplier/list | 支持名称、类型、状态筛选 |
| 查询供应商详情 | GET | /admin-api/erp/supplier/ | 获取供应商完整信息及合作记录 |
| 创建供应商 | POST | /admin-api/erp/supplier/create | 创建新供应商 |
| 修改供应商 | PUT | /admin-api/erp/supplier/update | 更新供应商信息 |
| 删除供应商 | DELETE | /admin-api/erp/supplier/delete/ | 逻辑删除(无业务数据时) |
| 停用/启用 | PUT | /admin-api/erp/supplier/status/ | 切换供应商状态 |
| 获取供应商下拉 | GET | /admin-api/erp/supplier/options | 用于采购单下拉选择 |
3.6 财务管理
功能描述
管理企业的付款和收款,包括付款单(对供应商付款)和收款单(从客户收款)。财务是企业的"钱袋子",每一笔收付都需要审批确认。
业务规则
| 规则 | 说明 | 设计原因 |
|---|---|---|
| 编号自动生成 | 付款:PAY + 年月日 + 4位;收款:REC + 年月日 + 4位 | 统一编号规范 |
| 付款关联采购单 | 付款单可关联采购订单 | 付款有业务依据 |
| 收款关联销售单 | 收款单可关联销售订单 | 收款有业务依据 |
| 累计不超过订单金额 | 付款/收款总额 ≤ 订单总额 | 防止超付/超收 |
| 审批后不可修改 | 审批通过后金额和收款方式锁定 | 财务数据不可篡改 |
| 作废而非删除 | 错误单据只能作废 | 保留审计痕迹 |
状态机 - 付款单/收款单

接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询付款单列表 | GET | /admin-api/erp/finance/payment/list | 按供应商、状态筛选 |
| 创建付款单 | POST | /admin-api/erp/finance/payment/create | 创建付款单 |
| 修改付款单 | PUT | /admin-api/erp/finance/payment/update | 更新(仅草稿) |
| 删除付款单 | DELETE | /admin-api/erp/finance/payment/delete/ | 逻辑删除(仅草稿) |
| 提交审批 | POST | /admin-api/erp/finance/payment/approve/submit/ | 提交审批 |
| 确认付款 | POST | /admin-api/erp/finance/payment/confirm/ | 确认付款完成 |
| 作废付款单 | POST | /admin-api/erp/finance/payment/void/ | 作废 |
| 查询收款单列表 | GET | /admin-api/erp/finance/receivable/list | 按客户、状态筛选 |
| 创建收款单 | POST | /admin-api/erp/finance/receivable/create | 创建收款单 |
| 修改收款单 | PUT | /admin-api/erp/finance/receivable/update | 更新(仅草稿) |
| 提交审批 | POST | /admin-api/erp/finance/receivable/approve/submit/ | 提交审批 |
| 确认收款 | POST | /admin-api/erp/finance/receivable/confirm/ | 确认收款完成 |
| 作废收款单 | POST | /admin-api/erp/finance/receivable/void/ | 作废 |
3.7 ERP 统计分析
功能描述
提供多维度的 ERP 数据统计和分析报表,覆盖库存、采购、销售三大领域。
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 库存概览统计 | GET | /admin-api/erp/statistics/stock | 库存分布、预警产品数 |
| 库存周转率分析 | GET | /admin-api/erp/statistics/stock-turnover | 周转天数、周转率 |
| 采购金额统计 | GET | /admin-api/erp/statistics/purchase-amount | 采购金额趋势 |
| 供应商排名 | GET | /admin-api/erp/statistics/supplier-ranking | 按采购金额排名 |
| 销售金额统计 | GET | /admin-api/erp/statistics/sale-amount | 销售金额趋势 |
| 客户排名 | GET | /admin-api/erp/statistics/customer-ranking | 按购买金额排名 |
| 产品销售排名 | GET | /admin-api/erp/statistics/product-ranking | 按销售量/额排名 |
四、非功能需求
4.1 性能需求
| 指标 | 要求 | 实现策略 |
|---|---|---|
| 库存列表查询 | ≤ 500ms | 合理索引 + 分页查询 |
| 库存更新响应 | ≤ 200ms | 乐观锁 + 单行更新 |
| 出入库审核 | ≤ 500ms | 事务控制 + 异步写变动记录 |
| 盘点支持 1 万+ SKU | 盘点单生成 ≤ 10s | 分批查询 + 异步生成 |
| 统计报表生成 | ≤ 2s | 预计算 + 缓存 |
| 并发支持 | ≥ 300 用户 | 读写分离 + 连接池优化 |
4.2 安全需求
| 安全项 | 要求 | 实现方式 |
|---|---|---|
| 库存操作审核 | 所有出入库必须审核 | 双人操作原则,制单人 ≠ 审核人 |
| 数据权限 | 按角色控制数据访问范围 | 仓库维度、部门维度的数据权限 |
| 操作审计 | 所有增删改记录日志 | 集成日志审计模块(01-08) |
| 防重复提交 | 表单不可重复提交 | 前端防抖 + 后端幂等 Token |
| 银行信息加密 | 供应商银行账户加密存储 | AES-256 加密 |
| 条码扫描支持 | 支持扫码枪输入 | 前端输入框兼容扫码枪协议 |
4.3 可用性需求
| 场景 | 处理方式 |
|---|---|
| 并发出入库同一产品 | 乐观锁控制,后操作者提示"库存已变动,请刷新重试" |
| 盘点期间紧急出入库 | 提示"该仓库正在盘点,请先完成或取消盘点" |
| 审核人即制单人 | 系统拒绝,提示"制单人和审核人不能为同一人" |
4.4 错误码定义
| 错误码 | 含义 | 处理建议 |
|---|---|---|
| ERP_STOCK_001 | 库存不足 | 提示可用库存数量,建议先采购 |
| ERP_STOCK_002 | 仓库正在盘点 | 提示盘点完成后操作 |
| ERP_STOCK_003 | 锁定库存不足 | 检查订单状态 |
| ERP_PUR_001 | 入库数量超过订单数量 | 提示可入库数量 |
| ERP_PUR_002 | 退货数量超过入库数量 | 提示可退货数量 |
| ERP_SALE_001 | 可用库存不足 | 提示可用数量 |
| ERP_FIN_001 | 付款金额超过订单金额 | 提示可付余额 |
| ERP_FIN_002 | 收款金额超过订单金额 | 提示可收余额 |
| ERP_PROD_001 | 产品编码已存在 | 检查是否重复创建 |
五、数据设计
5.1 数据表概览
| 表名 | 说明 | 预估记录数 |
|---|---|---|
| erp_product | 产品表 | 1 万+ |
| erp_product_category | 产品分类表 | 500+ |
| erp_product_unit | 产品单位表 | 100+ |
| erp_stock | 库存表 | 1 万+ |
| erp_stock_record | 库存变动记录表 | 100 万+ |
| erp_stock_in | 入库单表 | 10 万+ |
| erp_stock_out | 出库单表 | 10 万+ |
| erp_stock_check | 盘点单表 | 1 万+ |
| erp_purchase_order | 采购订单表 | 5 万+ |
| erp_purchase_in | 采购入库表 | 5 万+ |
| erp_purchase_return | 采购退货表 | 1 万+ |
| erp_sale_order | 销售订单表 | 10 万+ |
| erp_sale_out | 销售出库表 | 10 万+ |
| erp_sale_return | 销售退货表 | 1 万+ |
| erp_supplier | 供应商表 | 1000+ |
| erp_finance_payment | 付款单表 | 10 万+ |
| erp_finance_receivable | 收款单表 | 20 万+ |
| erp_warehouse | 仓库表 | 50+ |
5.2 表关系

5.3 缓存策略
| 缓存 Key | 缓存内容 | 过期时间 | 更新策略 |
|---|---|---|---|
| erp:stock:warning | 库存预警列表 | 5 分钟 | 出入库时主动失效 |
| erp:product:options: | 产品下拉列表 | 10 分钟 | 产品变更时失效 |
| erp:category:tree: | 产品分类树 | 30 分钟 | 分类变更时失效 |
| erp:statistics:overview: | 统计概览 | 5 分钟 | 定时刷新 |
5.4 核心表结构
erp_product 产品表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键 ID |
| product_no | VARCHAR(32) | 是 | 产品编码(唯一索引) |
| product_name | VARCHAR(200) | 是 | 产品名称 |
| category_id | BIGINT | 否 | 分类 ID |
| unit_id | BIGINT | 是 | 计量单位 ID |
| barcode | VARCHAR(50) | 否 | 条形码 |
| brand | VARCHAR(100) | 否 | 品牌 |
| model | VARCHAR(100) | 否 | 型号 |
| specification | VARCHAR(200) | 否 | 规格 |
| cost_price | DECIMAL(15,2) | 否 | 成本价 |
| sale_price | DECIMAL(15,2) | 否 | 销售价 |
| min_price | DECIMAL(15,2) | 否 | 最低售价 |
| safety_stock | DECIMAL(15,2) | 否 | 安全库存 |
| warning_stock | DECIMAL(15,2) | 否 | 预警库存 |
| status | TINYINT | 是 | 状态:1正常 2停用 |
| remark | TEXT | 否 | 备注 |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| deleted | BIT | 否 | 是否删除 |
| tenant_id | BIGINT | 否 | 租户 ID |
erp_stock 库存表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键 ID |
| product_id | BIGINT | 是 | 产品 ID |
| warehouse_id | BIGINT | 是 | 仓库 ID |
| quantity | DECIMAL(15,2) | 是 | 库存总量 |
| locked_quantity | DECIMAL(15,2) | 是 | 锁定数量,默认 0 |
| available_quantity | DECIMAL(15,2) | 是 | 可用数量 = quantity - locked_quantity |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| tenant_id | BIGINT | 否 | 租户 ID |
唯一约束:product_id + warehouse_id 联合唯一
erp_stock_record 库存变动记录表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键 ID |
| product_id | BIGINT | 是 | 产品 ID |
| warehouse_id | BIGINT | 是 | 仓库 ID |
| change_type | TINYINT | 是 | 变动类型:1采购入库 2销售出库 3盘盈 4盘亏 5调拨入库 6调拨出库 7退货入库 8退货出库 |
| change_quantity | DECIMAL(15,2) | 是 | 变动数量(正增负减) |
| before_quantity | DECIMAL(15,2) | 是 | 变动前数量 |
| after_quantity | DECIMAL(15,2) | 是 | 变动后数量 |
| related_id | BIGINT | 否 | 关联单据 ID |
| related_type | VARCHAR(30) | 否 | 关联单据类型 |
| remark | TEXT | 否 | 备注 |
| creator | VARCHAR(64) | 否 | 操作人 |
| create_time | DATETIME | 否 | 操作时间 |
| tenant_id | BIGINT | 否 | 租户 ID |
erp_purchase_order 采购订单表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键 ID |
| order_no | VARCHAR(32) | 是 | 订单编号(唯一索引) |
| supplier_id | BIGINT | 是 | 供应商 ID |
| order_date | DATE | 是 | 订单日期 |
| delivery_date | DATE | 否 | 预计交货日期 |
| total_quantity | DECIMAL(15,2) | 是 | 总数量 |
| total_amount | DECIMAL(15,2) | 是 | 总金额 |
| paid_amount | DECIMAL(15,2) | 否 | 已付款金额,默认 0 |
| in_quantity | DECIMAL(15,2) | 否 | 已入库数量 |
| status | TINYINT | 是 | 状态:1草稿 2待审核 3已审核 4部分入库 5已入库 6已完成 7已取消 |
| approve_user_id | BIGINT | 否 | 审批人 ID |
| approve_time | DATETIME | 否 | 审批时间 |
| remark | TEXT | 否 | 备注 |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| deleted | BIT | 否 | 是否删除 |
| tenant_id | BIGINT | 否 | 租户 ID |
erp_sale_order 销售订单表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键 ID |
| order_no | VARCHAR(32) | 是 | 订单编号(唯一索引) |
| customer_id | BIGINT | 是 | 客户 ID |
| order_date | DATE | 是 | 订单日期 |
| delivery_date | DATE | 否 | 交货日期 |
| total_quantity | DECIMAL(15,2) | 是 | 总数量 |
| total_amount | DECIMAL(15,2) | 是 | 总金额 |
| received_amount | DECIMAL(15,2) | 否 | 已收款金额,默认 0 |
| out_quantity | DECIMAL(15,2) | 否 | 已出库数量 |
| status | TINYINT | 是 | 状态:1草稿 2待审核 3已审核 4部分出库 5已出库 6已完成 7已取消 |
| approve_user_id | BIGINT | 否 | 审批人 ID |
| approve_time | DATETIME | 否 | 审批时间 |
| remark | TEXT | 否 | 备注 |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| deleted | BIT | 否 | 是否删除 |
| tenant_id | BIGINT | 否 | 租户 ID |
erp_supplier 供应商表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键 ID |
| supplier_no | VARCHAR(32) | 是 | 供应商编码(唯一索引) |
| supplier_name | VARCHAR(200) | 是 | 供应商名称 |
| supplier_type | TINYINT | 否 | 类型:1原材料 2成品 3服务 |
| contact_person | VARCHAR(100) | 否 | 联系人 |
| contact_phone | VARCHAR(20) | 否 | 联系电话 |
| VARCHAR(100) | 否 | 邮箱 | |
| address | VARCHAR(500) | 否 | 地址 |
| bank_name | VARCHAR(100) | 否 | 开户银行 |
| bank_account | VARCHAR(500) | 否 | 银行账号(加密存储) |
| tax_no | VARCHAR(50) | 否 | 税号 |
| credit_level | TINYINT | 否 | 信用等级 1-5 |
| cooperation_status | TINYINT | 否 | 合作状态:1正常 2暂停 3终止 |
| status | TINYINT | 是 | 状态:1正常 2停用 |
| remark | TEXT | 否 | 备注 |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| deleted | BIT | 否 | 是否删除 |
| tenant_id | BIGINT | 否 | 租户 ID |
erp_finance_payment 付款单表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键 ID |
| payment_no | VARCHAR(32) | 是 | 付款单号(唯一索引) |
| supplier_id | BIGINT | 是 | 供应商 ID |
| order_id | BIGINT | 否 | 关联采购订单 ID |
| payment_amount | DECIMAL(15,2) | 是 | 付款金额 |
| payment_date | DATE | 是 | 付款日期 |
| payment_method | TINYINT | 是 | 付款方式:1现金 2转账 3支票 4承兑汇票 |
| bank_name | VARCHAR(100) | 否 | 付款银行 |
| bank_account | VARCHAR(100) | 否 | 付款账号 |
| status | TINYINT | 是 | 状态:1草稿 2待审批 3已审批 4已付款 5已作废 |
| approve_user_id | BIGINT | 否 | 审批人 ID |
| approve_time | DATETIME | 否 | 审批时间 |
| remark | TEXT | 否 | 备注 |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| deleted | BIT | 否 | 是否删除 |
| tenant_id | BIGINT | 否 | 租户 ID |
erp_finance_receivable 收款单表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键 ID |
| receivable_no | VARCHAR(32) | 是 | 收款单号(唯一索引) |
| customer_id | BIGINT | 是 | 客户 ID |
| order_id | BIGINT | 否 | 关联销售订单 ID |
| receivable_amount | DECIMAL(15,2) | 是 | 收款金额 |
| receivable_date | DATE | 是 | 收款日期 |
| receivable_method | TINYINT | 是 | 收款方式:1现金 2转账 3支票 4承兑汇票 |
| bank_name | VARCHAR(100) | 否 | 收款银行 |
| bank_account | VARCHAR(100) | 否 | 收款账号 |
| status | TINYINT | 是 | 状态:1草稿 2待审批 3已审批 4已收款 5已作废 |
| approve_user_id | BIGINT | 否 | 审批人 ID |
| approve_time | DATETIME | 否 | 审批时间 |
| remark | TEXT | 否 | 备注 |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| deleted | BIT | 否 | 是否删除 |
| tenant_id | BIGINT | 否 | 租户 ID |
六、跨模块联动
6.1 联动关系总览
| 联动模块 | 联动方式 | 数据流向 |
|---|---|---|
| CRM 客户管理(08-01) | 销售订单关联 CRM 客户 | CRM → ERP |
| 工作流管理(03-01) | 采购/销售订单审批、财务审批 | ERP → 工作流 |
| 消息通知(02-03) | 库存预警、审批通知、付款提醒 | ERP → 消息通知 |
| 认证授权(01-01) | 用户/部门/角色信息 | 系统管理 → ERP |
| 日志审计(01-08) | 操作日志记录 | ERP → 审计 |
| 文件存储(02-02) | 单据附件存储 | ERP → 文件存储 |
| 统计分析(02-05) | ERP 数据汇入全局统计 | ERP → 统计 |
| 钱包管理(04-02) | 收付款联动钱包余额 | ERP ↔ 钱包 |
6.2 详细联动说明
ERP ↔ CRM 客户管理(08-01)
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 销售订单关联客户 | 创建销售订单选择客户 | 从 CRM 客户列表拉取客户数据 | CRM → ERP |
| 销售收款更新 CRM | 收款单确认收款 | 更新 CRM 客户的回款金额 | ERP → CRM |
ERP → 工作流管理(03-01)
| 联动场景 | 触发条件 | 联动行为 |
|---|---|---|
| 采购订单审批 | 提交采购订单审批 | 创建工作流实例 |
| 销售订单审批 | 提交销售订单审批 | 创建工作流实例 |
| 付款/收款审批 | 提交财务审批 | 创建工作流实例 |
| 审批结果回写 | 工作流审批完成 | 回写订单/单据状态 |
ERP → 消息通知(02-03)
| 联动场景 | 触发条件 | 联动行为 |
|---|---|---|
| 库存预警 | 库存低于安全库存 | 推送预警消息给采购人员 |
| 审批通知 | 有新的审批待处理 | 推送消息给审批人 |
| 到货通知 | 采购入库完成 | 通知采购人员到货 |
| 发货通知 | 销售订单审批通过 | 通知仓库准备发货 |
七、附录
7.1 名词解释
| 术语 | 通俗理解 |
|---|---|
| ERP(Enterprise Resource Planning) | 企业资源计划系统,就是帮企业管"进销存财"的一体化工具 |
| 产品(Product) | 企业采购或销售的物品,比如打印纸、墨盒、电脑 |
| 库存(Stock) | 仓库里现存的产品数量——就像你家冰箱里有什么、有多少 |
| 安全库存 | 库存的"底线",低于这个数就要赶紧补货——就像你家米缸至少要有 3 天的米 |
| 预警库存 | 比安全库存稍高的"提醒线",到了这个数就该关注了 |
| 入库(Stock In) | 产品进入仓库——采购到货、客户退货都算入库 |
| 出库(Stock Out) | 产品离开仓库——销售发货、采购退货都算出库 |
| 盘点(Stock Check) | 数一数仓库里实际有多少,和系统里记的对不对——就像月底对账 |
| 盘盈 | 实际数量 > 账面数量,多出来了 |
| 盘亏 | 实际数量 < 账面数量,少了 |
| 调拨(Transfer) | 把产品从一个仓库搬到另一个仓库 |
| 采购订单(Purchase Order) | 向供应商"下单买东西"的单据 |
| 销售订单(Sale Order) | 客户向你"下单买东西"的单据 |
| 供应商(Supplier) | 卖东西给你的企业——你的"上家" |
| 锁定库存 | 已经答应给客户但还没发货的量,别人不能动 |
| 可用库存 | 库存总量减去锁定量,这才是真正能用的 |
| 库存周转率 | 库存在一段时间内"翻了几次"——周转越快说明卖得越好 |
| 付款单 | 你付钱给供应商的凭证 |
| 收款单 | 客户付钱给你的凭证 |
| 租户(Tenant) | 使用系统的企业/组织,每个租户的数据完全隔离 |
7.2 权限标识汇总
| 权限标识 | 说明 | 所属角色 |
|---|---|---|
| erp:product:list | 查看产品列表 | 所有 ERP 用户 |
| erp:product:create | 创建产品 | 采购经理、系统管理员 |
| erp:product:update | 编辑产品 | 采购经理、系统管理员 |
| erp:product:delete | 删除产品 | 系统管理员 |
| erp:product:category:manage | 管理产品分类 | 系统管理员 |
| erp:product:unit:manage | 管理计量单位 | 系统管理员 |
| erp:stock:list | 查看库存 | 所有 ERP 用户 |
| erp:stock:in:create | 创建入库单 | 仓库员、采购人员 |
| erp:stock:in:audit | 审核入库单 | 仓库主管 |
| erp:stock:out:create | 创建出库单 | 仓库员、销售人员 |
| erp:stock:out:audit | 审核出库单 | 仓库主管 |
| erp:stock:check:create | 创建盘点单 | 仓库主管 |
| erp:stock:check:audit | 审核盘点单 | 运营总监 |
| erp:stock:transfer:create | 创建调拨单 | 仓库主管 |
| erp:purchase:order:list | 查看采购订单 | 采购人员、采购经理 |
| erp:purchase:order:create | 创建采购订单 | 采购人员 |
| erp:purchase:order:approve | 审批采购订单 | 采购经理 |
| erp:purchase:in:create | 创建采购入库 | 仓库员 |
| erp:purchase:return:create | 创建采购退货 | 采购人员 |
| erp:sale:order:list | 查看销售订单 | 销售人员、销售经理 |
| erp:sale:order:create | 创建销售订单 | 销售人员 |
| erp:sale:order:approve | 审批销售订单 | 销售经理 |
| erp:sale:out:create | 创建销售出库 | 仓库员 |
| erp:sale:return:create | 创建销售退货 | 销售人员 |
| erp:supplier:list | 查看供应商 | 采购人员、采购经理 |
| erp:supplier:create | 创建供应商 | 采购人员 |
| erp:supplier:update | 编辑供应商 | 采购经理 |
| erp:supplier:delete | 删除供应商 | 系统管理员 |
| erp:finance:payment:list | 查看付款单 | 财务人员、财务主管 |
| erp:finance:payment:create | 创建付款单 | 财务人员 |
| erp:finance:payment:approve | 审批付款单 | 财务主管 |
| erp:finance:receivable:list | 查看收款单 | 财务人员、财务主管 |
| erp:finance:receivable:create | 创建收款单 | 财务人员 |
| erp:finance:receivable:approve | 审批收款单 | 财务主管 |
| erp:statistics:view | 查看统计报表 | 管理层、运营总监 |
文档变更记录
| 版本 | 日期 | 修改人 | 修改内容 |
|---|---|---|---|
| v1.0 | 2026-09-24 | PM | 初始版本 |
| v2.0 | 2026-09-24 | PM | 全面重写:增强业务场景(5 个命名角色场景 + AC)、ASCII 页面原型、状态机、业务规则含设计原因、错误码、缓存策略、跨模块联动、名词解释通俗化 |