news 2026/5/1 9:56:57

关于升鲜宝供应链管理系统业务表与流程全量分析【纯个人研究非商业用途】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
关于升鲜宝供应链管理系统业务表与流程全量分析【纯个人研究非商业用途】

笔言: 偶尔看到升鲜宝供应链管理系统一些UI界面,发现业务非常庞大,就好奇研究一下,以前我做过一些项目300个表都是常态; 如何进行业务表、流程或数据流分析还是比较少;后面会把ERP等都会进行分析; 内源开发是一个全栈六边形开发,要求把软件工程各个方面都得会: 需求分析、业务架构、技术架构、数据架构、产品开发、项目管理、可行性方案设计、软件详细设计说明书、测试工程等等,不然很辛苦;

关于升鲜宝供应链管理系统业务表与流程全量分析

摘要

本分析基于《升鲜宝供应链管理系统重构版发布》四篇系列文章,从业务和技术架构师视角,全面解析该系统的业务实体、数据模型与流程关系。升鲜宝系统是一个面向生鲜配送行业的全链路数字化解决方案,涵盖权限管理、商品管理、客户管理、门店管理、供应商管理、采购管理、库存管理、分拣配送、财务管理、数据分析等十大核心业务域。本文将深度挖掘系统隐含的120+个业务实体表,构建完整的实体关系模型(ERM),并绘制详细的业务流程图和数据流图,最终形成全面技术业务分析报告。

第一部分:业务表主体提取与分类

1.1 权限与系统管理域

1.1.1 组织机构管理表群
  1. 组织机构表 (sys_organization)- 存储企业部门结构信息
  2. 部门表 (sys_department)- 部门详细信息
  3. 岗位表 (sys_post)- 岗位定义与职责
  4. 用户表 (sys_user)- 系统用户账户信息
  5. 用户详情表 (sys_user_profile)- 用户扩展信息
  6. 用户部门关联表 (sys_user_dept)- 用户与部门多对多关系
  7. 用户岗位关联表 (sys_user_post)- 用户与岗位多对多关系
1.1.2 权限控制表群
  1. 角色表 (sys_role)- 角色定义
  2. 用户角色关联表 (sys_user_role)- 用户与角色关系
  3. 菜单表 (sys_menu)- 系统菜单结构
  4. 权限表 (sys_permission)- 细粒度权限点
  5. 角色权限关联表 (sys_role_permission)- 角色权限分配
  6. 数据权限表 (sys_data_scope)- 数据范围控制规则
  7. 操作日志表 (sys_operation_log)- 用户操作审计
  8. 登录日志表 (sys_login_log)- 用户登录记录
1.1.3 系统配置表群
  1. 参数配置表 (sys_config)- 系统运行参数
  2. 数据字典表 (sys_dict)- 通用数据字典
  3. 字典项表 (sys_dict_item)- 字典明细值
  4. 定时任务表 (sys_job)- 定时任务配置
  5. 任务日志表 (sys_job_log)- 任务执行记录
  6. 文件管理表 (sys_file)- 系统文件存储记录
  7. 全局配置表 (sys_global_config)- 全局业务配置
  8. 用户申请表 (sys_user_apply)- 用户注册申请记录

1.2 商品与溯源管理域

1.2.1 商品基础数据表群
  1. 商品品牌表 (product_brand)- 商品品牌定义
  2. 商品单位表 (product_unit)- 计量单位定义
  3. 商品分类表 (product_category)- 商品分类体系
  4. 商品标签表 (product_tag)- 商品标签定义
  5. 商品标签关联表 (product_tag_rel)- 商品与标签关系
  6. 商品表 (product)- 商品主信息
  7. 商品规格表 (product_spec)- 商品规格变体
  8. 商品SKU表 (product_sku)- 最小库存单元
  9. 商品价格表 (product_price)- 商品基准价格
  10. 商品图片表 (product_image)- 商品图片资源
  11. 商品描述表 (product_description)- 商品详细描述
  12. 商品扩展属性表 (product_attribute)- 自定义属性
  13. 商品属性值表 (product_attribute_value)- 属性具体值
1.2.2 云商品库表群
  1. 云商品库表 (cloud_product_library)- 云端共享商品库
  2. 商品提报表 (product_submission)- 商品提报申请
  3. 提报审核表 (submission_audit)- 提报审核记录
  4. 素材分组表 (material_group)- 营销素材分组
  5. 素材库表 (material_library)- 营销素材存储
  6. 商品授权表 (product_authorization)- 商品使用授权
  7. 分拣区域表 (sorting_area)- 分拣区域定义
1.2.3 商品溯源表群
  1. 批次管理表 (product_batch)- 商品批次信息
  2. 批次明细表 (batch_detail)- 批次详细数据
  3. 溯源规则表 (traceability_rule)- 溯源规则定义
  4. 溯源码表 (trace_code)- 溯源码生成记录
  5. 溯源码关联表 (trace_code_rel)- 码与商品关联
  6. 环节管理表 (trace_link)- 溯源环节定义
  7. 环节记录表 (link_record)- 环节流转记录
  8. 商品检测报告表 (product_inspection_report)- 质量检测报告
  9. 检测报告附件表 (report_attachment)- 报告附件文件
  10. 溯源查询日志表 (trace_query_log)- 溯源查询记录

1.3 客户与价格管理域

1.3.1 客户主数据表群
  1. 客户表 (customer)- 客户主信息
  2. 客户分类表 (customer_category)- 客户分类
  3. 客户星级表 (customer_star_level)- 客户评级
  4. 客户类型表 (customer_type)- 客户类型定义
  5. 客户来源表 (customer_source)- 客户来源渠道
  6. 客户联系人表 (customer_contact)- 客户联系人信息
  7. 客户地址表 (customer_address)- 客户配送地址
  8. 客户账期表 (customer_payment_term)- 客户结算账期
  9. 客户合同表 (customer_contract)- 客户合同文件
  10. 客户合同明细表 (contract_detail)- 合同条款明细
  11. 客户报价单表 (customer_quotation)- 客户报价记录
  12. 客户组合表 (customer_group)- 客户分组管理
  13. 客户组合明细表 (customer_group_member)- 组成员关系
  14. 客户通知类型表 (customer_notice_type)- 通知类型定义
  15. 客户通知表 (customer_notice)- 客户通知记录
  16. 客户Banner表 (customer_banner)- 客户端广告图
1.3.2 价格管理体系表群
  1. 价格组表 (price_group)- 价格分组定义
  2. 价格组客户关联表 (price_group_customer)- 客户适用价格组
  3. 价格组商品价格表 (price_group_product)- 分组商品定价
  4. 阶梯价格表 (tiered_price)- 阶梯定价规则
  5. 促销价格表 (promotion_price)- 促销临时定价
  6. 区域价格表 (regional_price)- 区域差异化定价
  7. 价格历史表 (price_history)- 价格变动记录
  8. 价格审批表 (price_approval)- 价格调整审批

1.4 门店管理域

1.4.1 门店基础表群
  1. 门店类型表 (store_type)- 门店类型定义
  2. 门店表 (store)- 门店主信息
  3. 门店联系人表 (store_contact)- 门店联系人
  4. 门店地址表 (store_address)- 门店地址信息
  5. 门店Banner表 (store_banner)- 门店展示广告
  6. 门店支付方式表 (store_payment_method)- 门店支持的支付方式
  7. 门店供应商配置表 (store_supplier_config)- 门店供货关系
  8. 门店主子账号表 (store_sub_account)- 门店子账户管理
  9. 门店通知类型表 (store_notice_type)- 门店通知分类
  10. 门店通知表 (store_notice)- 门店通知记录
  11. 门店营业时间表 (store_business_hours)- 门店营业时段
  12. 门店库存配置表 (store_inventory_config)- 门店库存参数

1.5 订单管理域

1.5.1 客户订单表群
  1. 订货模板表 (order_template)- 订单模板定义
  2. 模板商品表 (template_product)- 模板商品组成
  3. 客户订货单表 (customer_order)- 客户订单主表
  4. 订货单明细表 (order_detail)- 订单商品明细
  5. 订单状态流水表 (order_status_flow)- 订单状态变更记录
  6. 发货单表 (delivery_order)- 发货单主表
  7. 发货单明细表 (delivery_detail)- 发货商品明细
  8. 收货单表 (receipt_order)- 收货确认单
  9. 收货单明细表 (receipt_detail)- 收货明细
  10. 订货退货单表 (order_return)- 退货申请单
  11. 退货单明细表 (return_detail)- 退货商品明细
  12. 退货原因表 (return_reason)- 退货原因分类
  13. 退货审核表 (return_audit)- 退货审核记录
1.5.2 门店订单表群
  1. 门店订货模板表 (store_order_template)- 门店专用模板
  2. 门店订货单表 (store_order)- 门店订单主表
  3. 门店订单明细表 (store_order_detail)- 门店订单明细
  4. 门店发货单表 (store_delivery_order)- 门店发货单
  5. 门店收货单表 (store_receipt_order)- 门店收货单
  6. 门店退货单表 (store_return_order)- 门店退货单
1.5.3 订单处理表群
  1. 订货看板表 (order_kanban)- 订单可视化管理
  2. 收货单差异表 (receipt_discrepancy)- 收货差异记录
  3. 订单退扣单表 (order_deduction)- 订单扣款记录
  4. 订单评价表 (order_evaluation)- 客户评价记录
  5. 订单异常表 (order_exception)- 订单异常记录
  6. 异常处理表 (exception_handling)- 异常处理记录

1.6 库存与进销存管理域

1.6.1 仓库基础表群
  1. 仓库表 (warehouse)- 仓库主信息
  2. 库区表 (warehouse_zone)- 仓库分区定义
  3. 货架/库位表 (storage_location)- 具体存储位置
  4. 温区管理表 (temperature_zone)- 温度控制区域
  5. 温区监控表 (temperature_monitor)- 温区监控记录
  6. 仓库设备表 (warehouse_equipment)- 仓库设备管理
  7. 仓库人员表 (warehouse_staff)- 仓库工作人员
1.6.2 库存事务表群
  1. 库存表 (inventory)- 商品库存主记录
  2. 批次库存表 (batch_inventory)- 按批次库存记录
  3. 库存流水表 (inventory_flow)- 库存变动流水
  4. 库存预警表 (inventory_alert)- 库存预警记录
  5. 库存盘点计划表 (inventory_check_plan)- 盘点计划
  6. 盘点任务表 (check_task)- 盘点任务分配
  7. 盘点结果表 (check_result)- 盘点结果记录
  8. 盘点差异表 (check_discrepancy)- 盘点差异分析
  9. 库存调整表 (inventory_adjustment)- 库存调整记录
1.6.3 入库管理表群
  1. 入库单表 (inbound_order)- 入库单主表
  2. 入库单明细表 (inbound_detail)- 入库商品明细
  3. 入库验收表 (inbound_inspection)- 入库验收记录
  4. 入库上架表 (inbound_putaway)- 上架任务记录
  5. 采购入库单表 (purchase_inbound_order)- 采购关联入库单
  6. 生产入库单表 (production_inbound_order)- 生产完工入库
  7. 退货入库单表 (return_inbound_order)- 退货入库记录
  8. 调拨入库单表 (transfer_inbound_order)- 调拨入库记录
1.6.4 出库管理表群
  1. 出库单表 (outbound_order)- 出库单主表
  2. 出库单明细表 (outbound_detail)- 出库商品明细
  3. 出库拣货表 (outbound_picking)- 拣货任务记录
  4. 出库复核表 (outbound_review)- 出库复核记录
  5. 销售出库单表 (sale_outbound_order)- 销售关联出库
  6. 调拨出库单表 (transfer_outbound_order)- 调拨出库记录
  7. 报损出库单表 (loss_outbound_order)- 报损出库记录
  8. 领料出库单表 (material_outbound_order)- 生产领料出库
1.6.5 库存业务表群
  1. 组合拆解单表 (assembly_disassembly_order)- 商品组合拆解
  2. 组合明细表 (assembly_detail)- 组合配方明细
  3. 调拨单表 (transfer_order)- 库存调拨单
  4. 调拨明细表 (transfer_detail)- 调拨商品明细
  5. 报损单表 (loss_order)- 商品报损单
  6. 报损明细表 (loss_detail)- 报损商品明细
  7. 报溢单表 (overflow_order)- 商品报溢单
  8. 报溢明细表 (overflow_detail)- 报溢商品明细
  9. 成本调整单表 (cost_adjustment_order)- 成本调整单
  10. 库存查询记录表 (inventory_query_log)- 查询历史记录
  11. 结存单表 (balance_order)- 期末结存单

1.7 供应商与采购管理域

1.7.1 供应商管理表群
  1. 供应商表 (supplier)- 供应商主信息
  2. 供应商分类表 (supplier_category)- 供应商分类
  3. 供应商账期表 (supplier_payment_term)- 供应商结算条件
  4. 供应品管理表 (supply_product)- 供应商供货商品
  5. 供应商通知类型表 (supplier_notice_type)- 通知类型
  6. 供应商通知表 (supplier_notice)- 通知记录
  7. 供应商授权表 (supplier_authorization)- 供应商权限
  8. 供应商报价表 (supplier_quotation)- 供应商报价
  9. 供应商合同表 (supplier_contract)- 供应商合同
  10. 合同明细表 (supplier_contract_detail)- 合同条款
1.7.2 采购管理表群
  1. 采购申请单表 (purchase_requisition)- 采购申请
  2. 采购申请明细表 (requisition_detail)- 申请商品明细
  3. 采购单表 (purchase_order)- 采购订单
  4. 采购单明细表 (purchase_order_detail)- 采购商品明细
  5. 采购核算单表 (purchase_settlement)- 采购结算单
  6. 采购退货单表 (purchase_return)- 采购退货单
  7. 每日采购价表 (daily_purchase_price)- 每日采购价格
  8. 采购历史表 (purchase_history)- 采购历史记录
  9. 采购评价表 (purchase_evaluation)- 供应商评价
1.7.3 招投标管理表群
  1. 招标管理表 (bidding_management)- 招标项目
  2. 招标文件表 (bidding_document)- 招标文件
  3. 投标表 (bid_submission)- 供应商投标
  4. 投标文件表 (bid_document)- 投标文件
  5. 评标记录表 (bid_evaluation)- 评标记录
  6. 招标结果表 (bidding_result)- 招标结果

1.8 分拣配送管理域

1.8.1 分拣管理表群
  1. 分拣策略表 (sorting_strategy)- 分拣策略定义
  2. 分拣任务表 (sorting_task)- 分拣任务分配
  3. 分拣批次表 (sorting_batch)- 分拣批次管理
  4. 分拣明细表 (sorting_detail)- 分拣商品明细
  5. 分拣方式配置表 (sorting_method_config)- 分拣方式设置
  6. 预打包表 (pre_pack)- 预打包配置
  7. 预打包明细表 (pre_pack_detail)- 预打包商品组成
  8. 分拣效率表 (sorting_efficiency)- 分拣效率统计
1.8.2 配送管理表群
  1. 物流线路表 (logistics_route)- 配送线路定义
  2. 自提点表 (pickup_point)- 自提点信息
  3. 排线表 (route_scheduling)- 线路排班计划
  4. 配送任务表 (delivery_task)- 配送任务分配
  5. 配送车辆表 (delivery_vehicle)- 配送车辆信息
  6. 配送员表 (delivery_staff)- 配送人员信息
  7. 配送轨迹表 (delivery_track)- 配送实时轨迹
  8. 配送签收表 (delivery_sign)- 签收记录
  9. 配送异常表 (delivery_exception)- 配送异常记录
  10. 配送地图配置表 (delivery_map_config)- 地图相关配置

1.9 财务管理域

1.9.1 账户与收支表群
  1. 账户表 (account)- 资金账户信息
  2. 账户流水表 (account_flow)- 账户资金变动
  3. 费用类别表 (expense_category)- 费用分类
  4. 费用明细表 (expense_detail)- 费用详细记录
  5. 日常收入表 (daily_income)- 日常收入记录
  6. 日常支出表 (daily_expense)- 日常支出记录
  7. 支付方式表 (payment_method)- 支付方式定义
  8. 支付记录表 (payment_record)- 支付交易记录
1.9.2 期初与对账表群
  1. 客户期初表 (customer_initial_balance)- 客户期初余额
  2. 供应商期初表 (supplier_initial_balance)- 供应商期初余额
  3. 商品期初表 (product_initial_balance)- 商品期初库存
  4. 客户对账表 (customer_reconciliation)- 客户对账单
  5. 对账明细表 (reconciliation_detail)- 对账明细项
  6. 门店结账表 (store_settlement)- 门店结算单
  7. 供应商对账表 (supplier_reconciliation)- 供应商对账单
  8. 对账差异表 (reconciliation_discrepancy)- 对账差异记录
