Files
shanxia2.0/docs/运输计划管理-需求说明文档.md
2026-06-23 23:30:57 +08:00

27 KiB
Raw Permalink Blame History

运输计划管理模块 — 需求说明文档

版本: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 系统目标

  1. 建设统一系统,涵盖计划管理、运输公司管理、库存管理、运输管理等子模块
  2. 系统基于 shanxia2.0 既有基础设施(账号密码、菜单权限、数据权限、工作流、基础数据等模块已具备)
  3. 计划表名以 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: 还需要哪些功能? 暂不需要(计划变更/拆分/合并/导入/附件/打印均不需要)

文档结束