运输计划管理模块 — 需求说明文档
版本:v1.1
日期:2026-06-10
状态:✅ 需求确认完成
修订记录
| 版本 |
日期 |
变更说明 |
| v1.0 |
2026-06-10 |
初始版本,整合原始需求文档、需求分析文档和40个澄清问题确认结果 |
| v1.1 |
2026-06-10 |
补充运输计划子模块需求确认(Q10-Q15),明确合同来源、审批流程等细节 |
一、文档目的
本文档为运输计划管理模块的需求说明文档,整合了以下输入材料:
- 原始需求文档(
计划需求.md)
- 需求分析文档(
山峡化工一体化门户-需求分析文档.md)
- 澄清问题清单(40个问题全部确认)
二、业务背景
2.1 项目背景
安庆山峡化工有限公司已建设 CRM 系统(线索/客户/商机/报价单/合同/产品管理)和地磅系统。现需建设统一的计划管理系统,将 CRM 合同与后续的运输、地磅、库存等环节串联,形成完整的业务闭环。
2.2 系统目标
- 建设统一系统,涵盖计划管理、运输公司管理、库存管理、运输管理等子模块
- 系统基于 shanxia2.0 既有基础设施(账号密码、菜单权限、数据权限、工作流、基础数据等模块已具备)
- 计划表名以
pl_ 为前缀
三、名词与定义
| 名词 |
含义 |
| 计划 |
从 CRM 合同发起的运输/出入库执行单据 |
| 计划订单编号 |
格式 SXDDH + YYYYMMDD + 6位序号 |
| 运输编号 |
格式 SXYS + 6位序号 |
| 购买证/运输证 |
易制毒/易制爆产品的法定凭证 |
| 地磅单 |
待入库/待出库单据自动生成的过磅记录 |
| 运输结算单 |
多选运输单合并生成的费用结算单据 |
| 框架合同 |
CRM 系统中的合同类型,价格可通过调价函调整 |
| 直销单 |
不经过仓库的直发单据 |
| 入库单 |
货物进入仓库的单据 |
| 出库单 |
货物从仓库发出的单据 |
| 安庆山峡 |
安庆市山峡化工有限公司 |
| 安徽云栋 |
安徽云栋化工有限公司 |
四、单据分类
4.1 分类维度
计划单据的类别由以下两个维度确定:
| 维度 |
值 |
说明 |
| 归属公司 |
安庆山峡 / 安徽云栋 |
签署订单的公司主体 |
| 单据类型 |
直销单 / 入库单 / 出库单 |
决定后续的流程分支 |
4.2 单据类型定义
| 单据类型 |
含义 |
判断规则 |
| 直销单 |
不经过仓库的直发 |
供应商 ≠ 安庆山峡/安徽云栋 且 目的地 ≠ 安庆山峡/安徽云栋 |
| 入库单 |
货物需进入仓库 |
目的地 = 安庆山峡 或 安徽云栋 |
| 出库单 |
货物从仓库发出 |
供应商 = 安庆山峡 或 安徽云栋 |
五、基础配置
5.1 编号规则
| 项目 |
规则 |
说明 |
| 计划订单编号 |
SXDDH + YYYYMMDD + ###### |
每日独立重置,从 000001 开始 |
| 运输编号 |
SXYS + ###### |
每月重置,全局连续 |
5.2 枚举值
| 枚举类型 |
值 |
| 送货方式 |
山峡自提、一票制、客户自提 |
| 运费计算方式 |
按重量(默认)/ 按趟次(由用户选择) |
5.3 状态定义
5.3.1 跟进状态
| 序号 |
状态值 |
适用单据类型 |
说明 |
| 1 |
等客户确认 |
直销单、出库单 |
等待客户确认要货 |
| 2 |
待采购 |
直销单、入库单 |
等待采购完成 |
| 3 |
待发货 |
直销单、入库单 |
等待发货 |
| 4 |
待收货 |
直销单、出库单 |
等待收货确认 |
| 5 |
已收货 |
出库单 |
收货完成 |
| 6 |
待入库 |
入库单 |
等待入库 |
| 7 |
已入库 |
入库单 |
入库完成 |
| 8 |
待出库 |
出库单 |
等待出库 |
| 9 |
已出库 |
出库单 |
出库完成 |
| 10 |
待归档 |
所有类型 |
归档前置状态 |
| 11 |
归档完成 |
所有类型 |
终态 |
| 12 |
计划取消 |
所有类型 |
终态(可从任意状态进入) |
5.3.2 运输安排状态
| 状态值 |
说明 |
| 待安排 |
运输尚未安排 |
| 已安排 |
已完成运输安排(选定车辆、填写运输信息) |
5.3.3 归档状态
| 状态值 |
说明 |
| 未归档 |
初始值 |
| 已归档 |
归档操作完成后 |
5.3.4 完成状态
| 状态值 |
说明 |
| 是 |
归档后自动变为"是" |
| 否 |
初始值 |
六、业务流程
6.1 主流程(7步)
┌────────────────────────────────────────────────────────────────────┐
│ 第1步:从 CRM 合同发起计划 │
│ - 选择归属公司(安庆山峡 / 安徽云栋) │
│ - 选择单据类型(直销单 / 入库单 / 出库单) │
│ - 选择合同、产品,填写基本信息 │
│ - 系统生成计划订单编号 │
│ - 入库/出库数量按产品级别填写 │
│ - 入库价默认为合同价格,可修改 │
│ - 入库金额 = 入库数 × 入库价 │
│ - 出库金额 = 出库数 × 出库价 │
└───────────────────────────────┬────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ 第2步:判断产品属性 │
│ - 产品属性为易制毒/易制爆? │
│ → 是:必须上传购买证 + 运输证(固定两种) │
│ → 否:直接进入下一步 │
│ - 检查时机:点击「安排运输」时统一检查 │
│ - 购买证/运输证不需要过期时间检查 │
└───────────────────────────────┬────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ 第3步:安排运输 │
│ - 选择车辆类型(自有 或 承运商) │
│ → 选择承运商后,只显示该承运商名下的车辆 │
│ - 选择车辆后,自动带出该车辆的默认司机 │
│ - 同一辆车只能属于一种类型(自有 或 承运商) │
│ - 填写运输信息 │
│ - 运输安排状态:待安排 → 已安排 │
│ - 生成二维码 │
│ → 有效期:默认不设期限,用户可手动填写 │
│ → 分发方式:点击按钮生成二维码图片 → 专员截图 → 发送 │
└───────────────────────────────┬────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ 第4步:跟进状态流转 │
│ 【直销单】等客户确认→待采购→待发货→待收货→待归档→归档完成 │
│ 【入库单】待采购→待发货→待入库→已入库→待归档→归档完成 │
│ 【出库单】等客户确认→待出库→已出库→待收货→已收货→待归档→归档完成 │
│ │
│ 其中: │
│ - 入库单/出库单涉及地磅: │
│ → 待入库/待出库的单据自动生成地磅单 │
│ → 单据同步给现场工作人员(系统消息 + 复制文本微信发送) │
│ → 现场工作人员确认后提交地磅单和出入库附件 │
│ → 地磅数据由现场人员手动填写(不对接硬件) │
│ - 司机通过扫描二维码回传运输单据、运输数量等信息 │
│ - 通知信息按模板生成,不可编辑 │
└───────────────────────────────┬────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ 第5步:核对 │
│ - 计划专员B 核对整个订单 │
│ - 判断是否有运输费用 │
└───────────────────────────────┬────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ 第6步:运费结算(仅运费需要结算,运输本身不产生结算) │
│ - 有运费:进入运费结算流程 │
│ - 无运费:直接归档 │
│ │
│ 运费结算流程(不走工作流): │
│ 待提交 → 已提交 → 审核通过 → 已确认 │
│ │
│ 运费计算方式: │
│ - 按重量:运输数量 × 运输单价(计算结果可调整) │
│ - 按趟次:手动填写 │
│ │
│ 发票信息:需记录发票号、开票日期、发票金额 │
│ 汇款凭证:需精确对应到结算单 │
└───────────────────────────────┬────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ 第7步:归档 │
│ - 归档状态:未归档 → 已归档 │
│ - 完成状态:否 → 是 │
└────────────────────────────────────────────────────────────────────┘
6.2 通知信息模板
通知信息按以下模板生成,系统中不可编辑:
计划号:SXDDH20260102000002
企业名称:安徽英毅热电有限公司
提货单位:安庆市山峡化工有限公司
到货时间:2026-01-02
药品名称:31% 工业盐酸
到货吨位:【4.7吨】
备注:
七、计划单据
7.1 计划主表字段
| 字段名 |
说明 |
规则/备注 |
| 计划日期 |
发起计划的日期 |
— |
| 计划订单编号 |
SXDDHYYYYMMDD###### |
系统自动生成,每日重置 |
| 归属公司 |
安庆山峡 / 安徽云栋 |
新增维度 |
| 单据类型 |
直销单 / 入库单 / 出库单 |
决定流程分支 |
| 跟进状态 |
见跟进状态枚举 |
按单据类型流转 |
| 运输安排状态 |
待安排 / 已安排 |
— |
| 归档状态 |
未归档 / 已归档 |
归档后自动变更 |
| 完成状态 |
是 / 否 |
归档后自动变更 |
| 供应商名称 |
供应商公司名称 |
下拉选择,来自客户表 |
| 目的地 |
目的公司名称 |
下拉选择,来自客户表 |
| 送货方式 |
山峡自提 / 一票制 / 客户自提 |
枚举值 |
| 是否有运输费用 |
布尔值 |
创建计划时勾选 |
| 运输编号 |
SXYS###### |
关联运输信息 |
| 车牌号 |
— |
关联车辆信息 |
| 运输公司 |
— |
关联运输公司信息 |
| 运输费用 |
单次运输费用 |
— |
| 运费合计 |
— |
— |
| 单据附件 |
上传的各类单据文件 |
— |
| 销售合同 |
关联的 CRM 合同 |
— |
| 跟进人 |
当前跟进的计划专员 |
— |
| 备注 |
— |
— |
| 通知信息 |
标准模板内容 |
按模板生成,不可编辑 |
| 创建人 |
— |
系统自动 |
| 创建时间 |
— |
系统自动 |
| 修改人 |
— |
系统自动 |
| 修改时间 |
— |
系统自动 |
7.2 计划产品明细表字段
| 字段名 |
说明 |
规则/备注 |
| 计划ID |
关联计划主表 |
外键 |
| 物料编号 |
— |
关联产品主数据 |
| 物料名称 |
— |
冗余自产品主数据 |
| 产品规格 |
— |
冗余自产品主数据 |
| 包装规格 |
— |
冗余自产品主数据 |
| 单位 |
吨/个/箱等 |
— |
| 入库预估数 |
— |
安排时预估 |
| 入库数 |
实际入库数量 |
地磅确认后填入 |
| 入库价 |
默认合同价格,可修改 |
— |
| 入库金额 |
入库数 × 入库价 |
自动计算 |
| 出库预估数 |
— |
— |
| 出库数 |
实际出库数量 |
— |
| 出库单价 |
— |
— |
| 出库金额 |
出库数 × 出库价 |
自动计算 |
| 是否易制毒 |
— |
冗余自产品主数据 |
| 是否易制爆 |
— |
冗余自产品主数据 |
八、运输管理
8.1 运输信息表字段
| 字段名 |
说明 |
规则/备注 |
| 运输编号 |
SXYS + 6位序号 |
每月重置,全局连续 |
| 车牌号 |
— |
关联车辆信息 |
| 运输公司 |
— |
关联运输公司信息 |
| 所属公司 |
运输公司所属的人或公司名称 |
— |
| 运输介质 |
— |
— |
| 运输起点 |
— |
— |
| 运输终点 |
— |
— |
| 运输公里数 |
— |
— |
| 单位 |
吨/趟 |
— |
| 运输费用 |
— |
— |
| 是否开票 |
布尔值 |
— |
| 备注 |
— |
— |
| 创建人 |
— |
系统自动 |
| 创建时间 |
— |
系统自动 |
8.2 运输与计划的关系
- 计划与运输为 N:N 关系
- 三种场景均存在:
- 1:1 一个计划一趟运输
- 1:N 一个计划多趟运输(分车装运)
- N:1 多个计划一趟运输(拼车)
8.3 二维码
| 项目 |
说明 |
| 生成时机 |
安排运输时 |
| 有效期 |
默认不设期限,用户可手动填写 |
| 分发方式 |
点击按钮生成图片 / 复制链接 → 专员发送给司机/现场人员 |
| 司机扫码 |
无需登录,回传运输单据、运输数量等信息 |
| 现场人员链接 |
免登录 token 链接(/#/public/db/inventory/{token}),可上传附件与备注;已完成单只读 |
九、车辆与司机管理
9.1 车辆归属
| 规则 |
说明 |
| 归属唯一性 |
同一辆车只能属于一种类型(自有 或 承运商) |
| 承运商筛选 |
选择承运商后,只显示该承运商名下的车辆 |
| 司机自动带出 |
选择车辆后,自动带出该车辆的默认司机 |
9.2 司机档案
| 项目 |
说明 |
| 管理方式 |
系统单独维护司机档案 |
| 基本信息 |
姓名、联系方式等 |
| 证件 |
驾驶证、行驶证、危化品证 |
| 过期提醒 |
证件过期前 30 天 提醒(驾驶证/行驶证/危化品证) |
十、运费结算
10.1 结算流程
待提交 → 已提交 → 审核通过 → 已确认
- 审核方式:不走工作流,固定由计划专员C确认
- 运输本身不产生结算:只有运费需要结算
10.2 运费计算
| 方式 |
说明 |
| 按重量(默认) |
运输数量 × 运输单价,计算结果可调整 |
| 按趟次 |
手动填写 |
10.3 发票信息
需要记录:发票号、开票日期、发票金额
10.4 汇款凭证
- 需精确对应到某个结算单
- 上传功能不限制文件类型,支持多个文件
十一、盘存统计
11.1 统计口径
11.2 统计报表
| 报表名称 |
说明 |
| 库存台账 |
按产品汇总当前库存量、库存金额 |
| 出入库明细 |
按时间范围列出所有入库/出库记录 |
| 出入库汇总 |
按月/周汇总各产品的入库量、出库量、净变化 |
| 运输统计 |
按运输公司/车辆统计运输趟次、运费 |
| 计划执行统计 |
按跟进状态统计各状态的计划数量 |
报表导出功能后续按需补充
11.3 库存预警
11.4 库存金额
- 使用入库时的实际价格(每批单独计算)
- 不使用加权平均
十二、司机端功能
12.1 扫码回传
12.2 文件上传
- 不限制上传单据类型
- 支持上传多个文件
- 不需要电子签名
12.3 消息通知
十三、计划变更与取消
13.1 计划取消
- 任意跟进状态下均可取消
- 保留运输信息,标记为「已取消」
- 取消后不再流转
13.2 变更记录
13.3 计划复制
十四、系统约束
14.1 数据隔离
14.2 权限
- 暂不考虑角色权限细化
- 计划专员A/B/C为三个不同角色,通过统一角色权限体系控制
14.3 地磅对接
14.4 其他功能(暂不考虑)
- 移动端离线支持
- 移动端扫码能力
- 数据导入
- 打印功能
- 操作日志
- 多语言
- 附件类型限制
十五、业务规则汇总
| 编号 |
规则描述 |
| BR-01 |
一个计划可包含多个产品 |
| BR-02 |
框架合同商品价格可通过调价函调整,每次调整保留版本历史 |
| BR-03 |
产品属性为易制毒或易制爆时,必须上传购买证和运输证后才能安排运输 |
| BR-04 |
运输分两种方式:自有车辆、运输公司车辆 |
| BR-05 |
运输信息生成二维码,由计划专员复制线下分发 |
| BR-06 |
待入库/待出库的单子通过系统消息 + 复制文本微信发送同步 |
| BR-07 |
入库单判断:目的地 = 安庆山峡 或 安徽云栋 |
| BR-08 |
出库单判断:供应商 = 安庆山峡 或 安徽云栋 |
| BR-09 |
直销单判断:供应商 ≠ 安庆山峡/安徽云栋 且 目的地 ≠ 安庆山峡/安徽云栋 |
| BR-10 |
待入库/待出库的单据自动生成地磅单 |
| BR-11 |
地磅单由现场工作人员确认后,提交单据和附件 |
| BR-12 |
司机通过扫描二维码回传运输单据、运输数量等信息 |
| BR-13 |
计划专员B核对整个订单 |
| BR-14 |
是否有运输费用在创建计划时勾选确定 |
| BR-15 |
运输费用由计划专员C确认后归档 |
| BR-16 |
计划编号格式:SXDDHYYYYMMDD###### |
| BR-17 |
运输编号格式:SXYS + 6位序号 |
| BR-18 |
入库价默认为合同价格,支持后续修改 |
| BR-19 |
入库金额 = 入库数 × 入库价 |
| BR-20 |
出库金额 = 出库数 × 出库价 |
| BR-21 |
送货方式包括:山峡自提、一票制、客户自提 |
| BR-22 |
通知信息按模板生成,系统中不可编辑 |
| BR-23 |
产品主数据需增加"是否易制毒"、"是否易制爆"配置项 |
| BR-24 |
运费计算方式一:运输数量 × 运输单价(计算结果可调整) |
| BR-25 |
运费计算方式二:按趟次,手动填写 |
| BR-26 |
运输结算流程:多选运输单 → 生成结算单 → 提交审核 → 审核成功 → 通知开票 → 票据上传 → 汇款 → 上传汇款单据 |
| BR-27 |
运输结算的审核流程不走工作流,由计划专员C直接确认 |
| BR-28 |
运费结算需要记录发票号、开票日期、发票金额 |
| BR-29 |
运费结算需要精确对应汇款凭证到结算单 |
| BR-30 |
计划与运输为 N:N 关系 |
| BR-31 |
所有单据类型在任意跟进状态下均可取消 |
| BR-32 |
归档操作完成后,归档状态自动变"已归档",完成状态自动变"是" |
| BR-33 |
司机与现场人员均使用免登录 token 链接;管理端内操作仍走 JWT 登录 |
| BR-34 |
购买证/运输证不需要过期时间检查 |
| BR-35 |
司机/押运员证件(驾驶证、行驶证、危化品证)需要过期提醒(30天) |
| BR-36 |
二维码有效期默认不设期限,用户可手动填写 |
| BR-37 |
同一辆车只能属于一种类型(自有 或 承运商) |
| BR-38 |
选择承运商后,只显示该承运商名下的车辆 |
| BR-39 |
选择车辆后,自动带出该车辆的默认司机 |
| BR-40 |
运费结算状态:待提交 → 已提交 → 审核通过 → 已确认 |
| BR-41 |
不设磅差告警,也不记录磅差 |
| BR-42 |
盘存统计以归档完成的单据为准 |
| BR-43 |
库存预警按产品设置阈值 |
| BR-44 |
库存金额使用入库时的实际价格(每批单独计算) |
| BR-45 |
直销单不纳入库存统计 |
| BR-46 |
司机不需要接收系统通知 |
| BR-47 |
上传功能不限制单据类型,支持多个文件 |
| BR-48 |
不需要电子签名 |
| BR-49 |
计划取消后保留运输信息,标记为「已取消」 |
| BR-50 |
需要记录变更历史(变更人、时间、内容) |
| BR-51 |
数据暂不按归属公司隔离 |
附录
附录A:单据类型判断规则
计划单据类型的自动判断逻辑
A.1 入库单
目的地 = 安庆山峡 OR 目的地 = 安徽云栋
A.2 出库单
供应商 = 安庆山峡 OR 供应商 = 安徽云栋
A.3 直销单
供应商 ≠ 安庆山峡 AND 供应商 ≠ 安徽云栋
AND
目的地 ≠ 安庆山峡 AND 目的地 ≠ 安徽云栋
附录B:计划跟进状态流转图
B.1 直销单
等客户确认 → 待采购 → 待发货 → 待收货 → 待归档 → 归档完成
↓
计划取消(任意状态可进入)
B.2 入库单
待采购 → 待发货 → 待入库 → 已入库 → 待归档 → 归档完成
↓
计划取消(任意状态可进入)
B.3 出库单
等客户确认 → 待出库 → 已出库 → 待收货 → 已收货 → 待归档 → 归档完成
↓
计划取消(任意状态可进入)
附录C:运费结算状态流转
待提交 → 已提交 → 审核通过 → 已确认
附录D:运输计划审批状态流转
适用于新建/修改运输计划时的审批流程
草稿 → 待审批 → 审批中 → 待执行 → 执行中 → 已完成
↓
已取消(任意状态可进入)
审批规则:
- 提交审批时,用户选择审批人
- 选择几个就是几个人审批
- 按照选择时的排序依次审批
- 审批方式:会签(所有人审批通过才算通过)
附录E:运输计划子模块需求确认(Q10-Q15)
以下为运输计划管理模块的需求澄清问答记录
E.1 合同关联(Q10-Q10.1)
| 问题 |
答案 |
| Q10: 新建计划时,合同来源? |
A - 关联现有合同(完整信息) |
| Q10.1: 现有合同表信息? |
主表 crm_contract,产品明细表 crm_contract_product |
从合同带入运输计划的信息:
| 信息 |
来源表 |
字段 |
| 客户信息 |
crm_contract |
customer_id, customer_name |
| 联系人信息 |
crm_contract |
contact_name, contact_mobile |
| 甲方/乙方信息 |
crm_contract |
party_a*, party_b* |
| 合同有效期 |
crm_contract |
start_date, end_date |
| 结算方式 |
crm_contract |
settlement_method |
| 商品明细 |
crm_contract_product |
product_id, product_name, model, unit, price 等 |
| 送货方式 |
crm_contract_product |
delivery_method |
E.2 待入库/待出库数据来源(Q11)
| 问题 |
答案 |
| Q11: 待入库/待出库数据来源? |
入库单/出库单:地磅单;直销单:人工录入 |
E.3 运费计算方式(Q12)
| 问题 |
答案 |
| Q12: 运费计算方式? |
按重量(默认)/ 按趟次(由用户选择) |
E.4 运输计划审批流程(Q13-Q14)
| 问题 |
答案 |
| Q13: 运输计划状态流转? |
草稿 → 待执行 → 执行中 → 已完成 → 已取消 |
| Q13.1: 状态是否可以回退? |
不允许回退,状态只能向前推进 |
| Q14: 是否需要审批流程? |
B - 简单审批(会签) |
E.5 其他功能(Q15)
| 问题 |
答案 |
| Q15: 还需要哪些功能? |
暂不需要(计划变更/拆分/合并/导入/附件/打印均不需要) |
文档结束