1.9.3 应收应付表群
  1. 客户账单表 (customer_bill)- 客户账单
  2. 账单明细表 (bill_detail)- 账单明细项
  3. 供应商账单表 (supplier_bill)- 供应商账单
  4. 应收款表 (receivable)- 应收款记录
  5. 应收明细表 (receivable_detail)- 应收款明细
  6. 应付款表 (payable)- 应付款记录
  7. 应付明细表 (payable_detail)- 应付款明细
  8. 收款单表 (collection_order)- 收款单
  9. 收款明细表 (collection_detail)- 收款明细
  10. 付款单表 (payment_order)- 付款单
  11. 付款明细表 (payment_detail)- 付款明细
  12. 发票表 (invoice)- 发票信息
  13. 发票明细表 (invoice_detail)- 发票明细项

1.10 车辆与周转物管理域

1.10.1 车辆管理表群
  1. 车辆表 (vehicle)- 车辆基本信息
  2. 车辆档案表 (vehicle_file)- 车辆档案文件
  3. 司机表 (driver)- 司机信息
  4. 司机档案表 (driver_file)- 司机档案文件
  5. 油卡管理表 (fuel_card)- 油卡管理
  6. 用车申请表 (vehicle_application)- 用车申请
  7. 出车记录表 (trip_record)- 出车行程记录
  8. 加油记录表 (refuel_record)- 加油记录
  9. 违章处理表 (violation_handling)- 违章处理
  10. 故障处理表 (fault_handling)- 故障处理
  11. 维修保养表 (maintenance)- 维修保养记录
  12. 保险记录表 (insurance_record)- 保险记录
  13. 年检记录表 (inspection_record)- 年检记录
  14. 车辆费用表 (vehicle_expense)- 车辆相关费用
1.10.2 周转物管理表群
  1. 周转物类型表 (container_type)- 周转物类型定义
  2. 周转物表 (container)- 周转物主信息
  3. 周转物库存表 (container_inventory)- 周转物库存
  4. 购入/报损管理表 (container_purchase_loss)- 购入报损记录
  5. 发出管理表 (container_issue)- 周转物发出记录
  6. 回收管理表 (container_recovery)- 周转物回收记录
  7. 客户周转物明细表 (customer_container_detail)- 客户持有明细
  8. 司机周转物明细表 (driver_container_detail)- 司机携带明细
  9. 周转物进销存报表 (container_inventory_report)- 周转物报表

1.11 生产加工管理域

1.11.1 生产基础表群
  1. 生产加工单表 (production_order)- 生产任务单
  2. 加工销售汇总表 (production_sales_summary)- 加工销售统计
  3. 领料单表 (material_requisition)- 生产领料单
  4. 领料明细表 (material_requisition_detail)- 领料明细
  5. 退料单表 (material_return)- 退料单
  6. 退料明细表 (material_return_detail)- 退料明细
  7. 完工入库单表 (finished_product_inbound)- 完工入库单
  8. 生产加工报表 (production_report)- 生产统计报表
  9. 出成率报表 (yield_rate_report)- 出成率统计
  10. 商品BOM表 (product_bom)- 物料清单
  11. BOM明细表 (bom_detail)- BOM组成明细
  12. 商品分拆模板表 (product_split_template)- 分拆模板
  13. 商品分拆记录表 (product_split_record)- 分拆执行记录
  14. 生产工人表 (production_worker)- 生产人员
  15. 生产工序表 (production_process)- 工序定义
  16. 生产车间表 (production_workshop)- 车间信息

1.12 数据报表与分析域

1.12.1 报表定义表群
  1. 商品销售汇总表 (product_sales_summary)- 商品销售统计
  2. 商品采购汇总表 (product_purchase_summary)- 商品采购统计
  3. 商品分类汇总表 (product_category_summary)- 分类销售统计
  4. 商品入库汇总表 (product_inbound_summary)- 入库统计
  5. 商品出库汇总表 (product_outbound_summary)- 出库统计
  6. 商品报损汇总表 (product_loss_summary)- 报损统计
  7. 商品ABC报表 (product_abc_report)- ABC分析报表
  8. 商品销售明细表 (product_sales_detail)- 销售明细记录
  9. 商品采购明细表 (product_purchase_detail)- 采购明细记录
  10. 商品销售异常明细表 (sales_exception_detail)- 销售异常分析
  11. 商品采购异常明细表 (purchase_exception_detail)- 采购异常分析
  12. 报表模板表 (report_template)- 报表模板定义
  13. 报表参数表 (report_parameter)- 报表参数配置
  14. 报表生成记录表 (report_generation_log)- 报表生成日志
  15. 报表订阅表 (report_subscription)- 报表订阅设置

1.13 工作台与BI分析域

1.13.1 工作台管理表群
  1. 工作台配置表 (dashboard_config)- 工作台个性化配置
  2. 工作台组件表 (dashboard_widget)- 工作台组件定义
  3. 用户工作台表 (user_dashboard)- 用户工作台布局
  4. 快捷操作表 (quick_action)- 快捷操作配置
  5. 待办事项表 (todo_item)- 待办事项管理
  6. 消息中心表 (message_center)- 消息中心记录
  7. 公告通知表 (announcement)- 系统公告
1.13.2 BI分析表群
  1. 分析模型表 (analysis_model)- 分析模型定义
  2. 分析维度表 (analysis_dimension)- 分析维度配置
  3. 分析指标表 (analysis_metric)- 分析指标定义
  4. 数据源配置表 (data_source_config)- 数据源连接配置
  5. 数据集表 (dataset)- 数据集定义
  6. 数据可视化表 (data_visualization)- 可视化配置
  7. 分析报告表 (analysis_report)- 分析报告记录
  8. 用户分析收藏表 (user_analysis_favorite)- 用户收藏分析

第二部分:表关系与数据模型分析

2.1 核心实体关系模型(ERM)

2.1.1 主体实体关系图
┌─────────────────────────────────────────────────────────┐ │ 核心业务实体关系图 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 客户 │──────│ 订单 │──────│ 商品 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ │ │ │ ┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐ │ │ │客户联系人│ │订单明细 │ │商品分类 │ │ │ │客户地址 │ │订单状态 │ │商品品牌 │ │ │ │客户合同 │ │发货单 │ │商品规格 │ │ │ │客户报价 │ │收货单 │ │商品SKU │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 供应商 │──────│ 采购单 │──────│ 库存 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ │ │ │ ┌────┴─────┐ ┌────┴─────┘ ┌────┴─────┐ │ │ │供应商商品│ │采购明细 │仓库 │ │ │ │供应商合同│ │采购入库 │库位 │ │ │ │供应商报价│ │采购退货 │库存流水 │ │ │ └──────────┘ └─────────────────└──────────┘ │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 门店 │──────│门店订单 │──────│ 财务 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ │ │ │ ┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐ │ │ │门店类型 │ │门店订单明细│ │应收应付 │ │ │ │门店支付 │ │门店发货单 │ │收款付款 │ │ │ │门店库存 │ │门店收货单 │ │对账单 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘
2.1.2 权限系统关系模型
┌─────────────────────────────────────────────────────┐ │ 权限管理系统ER模型 │ ├─────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ 1:n ┌─────────┐ │ │ │ 用户 │◄───────────────│ 角色 │ │ │ └─────────┘ └─────────┘ │ │ │ │ │ │ n:m ─┤ n:m ─┤ │ │ │ │ │ │ ┌────▼─────┐ ┌─────▼────┐ │ │ │用户部门 │ │角色权限 │ │ │ │用户岗位 │ └─────┬────┘ │ │ └──────────┘ │ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │ 部门 │ │ 权限 │ │ │ │ 岗位 │ └──────────┘ │ │ └──────────┘ │ │ │ │ │ ┌────▼─────┐ │ │ │组织机构 │ │ │ └──────────┘ │ │ │ │ ┌─────────┐ 1:n ┌─────────┐ │ │ │ 菜单 │◄───────────────│菜单权限 │ │ │ └─────────┘ └─────────┘ │ │ │ │ ┌─────────┐ 1:n ┌─────────┐ │ │ │数据范围 │◄───────────────│数据权限 │ │ │ └─────────┘ └─────────┘ │ └─────────────────────────────────────────────────────┘
2.1.3 商品管理系统关系模型
┌─────────────────────────────────────────────────────────┐ │ 商品管理系统ER模型 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:n ┌─────┐ │ │ │商品分类 │◄───────────│ 商品 │────────►│品牌 │ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─┐ │ │ │子分类 │ │商品规格 │ │品牌商│ │ │ └──────────┘ └──────────┘ └──────┘ │ │ │ │ ┌─────────┐ n:m ┌─────────┐ 1:n ┌─────┐ │ │ │ 商品 ├───────────►│商品标签 │◄────────│标签类│ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │商品SKU │ │标签关联 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ ┌────▼─────┐ 1:n ┌─────────┐ │ │ │商品价格 │◄───────────│价格组 │ │ │ └──────────┘ └─────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │价格历史 │ │价格客户 │ │ │ └──────────┘ └──────────┘ │ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:1 ┌─────┐ │ │ │ 商品 │◄───────────│商品批次 │────────►│供应商│ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │溯源信息 │ │批次明细 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │溯源码 │ │检测报告 │ │ │ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘
2.1.4 订单系统关系模型
┌─────────────────────────────────────────────────────────┐ │ 订单管理系统ER模型 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:n ┌─────┐ │ │ │ 客户 │◄───────────│客户订单 │────────►│门店 │ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─┐ │ │ │客户类型 │ │订单明细 │ │门店类型│ │ │ └──────────┘ └──────────┘ └──────┘ │ │ │ │ ┌─────────┐ n:m ┌─────────┐ 1:n ┌─────┐ │ │ │客户订单 ├───────────►│商品SKU │◄────────│商品 │ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │发货单 │ │库存分配 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ ┌────▼─────┐ 1:n ┌─────────┐ │ │ │发货明细 │◄───────────│分拣任务 │ │ │ └──────────┘ └─────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │收货单 │ │分拣明细 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │收货明细 │ │分拣批次 │ │ │ └──────────┘ └──────────┘ │ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:1 ┌─────┐ │ │ │客户订单 │◄───────────│退货单 │────────►│退货原因│ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │订单状态 │ │退货审核 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │状态流水 │ │退货明细 │ │ │ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘
2.1.5 库存系统关系模型
┌─────────────────────────────────────────────────────────┐ │ 库存管理系统ER模型 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:n ┌─────┐ │ │ │ 仓库 │◄───────────│ 库位 │────────►│温区 │ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─┐ │ │ │仓库区域 │ │库位类型 │ │温控设备│ │ │ └──────────┘ └──────────┘ └──────┘ │ │ │ │ ┌─────────┐ n:m ┌─────────┐ 1:n ┌─────┐ │ │ │ 库位 ├───────────►│商品批次 │◄────────│商品 │ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │库存记录 │ │批次库存 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ ┌────▼─────┐ 1:n ┌─────────┐ │ │ │库存流水 │◄───────────│库存事务 │ │ │ └──────────┘ └─────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │流水类型 │ │事务明细 │ │ │ └──────────┘ └──────────┘ │ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:n ┌─────┐ │ │ │库存事务 │◄───────────│入库单 │────────►│采购单│ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─┐ │ │ │事务状态 │ │入库明细 │ │采购明细│ │ │ └──────────┘ └──────────┘ └──────┘ │ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:n ┌─────┐ │ │ │库存事务 │◄───────────│出库单 │────────►│销售单│ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─┐ │ │ │出库类型 │ │出库明细 │ │订单明细│ │ │ └──────────┘ └──────────┘ └──────┘ │ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:n ┌─────┐ │ │ │库存调整 │◄───────────│盘点计划 │────────►│盘点任务│ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │调整明细 │ │盘点结果 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │调整原因 │ │盘点差异 │ │ │ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘
2.1.6 财务系统关系模型
┌─────────────────────────────────────────────────────────┐ │ 财务管理系统ER模型 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:n ┌─────┐ │ │ │ 客户 │◄───────────│客户账单 │────────►│订单 │ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─┐ │ │ │客户期初 │ │账单明细 │ │订单明细│ │ │ └──────────┘ └──────────┘ └──────┘ │ │ │ │ ┌─────────┐ n:m ┌─────────┐ 1:n ┌─────┐ │ │ │客户账单 ├───────────►│收款单 │◄────────│账户 │ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │应收款 │ │收款明细 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ ┌────▼─────┐ 1:n ┌─────────┐ │ │ │应收明细 │◄───────────│对账单 │ │ │ └──────────┘ └─────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │对账明细 │ │对账差异 │ │ │ └──────────┘ └──────────┘ │ │ │ │ ┌─────────┐ 1:n ┌─────────┐ 1:n ┌─────┐ │ │ │ 供应商 │◄───────────│供应商账单│────────►│采购单│ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ ┌────▼─┐ │ │ │供应商期初│ │账单明细 │ │采购明细│ │ │ └──────────┘ └──────────┘ └──────┘ │ │ │ │ ┌─────────┐ n:m ┌─────────┐ 1:n ┌─────┐ │ │ │供应商账单├───────────►│付款单 │◄────────│账户 │ │ │ └─────────┘ └─────────┘ └─────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │应付款 │ │付款明细 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │应付明细 │ │发票 │ │ │ └──────────┘ └──────────┘ │ │ │ │ │ │ ┌────▼─────┐ ┌────▼─────┐ │ │ │发票明细 │ │费用类别 │ │ │ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────┘

2.2 核心业务关系分析

2.2.1 商品-订单-库存三角关系

商品、订单、库存构成供应链系统的铁三角关系,这是系统最核心的数据流:

  1. 商品主数据驱动:商品表(product)是所有业务的基础,包含商品编码、名称、分类、规格、单位等基础信息
  2. 订单业务拉动:客户订单(customer_order)和门店订单(store_order)是需求侧,拉动商品从库存出库
  3. 库存数据响应:库存表(inventory)记录实际商品数量,响应订单需求进行扣减

关键关联关系

  • 商品表(product)与订单明细表(order_detail)通过product_id关联
  • 订单明细表(order_detail)与发货单明细表(delivery_detail)通过detail_id关联
  • 发货单明细表(delivery_detail)与出库单明细表(outbound_detail)通过batch_id关联
  • 出库单明细表(outbound_detail)与库存表(inventory)通过inventory_id关联

数据一致性保障

  • 订单创建时锁定库存(库存锁定字段)
  • 订单确认时扣减可用库存
  • 发货时扣减实际库存
  • 退货时恢复库存
2.2.2 采购-库存-销售闭环关系

采购、库存、销售形成供应链的正向业务闭环

  1. 采购驱动入库:采购单(purchase_order)生成采购入库单(purchase_inbound_order)
  2. 入库增加库存:采购入库单明细(purchase_inbound_detail)增加库存表(inventory)数量
  3. 销售驱动出库:销售订单(sale_order)生成销售出库单(sale_outbound_order)
  4. 出库减少库存:销售出库单明细(sale_outbound_detail)减少库存表(inventory)数量

关键业务规则

  • 采购入库批次与商品批次(batch)关联,实现先进先出(FIFO)
  • 销售出库与订单明细(order_detail)关联,确保订单履约
  • 库存预警(inventory_alert)触发采购申请(purchase_requisition)
2.2.3 客户-订单-财务三角关系

客户、订单、财务构成资金流闭环

  1. 客户信用控制:客户表(customer)中的信用额度控制订单创建
  2. 订单生成应收:客户订单(customer_order)生成应收款(receivable)
  3. 对账生成账单:定期对账生成客户账单(customer_bill)
  4. 收款核销应收:收款单(collection_order)核销应收款(receivable)

关键关联关系

  • 客户表(customer)与订单表(customer_order)通过customer_id关联
  • 订单表(customer_order)与应收款表(receivable)通过order_no关联
  • 应收款表(receivable)与收款单表(collection_order)通过receivable_id关联
  • 收款单表(collection_order)与账户流水表(account_flow)通过collection_no关联
2.2.4 供应商-采购-财务三角关系

供应商、采购、财务构成付款流闭环

  1. 供应商资质管理:供应商表(supplier)记录供应商基本信息
  2. 采购生成应付:采购单(purchase_order)生成应付款(payable)
  3. 对账生成账单:定期对账生成供应商账单(supplier_bill)
  4. 付款核销应付:付款单(payment_order)核销应付款(payable)

关键关联关系

  • 供应商表(supplier)与采购单表(purchase_order)通过supplier_id关联
  • 采购单表(purchase_order)与应付款表(payable)通过purchase_no关联
  • 应付款表(payable)与付款单表(payment_order)通过payable_id关联
  • 付款单表(payment_order)与账户流水表(account_flow)通过payment_no关联
2.2.5 门店-订货-配送网络关系

门店、订货、配送构成分销网络体系

  1. 门店层级管理:门店表(store)与门店类型表(store_type)定义门店属性
  2. 门店订货管理:门店订单(store_order)与客户订单逻辑类似但独立
  3. 配送网络优化:物流线路表(logistics_route)与排线表(route_scheduling)优化配送
  4. 自提点补充:自提点表(pickup_point)补充配送网络

关键关联关系

  • 门店表(store)与门店订单表(store_order)通过store_id关联
  • 门店订单表(store_order)与配送任务表(delivery_task)通过order_no关联
  • 配送任务表(delivery_task)与物流线路表(logistics_route)通过route_id关联
  • 物流线路表(logistics_route)与自提点表(pickup_point)通过route_id关联

第三部分:业务流程与数据流分析

3.1 端到端业务流程

3.1.1 客户订货全流程
┌─────────────────────────────────────────────────────────────┐ │ 客户订货端到端流程 │ ├─────────────────────────────────────────────────────────────┤ │ 步骤 │ 业务活动 │ 数据表变化 │ 状态变更 │ ├──────┼───────────────────┼────────────────────┼─────────────┤ │ 1 │ 客户登录/选择商品 │ 订单表创建草稿 │ 初始状态 │ │ 2 │ 提交订单 │ 订单明细表生成 │ 待确认 │ │ 3 │ 系统/人工确认 │ 库存锁定记录 │ 已确认 │ │ 4 │ 生成分拣任务 │ 分拣任务表创建 │ 待分拣 │ │ 5 │ 执行分拣 │ 分拣明细表记录 │ 分拣中 │ │ 6 │ 生成发货单 │ 发货单表创建 │ 待发货 │ │ 7 │ 发货出库 │ 出库单表生成 │ 已发货 │ │ 8 │ 配送运输 │ 配送轨迹表记录 │ 配送中 │ │ 9 │ 客户收货 │ 收货单表确认 │ 已收货 │ │ 10 │ 订单完成 │ 订单状态完成 │ 已完成 │ │ 11 │ 财务对账 │ 对账单生成 │ 已对账 │ │ 12 │ 收款核销 │ 收款单记录 │ 已结算 │ └─────────────────────────────────────────────────────────────┘

关键数据流

  1. 订单创建阶段:customer_order插入记录 → order_detail插入商品明细
  2. 库存锁定阶段:inventory表锁定数量增加 → inventory_flow记录锁定流水
  3. 分拣发货阶段:sorting_task分配任务 → delivery_order生成发货单 → outbound_order生成出库单
  4. 配送收货阶段:delivery_task分配配送 → delivery_track记录轨迹 → receipt_order确认收货
  5. 财务结算阶段:reconciliation生成对账单 → collection_order记录收款 → account_flow记录资金流水
3.1.2 采购入库全流程
┌─────────────────────────────────────────────────────────────┐ │ 采购入库端到端流程 │ ├─────────────────────────────────────────────────────────────┤ │ 步骤 │ 业务活动 │ 数据表变化 │ 状态变更 │ ├──────┼───────────────────┼────────────────────┼─────────────┤ │ 1 │ 库存预警触发 │ 库存预警表记录 │ 预警状态 │ │ 2 │ 创建采购申请 │ 采购申请单创建 │ 申请中 │ │ 3 │ 申请审批通过 │ 审批记录表更新 │ 已批准 │ │ 4 │ 生成采购订单 │ 采购单表创建 │ 采购中 │ │ 5 │ 供应商确认 │ 采购单状态更新 │ 已确认 │ │ 6 │ 供应商发货 │ 发货通知记录 │ 已发货 │ │ 7 │ 到货验收 │ 验收记录表创建 │ 待验收 │ │ 8 │ 质量检验 │ 检验报告记录 │ 检验中 │ │ 9 │ 生成入库单 │ 入库单表创建 │ 待入库 │ │ 10 │ 上架入库 │ 库存表数量增加 │ 已入库 │ │ 11 │ 批次信息记录 │ 批次管理表记录 │ 批次已建 │ │ 12 │ 财务对账 │ 对账单生成 │ 待付款 │ │ 13 │ 付款结算 │ 付款单记录 │ 已结算 │ └─────────────────────────────────────────────────────────────┘

关键数据流

  1. 采购申请阶段:inventory_alert触发 → purchase_requisition创建申请 → requisition_detail记录明细
  2. 采购订单阶段:purchase_order创建订单 → purchase_order_detail记录商品 → supplier确认订单
  3. 到货验收阶段:purchase_inbound_order创建 → inbound_inspection验收 → product_batch创建批次
  4. 入库上架阶段:inbound_putaway上架 → inventory增加数量 → inventory_flow记录流水
  5. 财务付款阶段:supplier_reconciliation对账 → payment_order付款 → account_flow资金流水
3.1.3 门店补货全流程
┌─────────────────────────────────────────────────────────────┐ │ 门店补货端到端流程 │ ├─────────────────────────────────────────────────────────────┤ │ 步骤 │ 业务活动 │ 数据表变化 │ 状态变更 │ ├──────┼───────────────────┼────────────────────┼─────────────┤ │ 1 │ 门店库存预警 │ 门店库存预警记录 │ 预警状态 │ │ 2 │ 创建补货申请 │ 补货申请单创建 │ 申请中 │ │ 3 │ 总部审批 │ 审批记录表更新 │ 已批准 │ │ 4 │ 生成调拨单 │ 调拨单表创建 │ 调拨中 │ │ 5 │ 中心仓出库 │ 出库单表生成 │ 已出库 │ │ 6 │ 物流配送 │ 配送任务表分配 │ 配送中 │ │ 7 │ 门店收货 │ 收货单表确认 │ 已收货 │ │ 8 │ 门店入库 │ 门店库存表增加 │ 已入库 │ │ 9 │ 库存同步 │ 库存同步记录 │ 已同步 │ │ 10 │ 财务核算 │ 内部往来核算 │ 已核算 │ └─────────────────────────────────────────────────────────────┘

关键数据流

  1. 补货申请阶段:store_inventory_config预警 → store_requisition创建申请
  2. 调拨出库阶段:transfer_order创建调拨 → transfer_outbound_order出库 → inventory减少数量
  3. 配送收货阶段:delivery_task分配配送 → store_receipt_order收货 → store_inventory增加数量
  4. 财务核算阶段:internal_settlement内部结算 → account_flow记录内部往来
3.1.4 生产加工全流程
┌─────────────────────────────────────────────────────────────┐ │ 生产加工端到端流程 │ ├─────────────────────────────────────────────────────────────┤ │ 步骤 │ 业务活动 │ 数据表变化 │ 状态变更 │ ├──────┼───────────────────┼────────────────────┼─────────────┤ │ 1 │ 销售预测/订单需求 │ 生产需求表记录 │ 需求确认 │ │ 2 │ 制定生产计划 │ 生产计划表创建 │ 计划制定 │ │ 3 │ 生成生产订单 │ 生产订单表创建 │ 订单创建 │ │ 4 │ 物料需求计算 │ BOM展开计算需求 │ 需求计算 │ │ 5 │ 领料出库 │ 领料单表生成 │ 领料中 │ │ 6 │ 生产加工 │ 生产工序记录 │ 生产中 │ │ 7 │ 质量检验 │ 质量检验记录 │ 检验中 │ │ 8 │ 完工入库 │ 完工入库单创建 │ 待入库 │ │ 9 │ 成品入库 │ 成品库存表增加 │ 已入库 │ │ 10 │ 成本核算 │ 成本核算表计算 │ 已核算 │ │ 11 │ 生产报表 │ 生产报表生成 │ 报表完成 │ └─────────────────────────────────────────────────────────────┘

关键数据流

  1. 生产计划阶段:production_plan创建计划 → product_bom展开需求
  2. 领料出库阶段:material_requisition领料单 → material_outbound_order出库 → inventory减少原料
  3. 生产加工阶段:production_process_record工序记录 → quality_inspection检验记录
  4. 完工入库阶段:finished_product_inbound完工入库 → inventory增加成品 → product_batch创建批次
  5. 成本核算阶段:production_cost_calculation成本核算 → cost_allocation成本分摊

3.2 核心业务流程详细分析

3.2.1 订单履约流程(Order Fulfillment Process)

订单履约是供应链系统的核心流程,涉及多个系统的协同:

流程触发条件

  • 客户下单(customer_order创建)
  • 门店下单(store_order创建)
  • 定时批量订单导入

流程详细步骤

步骤1:订单接收与验证

数据流:customer → customer_order → order_detail 业务规则: 1. 验证客户状态(是否启用、信用额度) 2. 验证商品状态(是否上架、库存是否充足) 3. 验证价格有效性(价格组、促销活动) 4. 验证配送信息(地址是否在配送范围) 技术实现: - 事务性操作,保证订单创建原子性 - 库存预占,防止超卖 - 价格快照,锁定下单时价格

步骤2:订单确认与审核

数据流:customer_order → order_audit → order_status_flow 业务规则: 1. 自动审核规则(金额、客户等级、商品类别) 2. 人工审核规则(大额订单、新客户、特殊商品) 3. 审核通过后正式占用库存 4. 审核拒绝释放预占库存 技术实现: - 工作流引擎驱动审核流程 - 消息通知审核人员 - 审核记录可追溯

步骤3:订单分配与分拣

数据流:order_detail → sorting_task → sorting_detail 业务规则: 1. 分拣策略选择(按订单、按商品、按区域) 2. 分拣波次生成(基于配送时间、商品特性) 3. 分拣任务分配(基于人员技能、工作量) 4. 分拣路径优化(基于仓库布局) 技术实现: - 分拣算法优化 - 移动终端支持 - 实时进度跟踪

步骤4:打包与发货

数据流:sorting_detail → delivery_order → delivery_detail 业务规则: 1. 包装策略(按商品特性选择包装材料) 2. 温层控制(冷藏、冷冻商品特殊处理) 3. 发货复核(数量、商品、批次核对) 4. 出库确认(库存正式扣减) 技术实现: - 打包指导系统 - 称重扫描集成 - 出库自动扣减库存

步骤5:配送与跟踪

数据流:delivery_order → delivery_task → delivery_track 业务规则: 1. 路线优化(基于地址、时间窗口) 2. 车辆调度(基于车型、容量) 3. 实时跟踪(GPS定位、状态更新) 4. 异常处理(交通、客户原因) 技术实现: - 地图API集成 - 移动APP配送端 - 实时消息推送

步骤6:签收与完成

数据流:delivery_task → receipt_order → order_status 业务规则: 1. 签收确认(客户签名/验证码) 2. 异常签收(部分收货、拒收) 3. 退货处理(当场退货流程) 4. 订单完成状态更新 技术实现: - 电子签收系统 - 拍照上传证据 - 自动状态流转

步骤7:售后与退货

数据流:order_return → return_audit → return_process 业务规则: 1. 退货申请(客户提交退货原因) 2. 退货审核(基于退货政策) 3. 退货收货(验收退货商品) 4. 退款处理(原路退款或信用退款) 技术实现: - 退货工作流引擎 - 退款接口集成 - 库存反向处理
3.2.2 采购到付款流程(Procure-to-Pay Process)

采购到付款是企业重要的支出流程,涉及供应商管理、采购执行和财务付款:

流程触发条件

  • 库存预警触发采购申请
  • 生产计划触发原料采购
  • 定期补货计划
  • 新商品引进需求

流程详细步骤

步骤1:需求识别与采购申请

数据流:inventory_alert → purchase_requisition → requisition_detail 业务规则: 1. 安全库存计算(基于历史销量、季节因素) 2. 采购量计算(经济批量、最小起订量) 3. 申请审批流程(基于金额、商品类型) 4. 供应商选择(基于价格、质量、交期) 技术实现: - 库存预测算法 - 审批工作流引擎 - 供应商评分系统

步骤2:供应商选择与采购下单

数据流:purchase_requisition → purchase_order → purchase_order_detail 业务规则: 1. 供应商询价(多渠道比价) 2. 招投标管理(重大项目招标流程) 3. 合同管理(采购合同签订) 4. 采购订单生成(明确数量、价格、交期) 技术实现: - 电子招投标系统 - 电子合同管理 - 订单自动生成

步骤3:到货验收与质量检查

数据流:purchase_order → purchase_inbound_order → inbound_inspection 业务规则: 1. 预约到货(提前安排收货资源) 2. 数量验收(清点到货数量) 3. 质量检验(抽样或全检) 4. 不合格处理(退货或让步接收) 技术实现: - 移动收货终端 - 质量检验标准库 - 不合格品处理流程

步骤4:入库上架与库存更新

数据流:inbound_inspection → inbound_putaway → inventory 业务规则: 1. 上架策略(基于商品特性、周转率) 2. 批次管理(记录生产日期、保质期) 3. 库存更新(增加可用库存) 4. 溯源信息记录(供应商、批次、检测报告) 技术实现: - 上架推荐算法 - 批次追溯系统 - 库存实时更新

步骤5:发票匹配与三单匹配

数据流:purchase_order → supplier_invoice → three_way_matching 业务规则: 1. 发票接收(供应商开具发票) 2. 三单匹配(订单、收货单、发票) 3. 差异处理(数量、价格差异) 4. 匹配通过准备付款 技术实现: - 发票OCR识别 - 自动匹配算法 - 差异工作流处理

步骤6:付款申请与审批

数据流:three_way_matching → payment_application → payment_approval 业务规则: 1. 付款条件(基于账期、提前付款折扣) 2. 付款申请(会计人员提交付款申请) 3. 多级审批(基于金额的审批流程) 4. 付款计划(现金流预测) 技术实现: - 电子付款申请 - 多级审批工作流 - 现金流预测模型

步骤7:付款执行与核销

数据流:payment_approval → payment_order → account_flow 业务规则: 1. 付款方式选择(电汇、支票、银企直连) 2. 付款执行(财务执行付款操作) 3. 银行对账(付款结果确认) 4. 应付核销(减少供应商应付余额) 技术实现: - 多渠道支付集成 - 银行接口对接 - 自动对账系统

步骤8:供应商评估与关系管理

数据流:supplier_evaluation → supplier_score → supplier_relationship 业务规则: 1. 绩效评估(质量、交期、价格、服务) 2. 供应商分级(基于绩效评分) 3. 关系维护(定期沟通、联合改进) 4. 供应商开发(新供应商引入) 技术实现: - 供应商评分模型 - 供应商门户系统 - 供应商协同平台
3.2.3 库存管理流程(Inventory Management Process)

库存管理是供应链成本控制的关键,涉及库存计划、执行和控制:

流程触发条件

  • 日常库存事务(入库、出库、移库)
  • 定期库存盘点
  • 库存异常报警
  • 库存策略调整

流程详细步骤

步骤1:库存计划与策略制定

数据流:inventory_policy → safety_stock_calculation → reorder_point 业务规则: 1. 库存分类(ABC分类、XYZ分类) 2. 安全库存计算(基于服务水平、需求波动) 3. 订货点计算(基于提前期、需求量) 4. 库存策略制定(不同分类不同策略) 技术实现: - 库存优化算法 - 需求预测模型 - 策略配置管理

步骤2:日常库存事务处理

数据流:inventory_transaction → inventory_flow → inventory_balance 业务规则: 1. 入库处理(采购入库、生产入库、退货入库) 2. 出库处理(销售出库、领料出库、报损出库) 3. 移库处理(库位调整、仓库调拨) 4. 库存调整(盘点差异调整、成本调整) 技术实现: - 事务处理引擎 - 实时库存更新 - 批次跟踪管理

步骤3:库存控制与预警

数据流:inventory_monitoring → inventory_alert → alert_notification 业务规则: 1. 库存水平监控(实时监控库存数量) 2. 效期管理(临近保质期预警) 3. 呆滞库存识别(长期未动库存) 4. 预警通知(邮件、短信、系统消息) 技术实现: - 实时监控系统 - 预警规则引擎 - 多渠道通知

步骤4:库存盘点与差异处理

数据流:inventory_check_plan → check_task → check_result 业务规则: 1. 盘点计划(年度、月度、循环盘点) 2. 盘点执行(初盘、复盘、抽盘) 3. 差异分析(数量差异、质量差异) 4. 差异处理(调整、调查、改进) 技术实现: - 移动盘点终端 - 盘点算法优化 - 差异分析工具

步骤5:库存分析与优化

数据流:inventory_analysis → inventory_report → optimization_suggestion 业务规则: 1. 库存周转分析(周转率、周转天数) 2. 库存成本分析(持有成本、缺货成本) 3. 服务水平分析(订单满足率、准时交货率) 4. 优化建议(策略调整、流程改进) 技术实现: - 数据分析引擎 - 报表生成系统 - 优化算法模型

步骤6:库存绩效评估

数据流:inventory_kpi → performance_evaluation → improvement_plan 业务规则: 1. KPI设定(库存周转率、服务水平、准确率) 2. 绩效评估(定期评估KPI达成情况) 3. 根因分析(未达成原因分析) 4. 改进计划(制定和实施改进措施) 技术实现: - KPI管理仪表板 - 根因分析工具 - 改进跟踪系统

3.3 跨系统业务流程

3.3.1 销售-生产-采购协同流程

这是典型的需求拉动型供应链协同流程:

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 销售预测/订单 │───▶│ 主生产计划 │───▶│ 物料需求计划 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 客户订单管理 │ │ 生产订单下达 │ │ 采购订单下达 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 发货计划制定 │ │ 生产执行跟踪 │ │ 采购到货跟踪 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 订单交付执行 │ │ 完工入库处理 │ │ 原材料入库处理 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 客户收货确认 │ │ 成本核算分析 │ │ 供应商付款处理 │ └─────────────────┘ └─────────────────┘ └─────────────────┘

关键协同点

  1. 需求传递:销售订单/预测 → 生产计划 → 物料需求 → 采购计划
  2. 时间协同:客户交期 → 生产完成时间 → 原材料到货时间 → 采购下单时间
  3. 数量协同:客户订单数量 → 生产数量 → 物料需求数量 → 采购数量
  4. 质量协同:客户质量要求 → 成品质量标准 → 原材料质量标准 → 供应商质量要求

数据流整合

  • 销售数据流:customer_order → sales_forecast → demand_plan
  • 生产数据流:production_plan → mrp_calculation → material_requirement
  • 采购数据流:purchase_plan → supplier_order → material_supply

系统集成点

  1. 需求管理集成:销售系统与计划系统数据同步
  2. 计划协同集成:生产计划系统与物料计划系统集成
  3. 执行跟踪集成:生产执行与采购执行状态共享
  4. 库存可视集成:原材料、在制品、成品库存全局可视
3.3.2 财务-业务一体化流程

财务与业务的一体化是ERP系统的核心价值:

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 业务事件发生 │───▶│ 会计凭证生成 │───▶│ 账簿记录更新 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 销售订单创建 │ │ 应收账款确认 │ │ 总账科目更新 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 发货出库执行 │ │ 成本结转处理 │ │ 损益科目更新 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 客户收货确认 │ │ 收入确认处理 │ │ 收入科目更新 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 收款核销处理 │ │ 现金银行更新 │ │ 现金流量更新 │ └─────────────────┘ └─────────────────┘ └─────────────────┘

关键业务-财务对应关系

  1. 销售到收款循环

    • 业务事件:客户订单 → 发货出库 → 客户收货 → 收款
    • 财务处理:应收确认 → 成本结转 → 收入确认 → 收款核销
    • 会计科目:应收账款 → 库存商品 → 主营业务收入 → 银行存款
  2. 采购到付款循环

    • 业务事件:采购申请 → 采购订单 → 到货入库 → 付款
    • 财务处理:应付确认 → 存货增加 → 应付核销 → 付款
    • 会计科目:应付账款 → 原材料/库存商品 → 应付账款减少 → 银行存款减少
  3. 生产到库存循环

    • 业务事件:生产领料 → 生产加工 → 完工入库
    • 财务处理:材料消耗 → 人工制造费用 → 产成品入库
    • 会计科目:生产成本 → 应付职工薪酬等 → 库存商品

一体化实现机制

  1. 事件驱动会计:业务事件自动触发会计凭证
  2. 科目自动判定:基于业务规则自动确定会计科目
  3. 金额自动计算:基于业务数据自动计算会计金额
  4. 凭证自动生成:自动生成标准会计凭证
  5. 账簿自动更新:自动更新总账、明细账

数据一致性保障

  1. 事务一致性:业务操作与财务记账在同一事务中
  2. 数据时效性:实时或准实时生成财务数据
  3. 可追溯性:从财务报表追溯到原始业务单据
  4. 审计轨迹:完整的操作日志和变更历史
3.3.3 门店-总部协同流程

多门店运营需要总部与门店的高效协同:

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 门店要货申请 │───▶│ 总部订单汇总 │───▶│ 供应商采购下单 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 门店库存监控 │ │ 集中到货验收 │ │ 供应商发货跟踪 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 自动补货建议 │ │ 中心仓分拣 │ │ 到货预约安排 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 门店配送计划 │ │ 装车发运执行 │ │ 质量检验处理 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 门店收货上架 │ │ 在途库存跟踪 │ │ 供应商对账付款 │ └─────────────────┘ └─────────────────┘ └─────────────────┘

协同关键点

  1. 需求协同

    • 门店独立需求预测
    • 总部汇总需求分析
    • 联合需求计划制定
    • 需求变更协同响应
  2. 库存协同

    • 门店安全库存设定
    • 总部安全库存集中
    • 库存共享与调拨
    • 联合库存优化
  3. 物流协同

    • 门店配送需求汇总
    • 路线优化与车辆调度
    • 在途库存可视化管理
    • 逆向物流协同处理
  4. 财务协同

    • 统一结算与支付
    • 内部往来核算
    • 合并财务报表
    • 统一税务处理

系统集成架构

门店系统层: ├── 门店POS系统 ├── 门店库存系统 ├── 门店订货系统 └── 门店报表系统 总部系统层: ├── 中央采购系统 ├── 中央库存系统 ├── 中央配送系统 └── 中央财务系统 数据交换层: ├── 实时数据同步 ├── 批量数据交换 ├── 消息队列通信 └── 数据一致性服务

数据流设计

  1. 基础数据流:商品主数据、价格数据、供应商数据统一管理,下发门店
  2. 交易数据流:门店销售、库存数据实时或定时上传总部
  3. 业务数据流:门店要货、退货申请上传,总部处理结果下发
  4. 财务数据流:门店收银数据上传,总部统一对账结算

3.4 异常处理流程

3.4.1 订单异常处理流程

订单履约过程中的常见异常及处理:

异常类型

  1. 库存不足异常:订单商品库存不足
  2. 价格异常:下单价格与系统价格不一致
  3. 客户信用异常:客户超过信用额度
  4. 配送异常:地址无法配送、时间无法满足
  5. 支付异常:支付失败、支付欺诈
  6. 退货异常:退货商品不符合退货政策

处理流程

┌──────────────┐ │ 异常发生检测 │ └──────────────┘ │ ▼ ┌──────────────┐ │ 异常分类判定 │───┐ └──────────────┘ │ │ │ ▼ │ ┌──────────────┐ │ ┌──────────────┐ │ 自动处理规则 │ │ │ 人工处理分派 │ └──────────────┘ │ └──────────────┘ │ │ │ ▼ │ ▼ ┌──────────────┐ │ ┌──────────────┐ │ 执行处理动作 │ │ │ 人工调查处理 │ └──────────────┘ │ └──────────────┘ │ │ │ └─────────┼─────────┘ │ ▼ ┌──────────────┐ │ 处理结果记录 │ └──────────────┘ │ ▼ ┌──────────────┐ │ 客户通知更新 │ └──────────────┘

具体异常处理策略

  1. 库存不足处理

    • 检查替代商品
    • 建议客户更换
    • 拆分订单部分发货
    • 提供到货通知服务
    • 紧急采购补货
  2. 价格异常处理

    • 核实价格变更时间
    • 检查促销活动有效性
    • 与客户沟通价格调整
    • 特殊审批价格例外
    • 记录价格差异原因
  3. 信用异常处理

    • 检查信用额度计算
    • 核实未结清账款
    • 临时信用额度申请
    • 部分发货控制风险
    • 预付款要求
  4. 配送异常处理

    • 地址标准化验证
    • 配送时间窗口调整
    • 自提点建议
    • 第三方物流补充
    • 配送费用调整
3.4.2 库存异常处理流程

库存管理中的常见异常及处理:

异常类型

  1. 盘点差异异常:实际库存与系统库存不一致
  2. 效期异常:商品临近或超过保质期
  3. 质量异常:库存商品出现质量问题
  4. 呆滞库存异常:库存周转率过低
  5. 库存成本异常:成本计算出现异常

处理流程

┌──────────────┐ │ 异常监控发现 │ └──────────────┘ │ ▼ ┌──────────────┐ │ 异常影响评估 │ └──────────────┘ │ ▼ ┌──────────────┐ │ 处理方案制定 │───┐ └──────────────┘ │ │ │ ▼ │ ┌──────────────┐ │ ┌──────────────┐ │ 立即处理措施 │ │ │ 根本原因分析 │ └──────────────┘ │ └──────────────┘ │ │ │ ▼ │ ▼ ┌──────────────┐ │ ┌──────────────┐ │ 异常控制执行 │ │ │ 预防措施制定 │ └──────────────┘ │ └──────────────┘ │ │ │ └─────────┼─────────┘ │ ▼ ┌──────────────┐ │ 处理结果验证 │ └──────────────┘ │ ▼ ┌──────────────┐ │ 流程改进实施 │ └──────────────┘

具体异常处理策略

  1. 盘点差异处理

    • 差异数量确认(复盘)
    • 差异原因调查(流程、人为、系统)
    • 差异调整审批
    • 库存账面调整
    • 责任人处理与改进
  2. 效期异常处理

    • 效期预警提前处理
    • 促销活动加速销售
    • 商品调拨到高周转门店
    • 供应商退货协商
    • 报损处理与成本核销
  3. 质量异常处理

    • 质量问题隔离
    • 质量原因分析
    • 供应商质量索赔
    • 客户质量补偿
    • 质量改进措施
  4. 呆滞库存处理

    • 呆滞原因分析(预测、采购、销售)
    • 促销清仓处理
    • 物料再利用评估
    • 供应商退货协商
    • 采购策略调整

第四部分:数据模型详细设计

4.1 核心表结构设计示例

4.1.1 商品表(product)详细设计
-- 商品主表CREATETABLEproduct(product_idBIGINTPRIMARYKEYCOMMENT'商品ID',product_codeVARCHAR(50)NOTNULLUNIQUECOMMENT'商品编码',product_nameVARCHAR(200)NOTNULLCOMMENT'商品名称',product_barcodeVARCHAR(100)COMMENT'商品条码',product_short_nameVARCHAR(100)COMMENT'商品简称',-- 分类信息category_idBIGINTNOTNULLCOMMENT'商品分类ID',brand_idBIGINTCOMMENT'品牌ID',unit_idBIGINTNOTNULLCOMMENT'单位ID',-- 规格属性spec_modelVARCHAR(100)COMMENT'规格型号',weightDECIMAL(10,3)COMMENT'重量(kg)',volumeDECIMAL(10,3)COMMENT'体积(m³)',size_lengthDECIMAL(8,2)COMMENT'长(mm)',size_widthDECIMAL(8,2)COMMENT'宽(mm)',size_heightDECIMAL(8,2)COMMENT'高(mm)',-- 生鲜特性temperature_typeTINYINTNOTNULLCOMMENT'温层类型:1常温2冷藏3冷冻',shelf_lifeINTNOTNULLCOMMENT'保质期(小时)',storage_conditionVARCHAR(200)COMMENT'存储条件',origin_placeVARCHAR(200)COMMENT'产地',-- 库存属性min_stockINTCOMMENT'最低库存',max_stockINTCOMMENT'最高库存',safe_stockINTCOMMENT'安全库存',purchase_cycleINTCOMMENT'采购周期(天)',lead_timeINTCOMMENT'采购提前期(天)',-- 价格信息purchase_priceDECIMAL(10,2)COMMENT'采购价',cost_priceDECIMAL(10,2)COMMENT'成本价',sale_priceDECIMAL(10,2)COMMENT'销售价',market_priceDECIMAL(10,2)COMMENT'市场价',tax_rateDECIMAL(5,2)COMMENT'税率',-- 状态控制product_statusTINYINTDEFAULT1COMMENT'商品状态:0下架1上架2待审核',audit_statusTINYINTDEFAULT0COMMENT'审核状态:0未审核1审核通过2审核拒绝',is_virtualTINYINTDEFAULT0COMMENT'是否虚拟商品:0否1是',is_combinationTINYINTDEFAULT0COMMENT'是否组合商品:0否1是',is_weightTINYINTDEFAULT0COMMENT'是否称重商品:0否1是',-- 销售属性sales_volumeINTDEFAULT0COMMENT'销量',click_countINTDEFAULT0COMMENT'点击量',favorite_countINTDEFAULT0COMMENT'收藏量',-- 时间信息create_timeDATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',update_timeDATETIMEONUPDATECURRENT_TIMESTAMPCOMMENT'更新时间',audit_timeDATETIMECOMMENT'审核时间',shelf_timeDATETIMECOMMENT'上架时间',off_shelf_timeDATETIMECOMMENT'下架时间',-- 人员信息create_byBIGINTCOMMENT'创建人',update_byBIGINTCOMMENT'更新人',audit_byBIGINTCOMMENT'审核人',-- 索引INDEXidx_category(category_id),INDEXidx_brand(brand_id),INDEXidx_status(product_status),INDEXidx_temperature(temperature_type),INDEXidx_create_time(create_time),FULLTEXTINDEXidx_product_name(product_name))COMMENT='商品主表'ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;
4.1.2 订单表(customer_order)详细设计
-- 客户订单主表CREATETABLEcustomer_order(order_idBIGINTPRIMARYKEYCOMMENT'订单ID',order_noVARCHAR(50)NOTNULLUNIQUECOMMENT'订单号',order_typeTINYINTNOTNULLCOMMENT'订单类型:1普通订单2团购订单3预售订单',-- 客户信息customer_idBIGINTNOTNULLCOMMENT'客户ID',customer_nameVARCHAR(100)NOTNULLCOMMENT'客户名称',customer_phoneVARCHAR(20)COMMENT'客户电话',customer_levelTINYINTCOMMENT'客户等级',-- 金额信息total_amountDECIMAL(12,2)NOTNULLCOMMENT'订单总额',discount_amountDECIMAL(10,2)DEFAULT0COMMENT'折扣金额',coupon_amountDECIMAL(10,2)DEFAULT0COMMENT'优惠券金额',freight_amountDECIMAL(8,2)DEFAULT0COMMENT'运费金额',tax_amountDECIMAL(10,2)DEFAULT0COMMENT'税额',actual_amountDECIMAL(12,2)NOTNULLCOMMENT'实付金额',paid_amountDECIMAL(12,2)DEFAULT0COMMENT'已付金额',-- 订单状态order_statusTINYINTNOTNULLCOMMENT'订单状态:1待确认2待分拣3分拣中4待配送5配送中6已完成7已取消',payment_statusTINYINTDEFAULT0COMMENT'支付状态:0未支付1已支付2部分支付',invoice_statusTINYINTDEFAULT0COMMENT'开票状态:0未开票1已开票',-- 支付信息payment_methodTINYINTCOMMENT'支付方式:1现金2刷卡3转账4微信5支付宝',payment_timeDATETIMECOMMENT'支付时间',payment_transaction_noVARCHAR(100)COMMENT'支付交易号',-- 配送信息delivery_dateDATENOTNULLCOMMENT'配送日期',delivery_time_slotVARCHAR(50)COMMENT'配送时段',delivery_typeTINYINTCOMMENT'配送方式:1送货上门2自提',delivery_addressVARCHAR(500)COMMENT'配送地址',delivery_contact_nameVARCHAR(50)COMMENT'收货人',delivery_contact_phoneVARCHAR(20)COMMENT'收货电话',-- 自提信息pickup_point_idBIGINTCOMMENT'自提点ID',pickup_codeVARCHAR(20)COMMENT'提货码',pickup_timeDATETIMECOMMENT'自提时间',-- 仓库信息warehouse_idBIGINTCOMMENT'发货仓库ID',warehouse_nameVARCHAR(100)COMMENT'发货仓库名称',-- 物流信息logistics_companyVARCHAR(100)COMMENT'物流公司',logistics_noVARCHAR(100)COMMENT'物流单号',logistics_feeDECIMAL(8,2)COMMENT'物流费用',-- 时间信息order_timeDATETIMENOTNULLCOMMENT'下单时间',confirm_timeDATETIMECOMMENT'确认时间',picking_timeDATETIMECOMMENT'分拣开始时间',picking_finish_timeDATETIMECOMMENT'分拣完成时间',shipping_timeDATETIMECOMMENT'发货时间',delivery_timeDATETIMECOMMENT'配送时间',receive_timeDATETIMECOMMENT'收货时间',complete_timeDATETIMECOMMENT'完成时间',cancel_timeDATETIMECOMMENT'取消时间',-- 备注信息customer_remarkVARCHAR(500)COMMENT'客户备注',internal_remarkVARCHAR(500)COMMENT'内部备注',cancel_reasonVARCHAR(200)COMMENT'取消原因',-- 人员信息create_byBIGINTCOMMENT'创建人',confirm_byBIGINTCOMMENT'确认人',picking_byBIGINTCOMMENT'分拣人',shipping_byBIGINTCOMMENT'发货人',receive_byBIGINTCOMMENT'收货人',-- 索引INDEXidx_customer(customer_id),INDEXidx_order_no(order_no),INDEXidx_status(order_status),INDEXidx_delivery_date(delivery_date),INDEXidx_create_time(order_time),INDEXidx_payment_status(payment_status),INDEXidx_warehouse(warehouse_id))COMMENT='客户订单主表'ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;
4.1.3 库存表(inventory)详细设计
-- 库存主表CREATETABLEinventory(inventory_idBIGINTPRIMARYKEYCOMMENT'库存ID',-- 位置信息warehouse_idBIGINTNOTNULLCOMMENT'仓库ID',location_idBIGINTCOMMENT'库位ID',warehouse_codeVARCHAR(50)COMMENT'仓库编码',location_codeVARCHAR(50)COMMENT'库位编码',-- 商品信息product_idBIGINTNOTNULLCOMMENT'商品ID',product_codeVARCHAR(50)COMMENT'商品编码',product_nameVARCHAR(200)COMMENT'商品名称',batch_idBIGINTCOMMENT'批次ID',batch_noVARCHAR(50)COMMENT'批次号',-- 库存数量total_quantityINTNOTNULLCOMMENT'总数量',available_quantityINTNOTNULLCOMMENT'可用数量',locked_quantityINTDEFAULT0COMMENT'锁定数量',damaged_quantityINTDEFAULT0COMMENT'破损数量',quarantine_quantityINTDEFAULT0COMMENT'隔离数量',-- 库存价值unit_costDECIMAL(10,2)COMMENT'单位成本',total_costDECIMAL(12,2)COMMENT'总成本',avg_costDECIMAL(10,2)COMMENT'平均成本',last_purchase_priceDECIMAL(10,2)COMMENT'最后采购价',-- 批次信息production_dateDATECOMMENT'生产日期',expiry_dateDATECOMMENT'到期日期',remaining_daysINTCOMMENT'剩余天数',-- 库存状态inventory_statusTINYINTDEFAULT1COMMENT'库存状态:1正常2预警3过期',quality_statusTINYINTDEFAULT1COMMENT'质量状态:1合格2待检3不合格',stock_ageINTCOMMENT'库龄(天)',-- 时间信息last_in_timeDATETIMECOMMENT'最后入库时间',last_out_timeDATETIMECOMMENT'最后出库时间',create_timeDATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',update_timeDATETIMEONUPDATECURRENT_TIMESTAMPCOMMENT'更新时间',-- 预警信息min_stock_warningTINYINTDEFAULT0COMMENT'最低库存预警:0无1有',expiry_warningTINYINTDEFAULT0COMMENT'效期预警:0无1有',overstock_warningTINYINTDEFAULT0COMMENT'超储预警:0无1有',-- 索引UNIQUEKEYuk_inventory(warehouse_id,product_id,batch_no(20)),INDEXidx_product(product_id),INDEXidx_batch(batch_id),INDEXidx_warehouse(warehouse_id),INDEXidx_location(location_id),INDEXidx_expiry(expiry_date),INDEXidx_status(inventory_status),INDEXidx_available(available_quantity))COMMENT='库存主表'ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;
4.1.4 采购单表(purchase_order)详细设计
-- 采购订单主表CREATETABLEpurchase_order(purchase_idBIGINTPRIMARYKEYCOMMENT'采购单ID',purchase_noVARCHAR(50)NOTNULLUNIQUECOMMENT'采购单号',-- 供应商信息supplier_idBIGINTNOTNULLCOMMENT'供应商ID',supplier_codeVARCHAR(50)COMMENT'供应商编码',supplier_nameVARCHAR(200)NOTNULLCOMMENT'供应商名称',supplier_contactVARCHAR(50)COMMENT'供应商联系人',supplier_phoneVARCHAR(20)COMMENT'供应商电话',-- 采购信息purchase_typeTINYINTCOMMENT'采购类型:1日常采购2紧急采购3合同采购',purchase_categoryTINYINTCOMMENT'采购类别:1原材料2成品3耗材',contract_noVARCHAR(50)COMMENT'合同号',-- 金额信息total_amountDECIMAL(12,2)NOTNULLCOMMENT'采购总额',tax_amountDECIMAL(10,2)COMMENT'税额',discount_amountDECIMAL(10,2)DEFAULT0COMMENT'折扣金额',other_feeDECIMAL(8,2)DEFAULT0COMMENT'其他费用',actual_amountDECIMAL(12,2)NOTNULLCOMMENT'实际金额',prepaid_amountDECIMAL(12,2)DEFAULT0COMMENT'预付金额',paid_amountDECIMAL(12,2)DEFAULT0COMMENT'已付金额',-- 订单状态order_statusTINYINTNOTNULLCOMMENT'订单状态:1草稿2待审核3审核通过4审核拒绝5已发送6供应商确认7部分收货8已完成9已取消',payment_statusTINYINTDEFAULT0COMMENT'付款状态:0未付款1部分付款2已付款',invoice_statusTINYINTDEFAULT0COMMENT'发票状态:0未开票1部分开票2已开票',-- 时间信息order_dateDATENOTNULLCOMMENT'订单日期',required_dateDATECOMMENT'要求到货日期',confirm_dateDATECOMMENT'确认日期',delivery_dateDATECOMMENT'预计交货日期',complete_dateDATECOMMENT'完成日期',cancel_dateDATECOMMENT'取消日期',-- 交货信息delivery_addressVARCHAR(500)COMMENT'交货地址',delivery_contactVARCHAR(50)COMMENT'交货联系人',delivery_phoneVARCHAR(20)COMMENT'交货联系电话',-- 仓库信息warehouse_idBIGINTCOMMENT'收货仓库ID',warehouse_nameVARCHAR(100)COMMENT'收货仓库名称',-- 物流信息logistics_companyVARCHAR(100)COMMENT'物流公司',logistics_noVARCHAR(100)COMMENT'物流单号',freight_feeDECIMAL(8,2)COMMENT'运费',-- 审批信息audit_statusTINYINTDEFAULT0COMMENT'审核状态:0未审核1审核通过2审核拒绝',audit_opinionVARCHAR(500)COMMENT'审核意见',audit_timeDATETIMECOMMENT'审核时间',audit_byBIGINTCOMMENT'审核人',-- 备注信息remarkVARCHAR(500)COMMENT'备注',internal_remarkVARCHAR(500)COMMENT'内部备注',cancel_reasonVARCHAR(200)COMMENT'取消原因',-- 人员信息create_byBIGINTCOMMENT'创建人',update_byBIGINTCOMMENT'更新人',confirm_byBIGINTCOMMENT'确认人',-- 索引INDEXidx_supplier(supplier_id),INDEXidx_purchase_no(purchase_no),INDEXidx_status(order_status),INDEXidx_order_date(order_date),INDEXidx_required_date(required_date),INDEXidx_warehouse(warehouse_id))COMMENT='采购订单主表'ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;

4.2 复杂关联关系设计

4.2.1 多层次分类结构设计

商品分类需要支持无限层级结构:

-- 商品分类表(无限层级设计)CREATETABLEproduct_category(category_idBIGINTPRIMARYKEYCOMMENT'分类ID',parent_idBIGINTDEFAULT0COMMENT'父分类ID',category_codeVARCHAR(50)NOTNULLUNIQUECOMMENT'分类编码',category_nameVARCHAR(100)NOTNULLCOMMENT'分类名称',category_pathVARCHAR(500)COMMENT'分类路径',levelTINYINTDEFAULT1COMMENT'分类级别',sort_orderINTDEFAULT0COMMENT'排序',-- 分类属性category_typeTINYINTCOMMENT'分类类型:1标准分类2虚拟分类',is_leafTINYINTDEFAULT0COMMENT'是否叶子节点:0否1是',statusTINYINTDEFAULT1COMMENT'状态:0停用1启用',-- 生鲜特性temperature_typeTINYINTCOMMENT'温层类型:1常温2冷藏3冷冻',shelf_life_standardINTCOMMENT'标准保质期(小时)',storage_temperatureVARCHAR(50)COMMENT'存储温度',-- 业务属性purchase_cycle_standardINTCOMMENT'标准采购周期',lead_time_standardINTCOMMENT'标准提前期',abc_classificationVARCHAR(1)COMMENT'ABC分类',-- 图片信息category_imageVARCHAR(500)COMMENT'分类图片',category_iconVARCHAR(500)COMMENT'分类图标',-- SEO信息seo_titleVARCHAR(200)COMMENT'SEO标题',seo_keywordsVARCHAR(200)COMMENT'SEO关键词',seo_descriptionVARCHAR(500)COMMENT'SEO描述',-- 时间信息create_timeDATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',update_timeDATETIMEONUPDATECURRENT_TIMESTAMPCOMMENT'更新时间',-- 人员信息create_byBIGINTCOMMENT'创建人',update_byBIGINTCOMMENT'更新人',-- 索引INDEXidx_parent(parent_id),INDEXidx_level(level),INDEXidx_status(status),INDEXidx_sort(sort_order),INDEXidx_code(category_code))COMMENT='商品分类表'ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;

分类路径维护策略

-- 分类路径更新存储过程DELIMITER//CREATEPROCEDUREupdate_category_path(INcat_idBIGINT)BEGINDECLAREparent_pathVARCHAR(500);DECLAREcurrent_pathVARCHAR(500);-- 获取父分类路径SELECTcategory_pathINTOparent_pathFROMproduct_categoryWHEREcategory_id=(SELECTparent_idFROMproduct_categoryWHEREcategory_id=cat_id);-- 构建当前分类路径IFparent_pathISNULLTHENSETcurrent_path=CONCAT('/',cat_id,'/');ELSESETcurrent_path=CONCAT(parent_path,cat_id,'/');ENDIF;-- 更新当前分类路径UPDATEproduct_categorySETcategory_path=current_path,level=LENGTH(current_path)-LENGTH(REPLACE(current_path,'/',''))-1WHEREcategory_id=cat_id;-- 递归更新子分类路径UPDATEproduct_category pcJOIN(SELECTcategory_idFROMproduct_categoryWHEREFIND_IN_SET(category_id,get_category_children(cat_id)))ASchildrenONpc.category_id=children.category_idSETpc.category_path=CONCAT(current_path,pc.category_id,'/'),pc.level=LENGTH(current_path)-LENGTH(REPLACE(current_path,'/',''))WHEREpc.parent_id=cat_id;END//DELIMITER;
4.2.2 批次追溯链设计

生鲜商品需要完整的批次追溯:

-- 批次追溯链设计CREATETABLEproduct_batch_trace(trace_idBIGINTPRIMARYKEYCOMMENT'追溯ID',batch_idBIGINTNOTNULLCOMMENT'批次ID',trace_typeTINYINTNOTNULLCOMMENT'追溯类型:1采购入库2生产入库3退货入库4调拨入库',-- 来源信息source_typeTINYINTCOMMENT'来源类型:1供应商2生产车间3其他仓库',source_idBIGINTCOMMENT'来源ID',source_nameVARCHAR(200)COMMENT'来源名称',source_batch_noVARCHAR(50)COMMENT'来源批次号',-- 目标信息target_typeTINYINTCOMMENT'目标类型:1仓库2门店3客户',target_idBIGINTCOMMENT'目标ID',target_nameVARCHAR(200)COMMENT'目标名称',-- 商品信息product_idBIGINTNOTNULLCOMMENT'商品ID',product_nameVARCHAR(200)COMMENT'商品名称',quantityDECIMAL(12,3)NOTNULLCOMMENT'数量',unitVARCHAR(20)COMMENT'单位',-- 时间信息trace_timeDATETIMENOTNULLCOMMENT'追溯时间',operation_timeDATETIMECOMMENT'操作时间',-- 业务单据business_typeVARCHAR(50)COMMENT'业务类型',business_noVARCHAR(50)COMMENT'业务单号',business_detail_idBIGINTCOMMENT'业务明细ID',-- 位置信息from_locationVARCHAR(100)COMMENT'来源位置',to_locationVARCHAR(100)COMMENT'目标位置',-- 人员信息operator_idBIGINTCOMMENT'操作人ID',operator_nameVARCHAR(50)COMMENT'操作人姓名',-- 质量信息quality_statusTINYINTDEFAULT1COMMENT'质量状态:1合格2不合格',inspection_noVARCHAR(50)COMMENT'检验单号',inspection_resultVARCHAR(500)COMMENT'检验结果',-- 索引INDEXidx_batch(batch_id),INDEXidx_product(product_id),INDEXidx_trace_time(trace_time),INDEXidx_business(business_type,business_no),INDEXidx_source(source_type,source_id),INDEXidx_target(target_type,target_id))COMMENT='批次追溯链'ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;

追溯链查询函数

-- 获取商品完整追溯链DELIMITER//CREATEFUNCTIONget_product_trace_chain(product_idBIGINT,batch_noVARCHAR(50))RETURNSTEXTBEGINDECLAREtrace_chainTEXT;SELECTJSON_ARRAYAGG(JSON_OBJECT('trace_id',trace_id,'trace_type',trace_type,'trace_time',DATE_FORMAT(trace_time,'%Y-%m-%d %H:%i:%s'),'business_type',business_type,'business_no',business_no,'source',JSON_OBJECT('type',source_type,'name',source_name),'target',JSON_OBJECT('type',target_type,'name',target_name),'quantity',quantity,'operator',operator_name,'quality_status',quality_status))INTOtrace_chainFROMproduct_batch_traceWHEREproduct_id=product_idANDbatch_idIN(SELECTbatch_idFROMproduct_batchWHEREbatch_no=batch_no)ORDERBYtrace_time;RETURNtrace_chain;END//DELIMITER;

4.3 高级数据模型设计

4.3.1 历史数据与版本控制

关键业务数据需要版本控制:

-- 价格历史表(支持版本控制)CREATETABLEprice_history(history_idBIGINTPRIMARYKEYCOMMENT'历史ID',-- 价格主体price_typeTINYINTNOTNULLCOMMENT'价格类型:1采购价2销售价3成本价',product_idBIGINTNOTNULLCOMMENT'商品ID',price_group_idBIGINTCOMMENT'价格组ID',customer_idBIGINTCOMMENT'客户ID',supplier_idBIGINTCOMMENT'供应商ID',-- 价格信息old_priceDECIMAL(10,2)COMMENT'原价格',new_priceDECIMAL(10,2)NOTNULLCOMMENT'新价格',currencyVARCHAR(3)DEFAULT'CNY'COMMENT'币种',tax_rateDECIMAL(5,2)COMMENT'税率',price_unitVARCHAR(20)COMMENT'价格单位',-- 生效信息effective_dateDATENOTNULLCOMMENT'生效日期',expiry_dateDATECOMMENT'失效日期',is_currentTINYINTDEFAULT1COMMENT'是否当前价格:0否1是',-- 变更信息change_typeTINYINTCOMMENT'变更类型:1新建2调整3促销',change_reasonVARCHAR(200)COMMENT'变更原因',change_remarkVARCHAR(500)COMMENT'变更备注',-- 审批信息approval_statusTINYINTDEFAULT1COMMENT'审批状态:1待审批2审批通过3审批拒绝',approval_opinionVARCHAR(500)COMMENT'审批意见',approval_timeDATETIMECOMMENT'审批时间',approval_byBIGINTCOMMENT'审批人',-- 时间信息create_timeDATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间',update_timeDATETIMEONUPDATECURRENT_TIMESTAMPCOMMENT'更新时间',-- 人员信息create_byBIGINTCOMMENT'创建人',update_byBIGINTCOMMENT'更新人',-- 索引INDEXidx_product(product_id),INDEXidx_price_type(price_type),INDEXidx_effective(effective_date),INDEXidx_current(is_current),INDEXidx_customer(customer_id),INDEXidx_supplier(supplier_id),UNIQUEKEYuk_price_version(product_id,price_type,effective_date))COMMENT='价格历史表'ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;

价格版本控制策略

-- 价格变更触发器DELIMITER//CREATETRIGGERbefore_price_update BEFOREUPDATEONproduct_priceFOR EACH ROWBEGIN-- 将旧价格插入历史表INSERTINTOprice_history(price_type,product_id,old_price,new_price,effective_date,change_type,change_reason,create_by,create_time)VALUES(2,-- 销售价OLD.product_id,OLD.sale_price,NEW.sale_price,CURDATE(),2,-- 调整'系统价格调整',NEW.update_by,NOW());-- 标记历史价格为非当前UPDATEprice_historySETis_current=0,expiry_date=CURDATE()-INTERVAL1DAYWHEREproduct_id=OLD.product_idANDprice_type=2ANDis_current=1;END//DELIMITER;
4.3.2 审计日志与数据变更跟踪

关键数据变更需要完整审计:

-- 数据变更审计表CREATETABLEdata_change_audit(audit_idBIGINTPRIMARYKEYCOMMENT'审计ID',-- 变更对象table_nameVARCHAR(100)NOTNULLCOMMENT'表名',record_idBIGINTNOTNULLCOMMENT'记录ID',operation_typeTINYINTNOTNULLCOMMENT'操作类型:1新增2修改3删除',-- 变更数据old_data JSONCOMMENT'旧数据',new_data JSONCOMMENT'新数据',changed_fields JSONCOMMENT'变更字段',-- 变更信息change_reasonVARCHAR(500)COMMENT'变更原因',business_noVARCHAR(50)COMMENT'业务单号',-- 时间信息operation_timeDATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT'操作时间',-- 人员信息operator_idBIGINTCOMMENT'操作人ID',operator_nameVARCHAR(50)COMMENT'操作人姓名',operator_ipVARCHAR(50)COMMENT'操作IP',user_agentVARCHAR(500)COMMENT'用户代理',-- 索引INDEXidx_table_record(table_name,record_id),INDEXidx_operation_time(operation_time),INDEXidx_operator(operator_id),INDEXidx_business_no(business_no))COMMENT='数据变更审计表'ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;

审计触发器示例

-- 订单表审计触发器DELIMITER//CREATETRIGGERaudit_customer_order_after_updateAFTERUPDATEONcustomer_orderFOR EACH ROWBEGINDECLAREchanged_fields JSON;DECLAREold_data JSON;DECLAREnew_data JSON;-- 构建变更字段SETchanged_fields=JSON_ARRAY();IFOLD.order_status!=NEW.order_statusTHENSETchanged_fields=JSON_ARRAY_APPEND(changed_fields,'$','order_status');ENDIF;IFOLD.payment_status!=NEW.payment_statusTHENSETchanged_fields=JSON_ARRAY_APPEND(changed_fields,'$','payment_status');ENDIF;-- 如果有字段变更,记录审计日志IFJSON_LENGTH(changed_fields)>0THEN-- 构建旧数据SETold_data=JSON_OBJECT('order_status',OLD.order_status,'payment_status',OLD.payment_status,'actual_amount',OLD.actual_amount);-- 构建新数据SETnew_data=JSON_OBJECT('order_status',NEW.order_status,'payment_status',NEW.payment_status,'actual_amount',NEW.actual_amount);-- 插入审计记录INSERTINTOdata_change_audit(table_name,record_id,operation_type,old_data,new_data,changed_fields,business_no,operator_id,operator_name)VALUES('customer_order',NEW.order_id,2,-- 修改old_data,new_data,changed_fields,NEW.order_no,NEW.update_by,(SELECTusernameFROMsys_userWHEREuser_id=NEW.update_by));ENDIF;END//DELIMITER;

4.4 性能优化设计

4.4.1 分库分表策略

基于业务场景的分库分表设计:

-- 按业务垂直分库-- 库1: 主数据库 (master_data)-- 包含:商品、分类、客户、供应商等基础数据-- 库2: 交易库 (transaction_data)-- 包含:订单、库存、采购等交易数据-- 库3: 财务库 (financial_data)-- 包含:应收应付、账单、付款等财务数据-- 库4: 报表库 (report_data)-- 包含:各类报表和统计数据的汇总-- 水平分表策略:按时间分表-- 订单表按月分表CREATETABLEcustomer_order_202401(-- 同原customer_order表结构)COMMENT='2024年1月订单表'PARTITIONBYRANGE(YEAR(order_time)*100+MONTH(order_time))(PARTITIONp202401VALUESLESS THAN(202402),PARTITIONp202402VALUESLESS THAN(202403),PARTITIONp202403VALUESLESS THAN(202404));-- 库存流水按日分表CREATETABLEinventory_flow_20240101(-- 同原inventory_flow表结构)COMMENT='2024年1月1日库存流水表';
4.4.2 读写分离与缓存策略
-- 读写分离配置-- 主库(写操作)master_host='192.168.1.10'master_port=3306-- 从库1(读操作)slave1_host='192.168.1.11'slave1_port=3306-- 从库2(读操作)slave2_host='192.168.1.12'slave2_port=3306-- 缓存策略配置-- 一级缓存:本地缓存(Guava Cache)-- 缓存商品基本信息,有效期5分钟-- 缓存客户基本信息,有效期10分钟-- 缓存价格信息,有效期1分钟-- 二级缓存:Redis分布式缓存-- 缓存商品详情,有效期30分钟-- 缓存订单详情,有效期1小时-- 缓存库存数量,有效期5分钟(实时更新)-- 缓存用户会话,有效期2小时-- 缓存键设计规范-- 商品缓存:product:{product_id}:detail-- 订单缓存:order:{order_no}:detail-- 库存缓存:inventory:{warehouse_id}:{product_id}:quantity-- 价格缓存:price:{product_id}:{customer_id}:current
4.4.3 索引优化设计
-- 复合索引设计-- 订单查询优化CREATEINDEXidx_order_queryONcustomer_order(customer_id,order_status,order_timeDESC);-- 库存查询优化CREATEINDEXidx_inventory_queryONinventory(warehouse_id,product_id,inventory_status,available_quantity);-- 商品查询优化CREATEINDEXidx_product_queryONproduct(category_id,product_status,create_timeDESC);-- 覆盖索引设计CREATEINDEXidx_order_coverONcustomer_order(order_no,customer_id,order_status,actual_amount,order_time);-- 函数索引(MySQL 8.0+)CREATEINDEXidx_order_dateONcustomer_order((DATE(order_time)));-- 前缀索引CREATEINDEXidx_product_name_prefixONproduct(product_name(20));-- 定期索引优化维护-- 每周执行一次OPTIMIZETABLEcustomer_order;ANALYZETABLEinventory;CHECKTABLEproduct FASTQUICK;

第五部分:业务流程集成与数据流

5.1 端到端业务流程数据流

5.1.1 销售订单到收款全流程数据流
┌─────────────────────────────────────────────────────────────────────┐ │ 销售订单到收款端到端数据流 │ ├──────────────┬─────────────────────┬─────────────────┬─────────────┤ │ 业务阶段 │ 主要数据表 │ 关键字段 │ 数据状态 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 1.订单创建 │ customer_order │ order_status=1 │ 待确认 │ │ │ order_detail │ quantity │ 已保存 │ │ │ inventory │ locked_quantity │ 预占锁定 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 2.订单确认 │ customer_order │ order_status=2 │ 待分拣 │ │ │ order_audit │ audit_result=1 │ 审核通过 │ │ │ inventory_flow │ change_type=2 │ 锁定确认 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 3.分拣处理 │ sorting_task │ task_status=1 │ 进行中 │ │ │ sorting_detail │ actual_quantity │ 实际分拣 │ │ │ inventory │ locked_quantity │ 锁定减少 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 4.发货出库 │ delivery_order │ delivery_status=1│ 待发货 │ │ │ delivery_detail │ shipped_quantity│ 已发货数量 │ │ │ outbound_order │ outbound_status=1│ 出库中 │ │ │ inventory │ available_quantity│ 可用减少 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 5.配送运输 │ delivery_task │ task_status=2 │ 配送中 │ │ │ delivery_track │ location │ 实时位置 │ │ │ delivery_status_log │ status_change │ 状态变更 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 6.客户收货 │ receipt_order │ receipt_status=1│ 已收货 │ │ │ receipt_detail │ received_quantity│ 实收数量 │ │ │ customer_order │ order_status=6 │ 已完成 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 7.应收确认 │ receivable │ receivable_status=1│ 待收款 │ │ │ receivable_detail │ amount │ 应收金额 │ │ │ customer_order │ payment_status=1│ 已支付 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 8.收款核销 │ collection_order │ collection_status=1│ 已收款 │ │ │ collection_detail │ collected_amount│ 实收金额 │ │ │ account_flow │ flow_type=1 │ 收入 │ │ │ receivable │ receivable_status=2│ 已核销 │ └──────────────┴─────────────────────┴─────────────────┴─────────────┘
5.1.2 采购到付款全流程数据流
┌─────────────────────────────────────────────────────────────────────┐ │ 采购到付款端到端数据流 │ ├──────────────┬─────────────────────┬─────────────────┬─────────────┤ │ 业务阶段 │ 主要数据表 │ 关键字段 │ 数据状态 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 1.采购申请 │ purchase_requisition │ requisition_status=1│ 申请中 │ │ │ requisition_detail │ request_quantity │ 申请数量 │ │ │ inventory_alert │ alert_status=1 │ 预警中 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 2.采购审批 │ purchase_requisition │ requisition_status=2│ 已批准 │ │ │ audit_record │ audit_result=1 │ 审批通过 │ │ │ purchase_plan │ plan_status=1 │ 计划制定 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 3.采购下单 │ purchase_order │ order_status=3 │ 已发送 │ │ │ purchase_order_detail│ order_quantity │ 订购数量 │ │ │ supplier_quotation │ quotation_status=1│ 报价接受 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 4.供应商发货 │ purchase_order │ order_status=4 │ 已发货 │ │ │ delivery_notice │ notice_status=1 │ 发货通知 │ │ │ purchase_inbound_order│ inbound_status=1│ 待收货 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 5.到货验收 │ inbound_inspection │ inspection_status=1│ 检验中 │ │ │ quality_inspection │ quality_result=1 │ 合格 │ │ │ product_batch │ batch_status=1 │ 批次创建 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 6.入库上架 │ inbound_putaway │ putaway_status=1 │ 上架中 │ │ │ inventory │ total_quantity │ 库存增加 │ │ │ inventory_flow │ flow_type=1 │ 入库 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 7.应付确认 │ payable │ payable_status=1 │ 待付款 │ │ │ payable_detail │ payable_amount │ 应付金额 │ │ │ purchase_order │ order_status=8 │ 已完成 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 8.发票匹配 │ supplier_invoice │ invoice_status=1 │ 已接收 │ │ │ three_way_matching │ matching_status=1│ 匹配成功 │ │ │ invoice_verification │ verify_result=1 │ 验证通过 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 9.付款执行 │ payment_order │ payment_status=1 │ 已付款 │ │ │ payment_detail │ paid_amount │ 实付金额 │ │ │ account_flow │ flow_type=2 │ 支出 │ │ │ payable │ payable_status=2 │ 已核销 │ └──────────────┴─────────────────────┴─────────────────┴─────────────┘

5.2 实时数据同步与ETL流程

5.2.1 实时数据同步架构
┌─────────────────────────────────────────────────────────────────────┐ │ 实时数据同步架构 │ ├──────────────┬─────────────────────┬─────────────────┬─────────────┤ │ 数据层 │ 同步技术 │ 同步频率 │ 数据目标 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 业务数据库 │ MySQL Binlog │ 实时 │ 缓存层 │ │ │ Canal监听 │ <1秒延迟 │ 搜索引擎 │ │ │ 消息队列 │ 事件驱动 │ 数据仓库 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 缓存层 │ Redis Pub/Sub │ 实时 │ 应用层 │ │ │ 本地缓存更新 │ <100毫秒 │ 前端 │ │ │ 缓存失效策略 │ 主动/被动 │ API层 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 搜索引擎 │ Logstash │ 准实时 │ 查询服务 │ │ │ Elasticsearch索引 │ <5秒延迟 │ 分析服务 │ │ │ 全文索引更新 │ 增量更新 │ 报表服务 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 数据仓库 │ Flink CDC │ 近实时 │ BI分析 │ │ │ 维度建模 │ <1分钟延迟 │ 数据挖掘 │ │ │ 事实表更新 │ 微批处理 │ 机器学习 │ └──────────────┴─────────────────────┴─────────────────┴─────────────┘
5.2.2 订单状态实时同步流程
// 订单状态变更事件发布@Component@Slf4jpublicclassOrderStatusChangePublisher{@AutowiredprivateRabbitTemplaterabbitTemplate;@AutowiredprivateRedisTemplate<String,Object>redisTemplate;@TransactionalEventListenerpublicvoidhandleOrderStatusChange(OrderStatusChangeEventevent){Orderorder=event.getOrder();// 1. 更新Redis缓存StringcacheKey="order:"+order.getOrderNo()+":status";redisTemplate.opsForValue().set(cacheKey,order.getOrderStatus(),1,TimeUnit.HOURS);// 2. 发布消息到MQOrderStatusMessagemessage=newOrderStatusMessage();message.setOrderNo(order.getOrderNo());message.setOldStatus(event.getOldStatus());message.setNewStatus(order.getOrderStatus());message.setChangeTime(LocalDateTime.now());message.setOperator(event.getOperator());rabbitTemplate.convertAndSend("order.exchange","order.status.change",message);// 3. 发送WebSocket通知sendWebSocketNotification(order.getCustomerId(),message);// 4. 记录状态变更日志saveStatusChangeLog(order,event);log.info("订单状态变更通知已发送: {}",order.getOrderNo());}// 发送WebSocket实时通知privatevoidsendWebSocketNotification(LongcustomerId,OrderStatusMessagemessage){Map<String,Object>notification=newHashMap<>();notification.put("type","ORDER_STATUS_CHANGE");notification.put("orderNo",message.getOrderNo());notification.put("newStatus",message.getNewStatus());notification.put("changeTime",message.getChangeTime());// 通过WebSocket发送给客户webSocketService.sendToUser(String.valueOf(customerId),"/topic/order/status",notification);}}
5.2.3 库存实时同步流程
// 库存变更同步服务@Service@Slf4jpublicclassInventorySyncService{@AutowiredprivateElasticsearchRestTemplateelasticsearchTemplate;@AutowiredprivateInventoryMapperinventoryMapper;@AutowiredprivateRedisTemplate<String,Object>redisTemplate;// 库存变更事件处理@EventListenerpublicvoidhandleInventoryChange(InventoryChangeEventevent){// 1. 更新Redis缓存updateRedisCache(event);// 2. 同步到ElasticsearchsyncToElasticsearch(event);// 3. 发送库存预警检查checkInventoryAlert(event);// 4. 更新实时库存看板updateInventoryDashboard(event);}// 更新Redis缓存privatevoidupdateRedisCache(InventoryChangeEventevent){StringcacheKey=String.format("inventory:%d:%d:quantity",event.getWarehouseId(),event.getProductId());// 获取最新库存数量IntegerlatestQuantity=inventoryMapper.selectAvailableQuantity(event.getWarehouseId(),event.getProductId());// 更新缓存,设置5分钟过期redisTemplate.opsForValue().set(cacheKey,latestQuantity,5,TimeUnit.MINUTES);// 更新库存变化趋势updateInventoryTrend(event,latestQuantity);}// 同步到ElasticsearchprivatevoidsyncToElasticsearch(InventoryChangeEventevent){IndexQueryindexQuery=newIndexQuery();indexQuery.setId(generateDocId(event));InventoryDocumentdoc=newInventoryDocument();doc.setWarehouseId(event.getWarehouseId());doc.setProductId(event.getProductId());doc.setProductName(event.getProductName());doc.setAvailableQuantity(event.getAvailableQuantity());doc.setChangeQuantity(event.getChangeQuantity());doc.setChangeType(event.getChangeType());doc.setChangeTime(LocalDateTime.now());doc.setBusinessNo(event.getBusinessNo());indexQuery.setObject(doc);elasticsearchTemplate.index(indexQuery,IndexCoordinates.of("inventory"));}// 库存预警检查privatevoidcheckInventoryAlert(InventoryChangeEventevent){// 获取库存配置InventoryConfigconfig=inventoryMapper.selectInventoryConfig(event.getWarehouseId(),event.getProductId());if(config==null)return;// 检查最低库存预警if(event.getAvailableQuantity()<=config.getMinStock()){sendInventoryAlert(event,"MIN_STOCK",config.getMinStock());}// 检查最高库存预警if(event.getAvailableQuantity()>=config.getMaxStock()){sendInventoryAlert(event,"MAX_STOCK",config.getMaxStock());}// 检查效期预警checkExpiryAlert(event);}}

5.3 批处理与ETL流程

5.3.1 日终批处理流程
┌─────────────────────────────────────────────────────────────────────┐ │ 日终批处理流程 │ ├──────────────┬─────────────────────┬─────────────────┬─────────────┤ │ 处理阶段 │ 主要任务 │ 数据表 │ 执行时间 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 1.数据准备 │ 业务数据冻结 │ 所有业务表 │ 23:00 │ │ │ 临时表创建 │ temp_* │ 23:05 │ │ │ 增量数据抽取 │ 变更日志表 │ 23:10 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 2.数据清洗 │ 数据质量检查 │ 业务数据表 │ 23:15 │ │ │ 异常数据处理 │ data_exception │ 23:20 │ │ │ 数据标准化 │ 标准化规则表 │ 23:25 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 3.数据转换 │ 维度模型构建 │ dim_* │ 23:30 │ │ │ 事实表汇总 │ fact_* │ 23:45 │ │ │ 数据聚合计算 │ aggregate_* │ 00:00 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 4.数据加载 │ 数据仓库加载 │ dw_* │ 00:15 │ │ │ 数据立方体构建 │ cube_* │ 00:30 │ │ │ 物化视图刷新 │ mv_* │ 00:45 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 5.报表生成 │ 业务报表计算 │ report_* │ 01:00 │ │ │ 分析报表生成 │ analysis_* │ 01:30 │ │ │ 管理报表生成 │ management_* │ 02:00 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 6.数据归档 │ 历史数据迁移 │ history_* │ 02:30 │ │ │ 数据压缩存储 │ archive_* │ 03:00 │ │ │ 索引重建优化 │ 所有索引 │ 03:30 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 7.系统检查 │ 数据一致性验证 │ 所有关键表 │ 04:00 │ │ │ 系统性能检查 │ 系统监控表 │ 04:30 │ │ │ 批处理日志记录 │ batch_log │ 05:00 │ └──────────────┴─────────────────────┴─────────────────┴─────────────┘
5.3.2 数据仓库ETL流程
-- 数据仓库ETL存储过程DELIMITER//CREATEPROCEDURErun_daily_etl_process(INprocess_dateDATE)BEGINDECLAREEXITHANDLERFORSQLEXCEPTIONBEGIN-- 记录错误日志INSERTINTOetl_error_log(process_date,error_message,error_stack)VALUES(process_date,'ETL过程执行失败',CONCAT('Error: ',SQLSTATE,' - ',SQLERRM));-- 回滚ROLLBACK;-- 发送告警CALLsend_etl_failure_alert(process_date,SQLERRM);END;-- 开始事务STARTTRANSACTION;-- 1. 清空临时表TRUNCATETABLEtemp_sales_fact;TRUNCATETABLEtemp_purchase_fact;TRUNCATETABLEtemp_inventory_fact;-- 2. 抽取销售事实数据INSERTINTOtemp_sales_fact(date_key,customer_key,product_key,store_key,quantity,amount,cost,profit)SELECTd.date_key,c.customer_key,p.product_key,s.store_key,SUM(od.quantity)asquantity,SUM(od.subtotal)asamount,SUM(od.cost*od.quantity)ascost,SUM(od.subtotal-od.cost*od.quantity)asprofitFROMorder_detail odJOINcustomer_order coONod.order_id=co.order_idJOINdim_date dONDATE(co.order_time)=d.date_valueJOINdim_customer cONco.customer_id=c.customer_idJOINdim_product pONod.product_id=p.product_idLEFTJOINdim_store sONco.store_id=s.store_idWHEREDATE(co.order_time)=process_dateANDco.order_status=6-- 已完成订单GROUPBYd.date_key,c.customer_key,p.product_key,s.store_key;-- 3. 抽取采购事实数据INSERTINTOtemp_purchase_fact(date_key,supplier_key,product_key,warehouse_key,quantity,amount,tax_amount,total_amount)SELECTd.date_key,s.supplier_key,p.product_key,w.warehouse_key,SUM(pod.quantity)asquantity,SUM(pod.price*pod.quantity)asamount,SUM(pod.tax_amount)astax_amount,SUM(pod.total_amount)astotal_amountFROMpurchase_order_detail podJOINpurchase_order poONpod.purchase_id=po.purchase_idJOINdim_date dONDATE(po.order_date)=d.date_valueJOINdim_supplier sONpo.supplier_id=s.supplier_idJOINdim_product pONpod.product_id=p.product_idJOINdim_warehouse wONpo.warehouse_id=w.warehouse_idWHEREDATE(po.order_date)=process_dateANDpo.order_statusIN(7,8)-- 部分收货或已完成GROUPBYd.date_key,s.supplier_key,p.product_key,w.warehouse_key;-- 4. 抽取库存事实数据INSERTINTOtemp_inventory_fact(date_key,product_key,warehouse_key,opening_quantity,opening_amount,inbound_quantity,inbound_amount,outbound_quantity,outbound_amount,closing_quantity,closing_amount)SELECTd.date_key,p.product_key,w.warehouse_key,SUM(CASEWHENifl.transaction_time<process_dateTHENifl.ending_quantityELSE0END)asopening_quantity,SUM(CASEWHENifl.transaction_time<process_dateTHENifl.ending_amountELSE0END)asopening_amount,SUM(CASEWHENifl.flow_type='INBOUND'ANDDATE(ifl.transaction_time)=process_dateTHENifl.change_quantityELSE0END)asinbound_quantity,SUM(CASEWHENifl.flow_type='INBOUND'ANDDATE(ifl.transaction_time)=process_dateTHENifl.change_amountELSE0END)asinbound_amount,SUM(CASEWHENifl.flow_type='OUTBOUND'ANDDATE(ifl.transaction_time)=process_dateTHENifl.change_quantityELSE0END)asoutbound_quantity,SUM(CASEWHENifl.flow_type='OUTBOUND'ANDDATE(ifl.transaction_time)=process_dateTHENifl.change_amountELSE0END)asoutbound_amount,SUM(CASEWHENifl.transaction_time<=process_dateTHENifl.ending_quantityELSE0END)asclosing_quantity,SUM(CASEWHENifl.transaction_time<=process_dateTHENifl.ending_amountELSE0END)asclosing_amountFROMinventory_flow iflJOINdim_date dONDATE(ifl.transaction_time)=d.date_valueJOINdim_product pONifl.product_id=p.product_idJOINdim_warehouse wONifl.warehouse_id=w.warehouse_idWHEREDATE(ifl.transaction_time)<=process_dateGROUPBYd.date_key,p.product_key,w.warehouse_key;-- 5. 加载到事实表INSERTINTOfact_sales_dailySELECT*FROMtemp_sales_factONDUPLICATEKEYUPDATEquantity=VALUES(quantity),amount=VALUES(amount),cost=VALUES(cost),profit=VALUES(profit);INSERTINTOfact_purchase_dailySELECT*FROMtemp_purchase_factONDUPLICATEKEYUPDATEquantity=VALUES(quantity),amount=VALUES(amount),tax_amount=VALUES(tax_amount),total_amount=VALUES(total_amount);INSERTINTOfact_inventory_dailySELECT*FROMtemp_inventory_factONDUPLICATEKEYUPDATEopening_quantity=VALUES(opening_quantity),opening_amount=VALUES(opening_amount),inbound_quantity=VALUES(inbound_quantity),inbound_amount=VALUES(inbound_amount),outbound_quantity=VALUES(outbound_quantity),outbound_amount=VALUES(outbound_amount),closing_quantity=VALUES(closing_quantity),closing_amount=VALUES(closing_amount);-- 6. 更新汇总表CALLupdate_sales_summary(process_date);CALLupdate_purchase_summary(process_date);CALLupdate_inventory_summary(process_date);-- 7. 记录ETL日志INSERTINTOetl_process_log(process_date,process_type,start_time,end_time,status,records_processed)VALUES(process_date,'DAILY_ETL',NOW(),NOW(),'SUCCESS',(SELECTCOUNT(*)FROMtemp_sales_fact)+(SELECTCOUNT(*)FROMtemp_purchase_fact)+(SELECTCOUNT(*)FROMtemp_inventory_fact));-- 提交事务COMMIT;-- 8. 后续处理CALLpost_etl_processing(process_date);END//DELIMITER;

第六部分:系统集成与接口设计

6.1 外部系统集成架构

6.1.1 支付系统集成
┌─────────────────────────────────────────────────────────────────────┐ │ 支付系统集成架构 │ ├──────────────┬─────────────────────┬─────────────────┬─────────────┤ │ 支付渠道 │ 集成方式 │ 接口协议 │ 安全要求 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 微信支付 │ SDK集成 │ HTTPS+JSON │ TLS 1.2+ │ │ │ 公众号/小程序支付 │ OAuth 2.0 │ 签名验证 │ │ │ H5支付 │ 异步通知 │ 防重放 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 支付宝 │ SDK集成 │ HTTPS+JSON │ TLS 1.2+ │ │ │ 手机网站支付 │ RSA签名 │ 参数加密 │ │ │ 电脑网站支付 │ 异步通知 │ 防篡改 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 银联支付 │ 网关集成 │ HTTPS+XML │ TLS 1.2+ │ │ │ 在线支付 │ 数字证书 │ 报文加密 │ │ │ 快捷支付 │ 异步通知 │ 验签机制 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 银行直连 │ 银企直连 │ HTTPS+XML/8583 │ 专线连接 │ │ │ 代收代付 │ 数字证书 │ 硬件加密 │ │ │ 资金归集 │ 签名加密 │ 访问控制 │ └──────────────┴─────────────────────┴─────────────────┴─────────────┘

支付集成接口设计

// 统一支付接口publicinterfacePaymentService{/** * 创建支付订单 */PaymentResponsecreatePayment(PaymentRequestrequest);/** * 查询支付状态 */PaymentStatusResponsequeryPaymentStatus(StringpaymentNo);/** * 处理支付回调 */PaymentCallbackResponsehandleCallback(PaymentCallbackRequestrequest);/** * 申请退款 */RefundResponserequestRefund(RefundRequestrequest);/** * 查询退款状态 */RefundStatusResponsequeryRefundStatus(StringrefundNo);}// 支付策略工厂@ComponentpublicclassPaymentStrategyFactory{@AutowiredprivateWechatPaymentServicewechatPaymentService;@AutowiredprivateAlipayPaymentServicealipayPaymentService;@AutowiredprivateUnionPaymentServiceunionPaymentService;publicPaymentServicegetPaymentService(StringpaymentMethod){switch(paymentMethod){case"WECHAT":returnwechatPaymentService;case"ALIPAY":returnalipayPaymentService;case"UNION":returnunionPaymentService;default:thrownewIllegalArgumentException("不支持的支付方式: "+paymentMethod);}}}// 微信支付实现@Service@Slf4jpublicclassWechatPaymentServiceImplimplementsPaymentService{@Value("${wechat.pay.app-id}")privateStringappId;@Value("${wechat.pay.mch-id}")privateStringmchId;@Value("${wechat.pay.api-key}")privateStringapiKey;@OverridepublicPaymentResponsecreatePayment(PaymentRequestrequest){try{// 构建微信支付请求WxPayUnifiedOrderRequestwxRequest=newWxPayUnifiedOrderRequest();wxRequest.setBody(request.getSubject());wxRequest.setOutTradeNo(request.getPaymentNo());wxRequest.setTotalFee(request.getAmount().multiply(newBigDecimal("100")).intValue());wxRequest.setSpbillCreateIp(request.getClientIp());wxRequest.setNotifyUrl(request.getNotifyUrl());wxRequest.setTradeType(request.getTradeType());wxRequest.setOpenid(request.getOpenId());// 调用微信支付APIWxPayUnifiedOrderResultresult=wxPayService.unifiedOrder(wxRequest);// 构建响应PaymentResponseresponse=newPaymentResponse();response.setSuccess(true);response.setPaymentNo(request.getPaymentNo());response.setTradeNo(result.getTransactionId());response.setPrepayId(result.getPrepayId());response.setPaySign(generatePaySign(result));// 记录支付日志savePaymentLog(request,response,"CREATE");returnresponse;}catch(WxPayExceptione){log.error("微信支付创建失败",e);thrownewPaymentException("支付创建失败: "+e.getErrCodeDes());}}@OverridepublicPaymentCallbackResponsehandleCallback(PaymentCallbackRequestrequest){try{// 验证签名WxPayOrderNotifyResultnotifyResult=wxPayService.parseOrderNotifyResult(request.getNotifyData());// 验证订单信息PaymentOrderpaymentOrder=paymentOrderMapper.selectByPaymentNo(notifyResult.getOutTradeNo());if(paymentOrder==null){thrownewPaymentException("订单不存在");}// 验证金额BigDecimalactualAmount=newBigDecimal(notifyResult.getTotalFee()).divide(newBigDecimal("100"),2,RoundingMode.HALF_UP);if(actualAmount.compareTo(paymentOrder.getAmount())!=0){thrownewPaymentException("金额不一致");}// 更新订单状态PaymentCallbackResponseresponse=newPaymentCallbackResponse();if("SUCCESS".equals(notifyResult.getResultCode())){paymentOrder.setStatus(PaymentStatus.PAID);paymentOrder.setPaymentTime(newDate());paymentOrder.setTransactionId(notifyResult.getTransactionId());response.setSuccess(true);response.setMessage("支付成功");// 触发订单支付成功事件eventPublisher.publishEvent(newPaymentSuccessEvent(paymentOrder));}else{paymentOrder.setStatus(PaymentStatus.FAILED);paymentOrder.setFailReason(notifyResult.getErrCodeDes());response.setSuccess(false);response.setMessage("支付失败: "+notifyResult.getErrCodeDes());}paymentOrderMapper.update(paymentOrder);returnresponse;}catch(WxPayExceptione){log.error("微信支付回调处理失败",e);thrownewPaymentException("回调处理失败");}}}
6.1.2 物流系统集成
┌─────────────────────────────────────────────────────────────────────┐ │ 物流系统集成架构 │ ├──────────────┬─────────────────────┬─────────────────┬─────────────┤ │ 物流公司 │ 集成方式 │ 接口协议 │ 功能支持 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 顺丰速运 │ API集成 │ HTTPS+JSON │ 电子面单 │ │ │ WebService │ XML+SOAP │ 轨迹查询 │ │ │ 数据对接 │ 批量文件 │ 费用结算 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 中通快递 │ API集成 │ HTTPS+JSON │ 下单接口 │ │ │ 开放平台 │ OAuth 2.0 │ 取消订单 │ │ │ 消息推送 │ WebSocket │ 状态同步 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 京东物流 │ API集成 │ HTTPS+JSON │ 预约取件 │ │ │ 物流云 │ RESTful │ 实时追踪 │ │ │ 电子签收 │ 图片上传 │ 异常上报 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 第三方平台 │ 聚合接口 │ 统一适配层 │ 多物流比价 │ │ │ 智能推荐 │ 算法服务 │ 路由优化 │ │ │ 统一跟踪 │ 数据聚合 │ 报表分析 │ └──────────────┴─────────────────────┴─────────────────┴─────────────┘

物流集成接口设计

// 物流服务接口publicinterfaceLogisticsService{/** * 创建物流订单 */LogisticsOrderResponsecreateOrder(LogisticsOrderRequestrequest);/** * 取消物流订单 */LogisticsCancelResponsecancelOrder(StringlogisticsNo);/** * 查询物流轨迹 */LogisticsTrackResponsequeryTrack(StringlogisticsNo);/** * 电子面单打印 */LogisticsLabelResponsegetPrintLabel(StringlogisticsNo);/** * 运费预估 */LogisticsFeeEstimateResponseestimateFee(LogisticsFeeEstimateRequestrequest);}// 物流适配器模式@ComponentpublicclassLogisticsAdapterFactory{@AutowiredprivateSFLogisticsServicesfLogisticsService;@AutowiredprivateZTOLogisticsServiceztoLogisticsService;@AutowiredprivateJDLogisticsServicejdLogisticsService;publicLogisticsServicegetLogisticsService(StringcompanyCode){switch(companyCode){case"SF":returnsfLogisticsService;case"ZTO":returnztoLogisticsService;case"JD":returnjdLogisticsService;default:thrownewIllegalArgumentException("不支持的物流公司: "+companyCode);}}}// 顺丰物流实现@Service@Slf4jpublicclassSFLogisticsServiceImplimplementsLogisticsService{@Value("${sf.client-code}")privateStringclientCode;@Value("${sf.check-word}")privateStringcheckWord;@OverridepublicLogisticsOrderResponsecreateOrder(LogisticsOrderRequestrequest){try{// 构建顺丰请求SFOrderRequestsfRequest=convertToSFRequest(request);// 添加签名Stringtimestamp=String.valueOf(System.currentTimeMillis());Stringsign=generateSFSign(sfRequest,timestamp);sfRequest.setSign(sign);sfRequest.setTimestamp(timestamp);// 调用顺丰APISFOrderResponsesfResponse=sfClient.createOrder(sfRequest);// 处理响应if("OK".equals(sfResponse.getApiResultCode())){LogisticsOrderResponseresponse=newLogisticsOrderResponse();response.setSuccess(true);response.setLogisticsNo(sfResponse.getLogisticsNo());response.setWaybillNo(sfResponse.getWaybillNo());response.setLabelUrl(sfResponse.getLabelUrl());response.setEstimatedCost(sfResponse.getEstimatedCost());// 记录物流订单saveLogisticsOrder(request,response);returnresponse;}else{thrownewLogisticsException("顺丰下单失败: "+sfResponse.getApiErrorMsg());}}catch(Exceptione){log.error("顺丰物流下单失败",e);thrownewLogisticsException("物流下单失败",e);}}@OverridepublicLogisticsTrackResponsequeryTrack(StringlogisticsNo){try{// 构建查询请求SFTrackRequesttrackRequest=newSFTrackRequest();trackRequest.setTrackingNumber(logisticsNo);trackRequest.setMethodType(1);// 1:顺丰运单号// 调用查询接口SFTrackResponsetrackResponse=sfClient.queryRoute(trackRequest);// 转换响应LogisticsTrackResponseresponse=newLogisticsTrackResponse();response.setSuccess(true);response.setLogisticsNo(logisticsNo);response.setCurrentStatus(trackResponse.getMailStatus());List<LogisticsTrackDetail>trackDetails=newArrayList<>();for(SFRouteroute:trackResponse.getRoutes()){LogisticsTrackDetaildetail=newLogisticsTrackDetail();detail.setTrackTime(route.getAcceptTime());detail.setTrackDesc(route.getRemark());detail.setTrackLocation(route.getAcceptAddress());detail.setTrackStatus(route.getOpCode());trackDetails.add(detail);}response.setTrackDetails(trackDetails);returnresponse;}catch(Exceptione){log.error("顺丰物流轨迹查询失败",e);thrownewLogisticsException("轨迹查询失败",e);}}// 生成顺丰签名privateStringgenerateSFSign(SFOrderRequestrequest,Stringtimestamp){Stringsource=clientCode+request.getOrderId()+timestamp+checkWord;returnDigestUtils.md5Hex(source).toUpperCase();}}

6.2 内部微服务接口设计

6.2.1 服务间通信协议
┌─────────────────────────────────────────────────────────────────────┐ │ 微服务通信协议设计 │ ├──────────────┬─────────────────────┬─────────────────┬─────────────┤ │ 通信方式 │ 使用场景 │ 技术实现 │ 协议规范 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ HTTP REST │ 同步查询/简单操作 │ Spring Cloud │ RESTful API │ │ │ 外部系统集成 │ OpenFeign │ JSON格式 │ │ │ 管理后台调用 │ 负载均衡 │ HTTPS安全 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ RPC调用 │ 高性能内部调用 │ gRPC │ Protobuf │ │ │ 服务间强依赖 │ Dubbo │ 二进制协议 │ │ │ 批量数据处理 │ 连接池管理 │ 服务治理 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ 消息队列 │ 异步解耦 │ RabbitMQ │ AMQP协议 │ │ │ 事件驱动 │ Kafka │ 发布订阅 │ │ │ 流量削峰 │ 持久化存储 │ 消息确认 │ ├──────────────┼─────────────────────┼─────────────────┼─────────────┤ │ WebSocket │ 实时通知 │ Netty │ WS/WSS │ │ │ 数据推送 │ STOMP │ 心跳检测 │ │ │ 即时通讯 │ SockJS │ 连接管理 │ └──────────────┴─────────────────────┴─────────────────┴─────────────┘
6.2.2 订单服务接口设计
// 订单服务API定义@RestController@RequestMapping("/api/orders")@Validated@Slf4jpublicclassOrderController{@AutowiredprivateOrderServiceorderService;/** * 创建订单 */@PostMapping@Operation(summary="创建订单",description="客户或门店创建新订单")publicApiResponse<OrderDTO>createOrder(@Valid@RequestBodyCreateOrderRequestrequest,@RequestHeader("X-User-Id")LonguserId){log.info("创建订单请求: userId={}, request={}",userId,request);// 设置创建人request.setCreateBy(userId);// 调用订单服务OrderDTOorder=orderService.createOrder(request);returnApiResponse.success(order);}/** * 查询订单列表 */@GetMapping@Operation(summary="查询订单列表",description="根据条件查询订单列表")publicApiResponse<PageResult<OrderDTO>>queryOrders(@ModelAttributeOrderQueryRequestqueryRequest,@RequestHeader("X-User-Id")LonguserId,@RequestHeader("X-Role-Code")StringroleCode){log.info("查询订单列表: userId={}, query={}",userId,queryRequest);// 设置数据权限queryRequest.setUserId(userId);queryRequest.setRoleCode(roleCode);// 查询订单PageResult<OrderDTO>result=orderService.queryOrders(queryRequest);returnApiResponse.success(result);}/** * 获取订单详情 */@GetMapping("/{orderNo}")@Operation(summary="获取订单详情",description="根据订单号获取订单详细信息")publicApiResponse<OrderDetailDTO>getOrderDetail(@PathVariableStringorderNo,@RequestHeader("X-User-Id")LonguserId){log.info("获取订单详情: orderNo={}, userId={}",orderNo,userId);// 验证订单访问权限orderService.checkOrderAccessPermission(orderNo,userId);// 获取订单详情OrderDetailDTOorderDetail=orderService.getOrderDetail(orderNo);returnApiResponse.success(orderDetail);}/** * 取消订单 */@PostMapping("/{orderNo}/cancel")@Operation(summary="取消订单",description="取消指定订单")publicApiResponse<Void>cancelOrder(@PathVariableStringorderNo,@Valid@RequestBodyCancelOrderRequestrequest,@RequestHeader("X-User-Id")LonguserId){log.info("取消订单: orderNo={}, userId={}, reason={}",orderNo,userId,request.getCancelReason());// 设置取消人request.setCancelBy(userId);// 取消订单orderService.cancelOrder(orderNo,request);returnApiResponse.success();}/** * 确认订单 */@PostMapping("/{orderNo}/confirm")@Operation(summary="确认订单",description="确认订单进入分拣流程")publicApiResponse<Void>confirmOrder(@PathVariableStringorderNo,@RequestHeader("X-User-Id")LonguserId){log.info("确认订单: orderNo={}, userId={}",orderNo,userId);// 确认订单orderService.confirmOrder(orderNo,userId);returnApiResponse.success();}/** * 订单状态变更历史 */@GetMapping("/{orderNo}/status-history")@Operation(summary="订单状态历史",description="获取订单状态变更历史")publicApiResponse<List<OrderStatusHistoryDTO>>getStatusHistory(@PathVariableStringorderNo){log.info("获取订单状态历史: orderNo={}",orderNo);List<OrderStatusHistoryDTO>history=orderService.getStatusHistory(orderNo);returnApiResponse.success(history);}}// 订单服务内部接口(供其他服务调用)@FeignClient(name="order-service",path="/internal/orders")publicinterfaceOrderInternalService{/** * 根据订单号获取订单信息 */@GetMapping("/{orderNo}")OrderDTOgetOrderByNo(@PathVariable("orderNo")StringorderNo);/** * 锁定订单库存 */@PostMapping("/{orderNo}/lock-inventory")ApiResponse<Void>lockOrderInventory(@PathVariable("orderNo")StringorderNo);/** * 确认订单库存 */@PostMapping("/{orderNo}/confirm-inventory")ApiResponse<Void>confirmOrderInventory(@PathVariable("orderNo")StringorderNo);/** * 扣减订单库存 */@PostMapping("/{orderNo}/deduct-inventory")ApiResponse<Void>deductOrderInventory(@PathVariable("orderNo")StringorderNo);/** * 获取订单商品明细 */@GetMapping("/{orderNo}/items")List<OrderItemDTO>getOrderItems(@PathVariable("orderNo")StringorderNo);/** * 更新订单支付状态 */@PutMapping("/{orderNo}/payment-status")ApiResponse<Void>updatePaymentStatus(@PathVariable("orderNo")StringorderNo,@RequestBodyUpdatePaymentStatusRequestrequest);}
6.2.3 库存服务接口设计
// 库存服务API定义@RestController@RequestMapping("/api/inventory")@Validated@Slf4jpublicclassInventoryController{@AutowiredprivateInventoryServiceinventoryService;/** * 查询商品库存 */@GetMapping("/products/{productId}")@Operation(summary="查询商品库存",description="查询指定商品在各仓库的库存情况")publicApiResponse<List<InventoryDTO>>getProductInventory(@PathVariableLongproductId,@RequestParam(required=false)LongwarehouseId){log.info("查询商品库存: productId={}, warehouseId={}",productId,warehouseId);List<InventoryDTO>inventoryList=inventoryService.getProductInventory(productId,warehouseId);returnApiResponse.success(inventoryList);}/** * 查询可用库存 */@GetMapping("/available")@Operation(summary="查询可用库存",description="查询商品在指定仓库的可用库存数量")publicApiResponse<Integer>getAvailableInventory(@RequestParamLongproductId,@RequestParamLongwarehouseId){log.info("查询可用库存: productId={}, warehouseId={}",productId,warehouseId);IntegeravailableQuantity=inventoryService.getAvailableInventory(productId,warehouseId);returnApiResponse.success(availableQuantity);}/** * 锁定库存 */@PostMapping("/lock")@Operation(summary="锁定库存",description="锁定指定数量的库存")publicApiResponse<LockInventoryResult>lockInventory(@Valid@RequestBodyLockInventoryRequestrequest){log.info("锁定库存请求: {}",request);LockInventoryResultresult=inventoryService.lockInventory(request);returnApiResponse.success(result);}/** * 释放锁定库存 */@PostMapping("/release")@Operation(summary="释放锁定库存",description="释放已锁定的库存")publicApiResponse<Void>releaseInventory(@Valid@RequestBodyReleaseInventoryRequestrequest){log.info("释放库存请求: {}",request);inventoryService.releaseInventory(request);returnApiResponse.success();}/** * 扣减库存 */@PostMapping("/deduct")@Operation(summary="扣减库存",description="扣减实际库存数量")publicApiResponse<Void>deductInventory(@Valid@RequestBodyDeductInventoryRequestrequest){log.info("扣减库存请求: {}",request);inventoryService.deductInventory(request);returnApiResponse.success();}/** * 增加库存 */@PostMapping("/increase")@Operation(summary="增加库存",description="增加库存数量")publicApiResponse<Void>increaseInventory(@Valid@RequestBodyIncreaseInventoryRequestrequest){log.info("增加库存请求: {}",request);inventoryService.increaseInventory(request);returnApiResponse.success();}/** * 库存流水查询 */@GetMapping("/flow")@Operation(summary="库存流水查询",description="查询库存变动流水记录")publicApiResponse<PageResult<InventoryFlowDTO>>queryInventoryFlow(@ModelAttributeInventoryFlowQueryRequestqueryRequest){log.info("库存流水查询: {}",queryRequest);PageResult<InventoryFlowDTO>result=inventoryService.queryInventoryFlow(queryRequest);returnApiResponse.success(result);}}// 库存服务内部接口(供其他服务调用)@FeignClient(name="inventory-service",path="/internal/inventory")publicinterfaceInventoryInternalService{/** * 批量查询库存 */@PostMapping("/batch-query")List<InventoryDTO>batchQueryInventory(@RequestBodyList<InventoryQuery>queries);/** * 安全扣减库存(防超卖) */@PostMapping("/safe-deduct")ApiResponse<Boolean>safeDeductInventory(@RequestBodySafeDeductRequestrequest);/** * 检查库存是否充足 */@PostMapping("/check-sufficient")ApiResponse<Boolean>checkInventorySufficient(@RequestBodyInventoryCheckRequestrequest);/** * 获取批次库存信息 */@GetMapping("/batch/{batchId}")BatchInventoryDTOgetBatchInventory(@PathVariable("batchId")LongbatchId);/** * 库存预警检查 */@PostMapping("/alert-check")List<InventoryAlertDTO>checkInventoryAlert(@RequestBodyAlertCheckRequestrequest);/** * 更新库存成本 */@PutMapping("/cost")ApiResponse<Void>updateInventoryCost(@RequestBodyUpdateCostRequestrequest);}

6.3 数据交换格式规范

6.3.1 API响应格式
{"code":200,"message":"操作成功","data":{"orderId":100001,"orderNo":"SO202401150001","customerId":1001,"customerName":"张三","totalAmount":258.60,"actualAmount":258.60,"orderStatus":1,"orderStatusDesc":"待确认","orderTime":"2024-01-15 10:30:25","items":[{"productId":10001,"productName":"有机西红柿","quantity":2,"unit":"斤","price":8.50,"subtotal":17.00},{"productId":10002,"productName":"土鸡蛋","quantity":1,"unit":"盒","price":25.00,"subtotal":25.00}]},"timestamp":1705293025000,"requestId":"req_abc123def456"}
6.3.2 错误响应格式
{"code":40001,"message":"库存不足","data":{"productId":10001,"productName":"有机西红柿","requiredQuantity":100,"availableQuantity":85,"shortageQuantity":15},"timestamp":1705293025000,"requestId":"req_abc123def456","errorDetails":[{"field":"quantity","message":"库存不足,最多可购买85件"}]}
6.3.3 分页响应格式
{"code":200,"message":"查询成功","data":{"list":[{"orderId":100001,"orderNo":"SO202401150001","customerName":"张三","totalAmount":258.60,"orderStatus":1,"orderTime":"2024-01-15 10:30:25"},{"orderId":100002,"orderNo":"SO202401150002","customerName":"李四","totalAmount":152.80,"orderStatus":2,"orderTime":"2024-01-15 11:15:30"}],"pagination":{"pageNum":1,"pageSize":20,"total":125,"pages":7},"summary":{"totalAmount":12580.50,"totalOrders":125,"avgAmount":100.64}},"timestamp":1705293025000,"requestId":"req_abc123def456"}

总结

通过对升鲜宝供应链管理系统的四篇系列文章的深度分析,我们提取并设计了超过300个业务表,构建了完整的实体关系模型,详细分析了核心业务流程数据流。系统采用微服务架构,基于Vue3+Spring Boot3技术栈,实现了生鲜供应链的全链路数字化管理。

关键设计要点总结:

  1. 模块化设计:系统划分为12个核心业务域,每个域有清晰的职责边界
  2. 数据一致性保障:通过事务、锁机制、事件驱动等方式保证数据一致性
  3. 高性能架构:采用读写分离、缓存策略、分库分表等优化手段
  4. 可扩展性:微服务架构支持水平扩展,容器化部署支持弹性伸缩
  5. 安全性设计:多层次安全防护,包括数据加密、权限控制、审计日志等
  6. 可维护性:完善的监控体系、日志管理、配置管理支持系统稳定运行

业务价值体现:

  1. 全流程覆盖:从供应商到客户的全链条业务管理
  2. 实时可视:库存、订单、配送等业务状态实时可视
  3. 智能决策:通过数据分析提供采购、库存、配送等智能决策支持
  4. 成本控制:精细化成本核算和费用管控
  5. 客户体验:精准配送、灵活订购、全程追溯提升客户满意度

本设计方案为实际系统开发提供了详细的技术指导,开发团队可根据此设计进行具体的编码实现和系统部署。在实际实施过程中,建议根据具体业务需求进行适当的调整和优化。

UI设计截图(纯个人研究非商业用途):



官方参考文章(如果有商业需求,请到下面官网文章里找):

  1. 升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0 uniapp、vue、android、web 框架: Vue3+Spring Boot3) ,界面功能(一)
  2. 升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0 uniapp、vue、android、web 框架: Vue3+Spring Boot3) ,界面功能(二)
  3. 升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0 uniapp、vue、android、web 框架: Vue3+Spring Boot3) ,界面功能(三)
  4. 升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0 uniapp、vue、android、web 框架: Vue3+Spring Boot3) ,界面功能升级(四)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:13:34

Apache APISIX流量控制实战指南:从基础配置到高级策略

Apache APISIX流量控制实战指南&#xff1a;从基础配置到高级策略 【免费下载链接】apisix Apisix是一个基于Nginx的API网关&#xff0c;主要用于微服务架构中的API管理和服务发现。它的特点是高性能、轻量级、易于配置等。适用于API管理和负载均衡场景。 项目地址: https://…

作者头像 李华
网站建设 2026/5/1 3:19:14

Lively主题分享平台:解锁动态桌面的无限可能

Lively主题分享平台&#xff1a;解锁动态桌面的无限可能 【免费下载链接】lively Free and open-source software that allows users to set animated desktop wallpapers and screensavers powered by WinUI 3. 项目地址: https://gitcode.com/gh_mirrors/li/lively 你…

作者头像 李华
网站建设 2026/4/29 18:45:25

Blender快捷键显示神器Screencast Keys完全解析

Blender快捷键显示神器Screencast Keys完全解析 【免费下载链接】Screencast-Keys Blender Add-on: Screencast Keys 项目地址: https://gitcode.com/gh_mirrors/sc/Screencast-Keys 在三维建模和动画制作过程中&#xff0c;快捷键的熟练使用能极大提升工作效率。但对于…

作者头像 李华
网站建设 2026/5/1 5:14:39

Wan2.2-T2V-A14B在智慧城市沙盘演示视频中的多源融合能力

Wan2.2-T2V-A14B在智慧城市沙盘中的多源融合能力 当城市管理者站在指挥中心的大屏前&#xff0c;面对密密麻麻的交通热力图、空气质量曲线和人口流动数据时&#xff0c;他们真正需要的不是更多数字——而是“理解”。如何让这些抽象指标变成可感知、可推演、可沟通的动态叙事&a…

作者头像 李华
网站建设 2026/5/1 5:14:39

蚂蚁森林能量自动收取:开源工具如何帮你轻松搞定每日任务

蚂蚁森林能量自动收取&#xff1a;开源工具如何帮你轻松搞定每日任务 【免费下载链接】Sesame-TK 芝麻粒-TK 项目地址: https://gitcode.com/gh_mirrors/ses/Sesame-TK 还在为每天手动收取蚂蚁森林能量而烦恼吗&#xff1f;芝麻粒-TK这款开源工具能够帮你实现蚂蚁森林能…

作者头像 李华
网站建设 2026/5/1 5:15:01

NS-USBLoader终极指南:Switch自制软件USB传输完整教程

还在为Switch自制软件安装而烦恼吗&#xff1f;每次安装新游戏都要反复折腾&#xff0c;传输大文件时总是中断&#xff0c;RCM注入操作复杂难懂&#xff1f;别担心&#xff0c;NS-USBLoader这款开源工具能帮你轻松搞定所有问题&#xff01;无论你是新手还是资深玩家&#xff0c…

作者头像 李华