笔言: 偶尔看到升鲜宝供应链管理系统一些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)详细设计
-- 商品主表
CREATE TABLE product (
    product_id BIGINT PRIMARY KEY COMMENT '商品ID',
    product_code VARCHAR(50) NOT NULL UNIQUE COMMENT '商品编码',
    product_name VARCHAR(200) NOT NULL COMMENT '商品名称',
    product_barcode VARCHAR(100) COMMENT '商品条码',
    product_short_name VARCHAR(100) COMMENT '商品简称',
    
    -- 分类信息
    category_id BIGINT NOT NULL COMMENT '商品分类ID',
    brand_id BIGINT COMMENT '品牌ID',
    unit_id BIGINT NOT NULL COMMENT '单位ID',
    
    -- 规格属性
    spec_model VARCHAR(100) COMMENT '规格型号',
    weight DECIMAL(10,3) COMMENT '重量(kg)',
    volume DECIMAL(10,3) COMMENT '体积(m³)',
    size_length DECIMAL(8,2) COMMENT '长(mm)',
    size_width DECIMAL(8,2) COMMENT '宽(mm)',
    size_height DECIMAL(8,2) COMMENT '高(mm)',
    
    -- 生鲜特性
    temperature_type TINYINT NOT NULL COMMENT '温层类型:1常温2冷藏3冷冻',
    shelf_life INT NOT NULL COMMENT '保质期(小时)',
    storage_condition VARCHAR(200) COMMENT '存储条件',
    origin_place VARCHAR(200) COMMENT '产地',
    
    -- 库存属性
    min_stock INT COMMENT '最低库存',
    max_stock INT COMMENT '最高库存',
    safe_stock INT COMMENT '安全库存',
    purchase_cycle INT COMMENT '采购周期(天)',
    lead_time INT COMMENT '采购提前期(天)',
    
    -- 价格信息
    purchase_price DECIMAL(10,2) COMMENT '采购价',
    cost_price DECIMAL(10,2) COMMENT '成本价',
    sale_price DECIMAL(10,2) COMMENT '销售价',
    market_price DECIMAL(10,2) COMMENT '市场价',
    tax_rate DECIMAL(5,2) COMMENT '税率',
    
    -- 状态控制
    product_status TINYINT DEFAULT 1 COMMENT '商品状态:0下架1上架2待审核',
    audit_status TINYINT DEFAULT 0 COMMENT '审核状态:0未审核1审核通过2审核拒绝',
    is_virtual TINYINT DEFAULT 0 COMMENT '是否虚拟商品:0否1是',
    is_combination TINYINT DEFAULT 0 COMMENT '是否组合商品:0否1是',
    is_weight TINYINT DEFAULT 0 COMMENT '是否称重商品:0否1是',
    
    -- 销售属性
    sales_volume INT DEFAULT 0 COMMENT '销量',
    click_count INT DEFAULT 0 COMMENT '点击量',
    favorite_count INT DEFAULT 0 COMMENT '收藏量',
    
    -- 时间信息
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    audit_time DATETIME COMMENT '审核时间',
    shelf_time DATETIME COMMENT '上架时间',
    off_shelf_time DATETIME COMMENT '下架时间',
    
    -- 人员信息
    create_by BIGINT COMMENT '创建人',
    update_by BIGINT COMMENT '更新人',
    audit_by BIGINT COMMENT '审核人',
    
    -- 索引
    INDEX idx_category (category_id),
    INDEX idx_brand (brand_id),
    INDEX idx_status (product_status),
    INDEX idx_temperature (temperature_type),
    INDEX idx_create_time (create_time),
    FULLTEXT INDEX idx_product_name (product_name)
) COMMENT='商品主表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
4.1.2 订单表(customer_order)详细设计
-- 客户订单主表
CREATE TABLE customer_order (
    order_id BIGINT PRIMARY KEY COMMENT '订单ID',
    order_no VARCHAR(50) NOT NULL UNIQUE COMMENT '订单号',
    order_type TINYINT NOT NULL COMMENT '订单类型:1普通订单2团购订单3预售订单',
    
    -- 客户信息
    customer_id BIGINT NOT NULL COMMENT '客户ID',
    customer_name VARCHAR(100) NOT NULL COMMENT '客户名称',
    customer_phone VARCHAR(20) COMMENT '客户电话',
    customer_level TINYINT COMMENT '客户等级',
    
    -- 金额信息
    total_amount DECIMAL(12,2) NOT NULL COMMENT '订单总额',
    discount_amount DECIMAL(10,2) DEFAULT 0 COMMENT '折扣金额',
    coupon_amount DECIMAL(10,2) DEFAULT 0 COMMENT '优惠券金额',
    freight_amount DECIMAL(8,2) DEFAULT 0 COMMENT '运费金额',
    tax_amount DECIMAL(10,2) DEFAULT 0 COMMENT '税额',
    actual_amount DECIMAL(12,2) NOT NULL COMMENT '实付金额',
    paid_amount DECIMAL(12,2) DEFAULT 0 COMMENT '已付金额',
    
    -- 订单状态
    order_status TINYINT NOT NULL COMMENT '订单状态:1待确认2待分拣3分拣中4待配送5配送中6已完成7已取消',
    payment_status TINYINT DEFAULT 0 COMMENT '支付状态:0未支付1已支付2部分支付',
    invoice_status TINYINT DEFAULT 0 COMMENT '开票状态:0未开票1已开票',
    
    -- 支付信息
    payment_method TINYINT COMMENT '支付方式:1现金2刷卡3转账4微信5支付宝',
    payment_time DATETIME COMMENT '支付时间',
    payment_transaction_no VARCHAR(100) COMMENT '支付交易号',
    
    -- 配送信息
    delivery_date DATE NOT NULL COMMENT '配送日期',
    delivery_time_slot VARCHAR(50) COMMENT '配送时段',
    delivery_type TINYINT COMMENT '配送方式:1送货上门2自提',
    delivery_address VARCHAR(500) COMMENT '配送地址',
    delivery_contact_name VARCHAR(50) COMMENT '收货人',
    delivery_contact_phone VARCHAR(20) COMMENT '收货电话',
    
    -- 自提信息
    pickup_point_id BIGINT COMMENT '自提点ID',
    pickup_code VARCHAR(20) COMMENT '提货码',
    pickup_time DATETIME COMMENT '自提时间',
    
    -- 仓库信息
    warehouse_id BIGINT COMMENT '发货仓库ID',
    warehouse_name VARCHAR(100) COMMENT '发货仓库名称',
    
    -- 物流信息
    logistics_company VARCHAR(100) COMMENT '物流公司',
    logistics_no VARCHAR(100) COMMENT '物流单号',
    logistics_fee DECIMAL(8,2) COMMENT '物流费用',
    
    -- 时间信息
    order_time DATETIME NOT NULL COMMENT '下单时间',
    confirm_time DATETIME COMMENT '确认时间',
    picking_time DATETIME COMMENT '分拣开始时间',
    picking_finish_time DATETIME COMMENT '分拣完成时间',
    shipping_time DATETIME COMMENT '发货时间',
    delivery_time DATETIME COMMENT '配送时间',
    receive_time DATETIME COMMENT '收货时间',
    complete_time DATETIME COMMENT '完成时间',
    cancel_time DATETIME COMMENT '取消时间',
    
    -- 备注信息
    customer_remark VARCHAR(500) COMMENT '客户备注',
    internal_remark VARCHAR(500) COMMENT '内部备注',
    cancel_reason VARCHAR(200) COMMENT '取消原因',
    
    -- 人员信息
    create_by BIGINT COMMENT '创建人',
    confirm_by BIGINT COMMENT '确认人',
    picking_by BIGINT COMMENT '分拣人',
    shipping_by BIGINT COMMENT '发货人',
    receive_by BIGINT COMMENT '收货人',
    
    -- 索引
    INDEX idx_customer (customer_id),
    INDEX idx_order_no (order_no),
    INDEX idx_status (order_status),
    INDEX idx_delivery_date (delivery_date),
    INDEX idx_create_time (order_time),
    INDEX idx_payment_status (payment_status),
    INDEX idx_warehouse (warehouse_id)
) COMMENT='客户订单主表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
4.1.3 库存表(inventory)详细设计
-- 库存主表
CREATE TABLE inventory (
    inventory_id BIGINT PRIMARY KEY COMMENT '库存ID',
    
    -- 位置信息
    warehouse_id BIGINT NOT NULL COMMENT '仓库ID',
    location_id BIGINT COMMENT '库位ID',
    warehouse_code VARCHAR(50) COMMENT '仓库编码',
    location_code VARCHAR(50) COMMENT '库位编码',
    
    -- 商品信息
    product_id BIGINT NOT NULL COMMENT '商品ID',
    product_code VARCHAR(50) COMMENT '商品编码',
    product_name VARCHAR(200) COMMENT '商品名称',
    batch_id BIGINT COMMENT '批次ID',
    batch_no VARCHAR(50) COMMENT '批次号',
    
    -- 库存数量
    total_quantity INT NOT NULL COMMENT '总数量',
    available_quantity INT NOT NULL COMMENT '可用数量',
    locked_quantity INT DEFAULT 0 COMMENT '锁定数量',
    damaged_quantity INT DEFAULT 0 COMMENT '破损数量',
    quarantine_quantity INT DEFAULT 0 COMMENT '隔离数量',
    
    -- 库存价值
    unit_cost DECIMAL(10,2) COMMENT '单位成本',
    total_cost DECIMAL(12,2) COMMENT '总成本',
    avg_cost DECIMAL(10,2) COMMENT '平均成本',
    last_purchase_price DECIMAL(10,2) COMMENT '最后采购价',
    
    -- 批次信息
    production_date DATE COMMENT '生产日期',
    expiry_date DATE COMMENT '到期日期',
    remaining_days INT COMMENT '剩余天数',
    
    -- 库存状态
    inventory_status TINYINT DEFAULT 1 COMMENT '库存状态:1正常2预警3过期',
    quality_status TINYINT DEFAULT 1 COMMENT '质量状态:1合格2待检3不合格',
    stock_age INT COMMENT '库龄(天)',
    
    -- 时间信息
    last_in_time DATETIME COMMENT '最后入库时间',
    last_out_time DATETIME COMMENT '最后出库时间',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    -- 预警信息
    min_stock_warning TINYINT DEFAULT 0 COMMENT '最低库存预警:0无1有',
    expiry_warning TINYINT DEFAULT 0 COMMENT '效期预警:0无1有',
    overstock_warning TINYINT DEFAULT 0 COMMENT '超储预警:0无1有',
    
    -- 索引
    UNIQUE KEY uk_inventory (warehouse_id, product_id, batch_no(20)),
    INDEX idx_product (product_id),
    INDEX idx_batch (batch_id),
    INDEX idx_warehouse (warehouse_id),
    INDEX idx_location (location_id),
    INDEX idx_expiry (expiry_date),
    INDEX idx_status (inventory_status),
    INDEX idx_available (available_quantity)
) COMMENT='库存主表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
4.1.4 采购单表(purchase_order)详细设计
-- 采购订单主表
CREATE TABLE purchase_order (
    purchase_id BIGINT PRIMARY KEY COMMENT '采购单ID',
    purchase_no VARCHAR(50) NOT NULL UNIQUE COMMENT '采购单号',
    
    -- 供应商信息
    supplier_id BIGINT NOT NULL COMMENT '供应商ID',
    supplier_code VARCHAR(50) COMMENT '供应商编码',
    supplier_name VARCHAR(200) NOT NULL COMMENT '供应商名称',
    supplier_contact VARCHAR(50) COMMENT '供应商联系人',
    supplier_phone VARCHAR(20) COMMENT '供应商电话',
    
    -- 采购信息
    purchase_type TINYINT COMMENT '采购类型:1日常采购2紧急采购3合同采购',
    purchase_category TINYINT COMMENT '采购类别:1原材料2成品3耗材',
    contract_no VARCHAR(50) COMMENT '合同号',
    
    -- 金额信息
    total_amount DECIMAL(12,2) NOT NULL COMMENT '采购总额',
    tax_amount DECIMAL(10,2) COMMENT '税额',
    discount_amount DECIMAL(10,2) DEFAULT 0 COMMENT '折扣金额',
    other_fee DECIMAL(8,2) DEFAULT 0 COMMENT '其他费用',
    actual_amount DECIMAL(12,2) NOT NULL COMMENT '实际金额',
    prepaid_amount DECIMAL(12,2) DEFAULT 0 COMMENT '预付金额',
    paid_amount DECIMAL(12,2) DEFAULT 0 COMMENT '已付金额',
    
    -- 订单状态
    order_status TINYINT NOT NULL COMMENT '订单状态:1草稿2待审核3审核通过4审核拒绝5已发送6供应商确认7部分收货8已完成9已取消',
    payment_status TINYINT DEFAULT 0 COMMENT '付款状态:0未付款1部分付款2已付款',
    invoice_status TINYINT DEFAULT 0 COMMENT '发票状态:0未开票1部分开票2已开票',
    
    -- 时间信息
    order_date DATE NOT NULL COMMENT '订单日期',
    required_date DATE COMMENT '要求到货日期',
    confirm_date DATE COMMENT '确认日期',
    delivery_date DATE COMMENT '预计交货日期',
    complete_date DATE COMMENT '完成日期',
    cancel_date DATE COMMENT '取消日期',
    
    -- 交货信息
    delivery_address VARCHAR(500) COMMENT '交货地址',
    delivery_contact VARCHAR(50) COMMENT '交货联系人',
    delivery_phone VARCHAR(20) COMMENT '交货联系电话',
    
    -- 仓库信息
    warehouse_id BIGINT COMMENT '收货仓库ID',
    warehouse_name VARCHAR(100) COMMENT '收货仓库名称',
    
    -- 物流信息
    logistics_company VARCHAR(100) COMMENT '物流公司',
    logistics_no VARCHAR(100) COMMENT '物流单号',
    freight_fee DECIMAL(8,2) COMMENT '运费',
    
    -- 审批信息
    audit_status TINYINT DEFAULT 0 COMMENT '审核状态:0未审核1审核通过2审核拒绝',
    audit_opinion VARCHAR(500) COMMENT '审核意见',
    audit_time DATETIME COMMENT '审核时间',
    audit_by BIGINT COMMENT '审核人',
    
    -- 备注信息
    remark VARCHAR(500) COMMENT '备注',
    internal_remark VARCHAR(500) COMMENT '内部备注',
    cancel_reason VARCHAR(200) COMMENT '取消原因',
    
    -- 人员信息
    create_by BIGINT COMMENT '创建人',
    update_by BIGINT COMMENT '更新人',
    confirm_by BIGINT COMMENT '确认人',
    
    -- 索引
    INDEX idx_supplier (supplier_id),
    INDEX idx_purchase_no (purchase_no),
    INDEX idx_status (order_status),
    INDEX idx_order_date (order_date),
    INDEX idx_required_date (required_date),
    INDEX idx_warehouse (warehouse_id)
) COMMENT='采购订单主表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

4.2 复杂关联关系设计

4.2.1 多层次分类结构设计

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

-- 商品分类表(无限层级设计)
CREATE TABLE product_category (
    category_id BIGINT PRIMARY KEY COMMENT '分类ID',
    parent_id BIGINT DEFAULT 0 COMMENT '父分类ID',
    category_code VARCHAR(50) NOT NULL UNIQUE COMMENT '分类编码',
    category_name VARCHAR(100) NOT NULL COMMENT '分类名称',
    category_path VARCHAR(500) COMMENT '分类路径',
    level TINYINT DEFAULT 1 COMMENT '分类级别',
    sort_order INT DEFAULT 0 COMMENT '排序',
    
    -- 分类属性
    category_type TINYINT COMMENT '分类类型:1标准分类2虚拟分类',
    is_leaf TINYINT DEFAULT 0 COMMENT '是否叶子节点:0否1是',
    status TINYINT DEFAULT 1 COMMENT '状态:0停用1启用',
    
    -- 生鲜特性
    temperature_type TINYINT COMMENT '温层类型:1常温2冷藏3冷冻',
    shelf_life_standard INT COMMENT '标准保质期(小时)',
    storage_temperature VARCHAR(50) COMMENT '存储温度',
    
    -- 业务属性
    purchase_cycle_standard INT COMMENT '标准采购周期',
    lead_time_standard INT COMMENT '标准提前期',
    abc_classification VARCHAR(1) COMMENT 'ABC分类',
    
    -- 图片信息
    category_image VARCHAR(500) COMMENT '分类图片',
    category_icon VARCHAR(500) COMMENT '分类图标',
    
    -- SEO信息
    seo_title VARCHAR(200) COMMENT 'SEO标题',
    seo_keywords VARCHAR(200) COMMENT 'SEO关键词',
    seo_description VARCHAR(500) COMMENT 'SEO描述',
    
    -- 时间信息
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    -- 人员信息
    create_by BIGINT COMMENT '创建人',
    update_by BIGINT COMMENT '更新人',
    
    -- 索引
    INDEX idx_parent (parent_id),
    INDEX idx_level (level),
    INDEX idx_status (status),
    INDEX idx_sort (sort_order),
    INDEX idx_code (category_code)
) COMMENT='商品分类表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

分类路径维护策略

-- 分类路径更新存储过程
DELIMITER //
CREATE PROCEDURE update_category_path(IN cat_id BIGINT)
BEGIN
    DECLARE parent_path VARCHAR(500);
    DECLARE current_path VARCHAR(500);
    
    -- 获取父分类路径
    SELECT category_path INTO parent_path 
    FROM product_category WHERE category_id = (
        SELECT parent_id FROM product_category WHERE category_id = cat_id
    );
    
    -- 构建当前分类路径
    IF parent_path IS NULL THEN
        SET current_path = CONCAT('/', cat_id, '/');
    ELSE
        SET current_path = CONCAT(parent_path, cat_id, '/');
    END IF;
    
    -- 更新当前分类路径
    UPDATE product_category 
    SET category_path = current_path,
        level = LENGTH(current_path) - LENGTH(REPLACE(current_path, '/', '')) - 1
    WHERE category_id = cat_id;
    
    -- 递归更新子分类路径
    UPDATE product_category pc
    JOIN (
        SELECT category_id FROM product_category 
        WHERE FIND_IN_SET(category_id, get_category_children(cat_id))
    ) AS children ON pc.category_id = children.category_id
    SET pc.category_path = CONCAT(current_path, pc.category_id, '/'),
        pc.level = LENGTH(current_path) - LENGTH(REPLACE(current_path, '/', ''))
    WHERE pc.parent_id = cat_id;
END //
DELIMITER ;
4.2.2 批次追溯链设计

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

-- 批次追溯链设计
CREATE TABLE product_batch_trace (
    trace_id BIGINT PRIMARY KEY COMMENT '追溯ID',
    batch_id BIGINT NOT NULL COMMENT '批次ID',
    trace_type TINYINT NOT NULL COMMENT '追溯类型:1采购入库2生产入库3退货入库4调拨入库',
    
    -- 来源信息
    source_type TINYINT COMMENT '来源类型:1供应商2生产车间3其他仓库',
    source_id BIGINT COMMENT '来源ID',
    source_name VARCHAR(200) COMMENT '来源名称',
    source_batch_no VARCHAR(50) COMMENT '来源批次号',
    
    -- 目标信息
    target_type TINYINT COMMENT '目标类型:1仓库2门店3客户',
    target_id BIGINT COMMENT '目标ID',
    target_name VARCHAR(200) COMMENT '目标名称',
    
    -- 商品信息
    product_id BIGINT NOT NULL COMMENT '商品ID',
    product_name VARCHAR(200) COMMENT '商品名称',
    quantity DECIMAL(12,3) NOT NULL COMMENT '数量',
    unit VARCHAR(20) COMMENT '单位',
    
    -- 时间信息
    trace_time DATETIME NOT NULL COMMENT '追溯时间',
    operation_time DATETIME COMMENT '操作时间',
    
    -- 业务单据
    business_type VARCHAR(50) COMMENT '业务类型',
    business_no VARCHAR(50) COMMENT '业务单号',
    business_detail_id BIGINT COMMENT '业务明细ID',
    
    -- 位置信息
    from_location VARCHAR(100) COMMENT '来源位置',
    to_location VARCHAR(100) COMMENT '目标位置',
    
    -- 人员信息
    operator_id BIGINT COMMENT '操作人ID',
    operator_name VARCHAR(50) COMMENT '操作人姓名',
    
    -- 质量信息
    quality_status TINYINT DEFAULT 1 COMMENT '质量状态:1合格2不合格',
    inspection_no VARCHAR(50) COMMENT '检验单号',
    inspection_result VARCHAR(500) COMMENT '检验结果',
    
    -- 索引
    INDEX idx_batch (batch_id),
    INDEX idx_product (product_id),
    INDEX idx_trace_time (trace_time),
    INDEX idx_business (business_type, business_no),
    INDEX idx_source (source_type, source_id),
    INDEX idx_target (target_type, target_id)
) COMMENT='批次追溯链' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

追溯链查询函数

-- 获取商品完整追溯链
DELIMITER //
CREATE FUNCTION get_product_trace_chain(product_id BIGINT, batch_no VARCHAR(50))
RETURNS TEXT
BEGIN
    DECLARE trace_chain TEXT;
    
    SELECT JSON_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
        )
    ) INTO trace_chain
    FROM product_batch_trace
    WHERE product_id = product_id 
        AND batch_id IN (SELECT batch_id FROM product_batch WHERE batch_no = batch_no)
    ORDER BY trace_time;
    
    RETURN trace_chain;
END //
DELIMITER ;

4.3 高级数据模型设计

4.3.1 历史数据与版本控制

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

-- 价格历史表(支持版本控制)
CREATE TABLE price_history (
    history_id BIGINT PRIMARY KEY COMMENT '历史ID',
    
    -- 价格主体
    price_type TINYINT NOT NULL COMMENT '价格类型:1采购价2销售价3成本价',
    product_id BIGINT NOT NULL COMMENT '商品ID',
    price_group_id BIGINT COMMENT '价格组ID',
    customer_id BIGINT COMMENT '客户ID',
    supplier_id BIGINT COMMENT '供应商ID',
    
    -- 价格信息
    old_price DECIMAL(10,2) COMMENT '原价格',
    new_price DECIMAL(10,2) NOT NULL COMMENT '新价格',
    currency VARCHAR(3) DEFAULT 'CNY' COMMENT '币种',
    tax_rate DECIMAL(5,2) COMMENT '税率',
    price_unit VARCHAR(20) COMMENT '价格单位',
    
    -- 生效信息
    effective_date DATE NOT NULL COMMENT '生效日期',
    expiry_date DATE COMMENT '失效日期',
    is_current TINYINT DEFAULT 1 COMMENT '是否当前价格:0否1是',
    
    -- 变更信息
    change_type TINYINT COMMENT '变更类型:1新建2调整3促销',
    change_reason VARCHAR(200) COMMENT '变更原因',
    change_remark VARCHAR(500) COMMENT '变更备注',
    
    -- 审批信息
    approval_status TINYINT DEFAULT 1 COMMENT '审批状态:1待审批2审批通过3审批拒绝',
    approval_opinion VARCHAR(500) COMMENT '审批意见',
    approval_time DATETIME COMMENT '审批时间',
    approval_by BIGINT COMMENT '审批人',
    
    -- 时间信息
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    -- 人员信息
    create_by BIGINT COMMENT '创建人',
    update_by BIGINT COMMENT '更新人',
    
    -- 索引
    INDEX idx_product (product_id),
    INDEX idx_price_type (price_type),
    INDEX idx_effective (effective_date),
    INDEX idx_current (is_current),
    INDEX idx_customer (customer_id),
    INDEX idx_supplier (supplier_id),
    UNIQUE KEY uk_price_version (product_id, price_type, effective_date)
) COMMENT='价格历史表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

价格版本控制策略

-- 价格变更触发器
DELIMITER //
CREATE TRIGGER before_price_update 
BEFORE UPDATE ON product_price
FOR EACH ROW
BEGIN
    -- 将旧价格插入历史表
    INSERT INTO price_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()
    );
    
    -- 标记历史价格为非当前
    UPDATE price_history 
    SET is_current = 0, expiry_date = CURDATE() - INTERVAL 1 DAY
    WHERE product_id = OLD.product_id 
        AND price_type = 2 
        AND is_current = 1;
END //
DELIMITER ;
4.3.2 审计日志与数据变更跟踪

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

-- 数据变更审计表
CREATE TABLE data_change_audit (
    audit_id BIGINT PRIMARY KEY COMMENT '审计ID',
    
    -- 变更对象
    table_name VARCHAR(100) NOT NULL COMMENT '表名',
    record_id BIGINT NOT NULL COMMENT '记录ID',
    operation_type TINYINT NOT NULL COMMENT '操作类型:1新增2修改3删除',
    
    -- 变更数据
    old_data JSON COMMENT '旧数据',
    new_data JSON COMMENT '新数据',
    changed_fields JSON COMMENT '变更字段',
    
    -- 变更信息
    change_reason VARCHAR(500) COMMENT '变更原因',
    business_no VARCHAR(50) COMMENT '业务单号',
    
    -- 时间信息
    operation_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
    
    -- 人员信息
    operator_id BIGINT COMMENT '操作人ID',
    operator_name VARCHAR(50) COMMENT '操作人姓名',
    operator_ip VARCHAR(50) COMMENT '操作IP',
    user_agent VARCHAR(500) COMMENT '用户代理',
    
    -- 索引
    INDEX idx_table_record (table_name, record_id),
    INDEX idx_operation_time (operation_time),
    INDEX idx_operator (operator_id),
    INDEX idx_business_no (business_no)
) COMMENT='数据变更审计表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

审计触发器示例

-- 订单表审计触发器
DELIMITER //
CREATE TRIGGER audit_customer_order_after_update
AFTER UPDATE ON customer_order
FOR EACH ROW
BEGIN
    DECLARE changed_fields JSON;
    DECLARE old_data JSON;
    DECLARE new_data JSON;
    
    -- 构建变更字段
    SET changed_fields = JSON_ARRAY();
    
    IF OLD.order_status != NEW.order_status THEN
        SET changed_fields = JSON_ARRAY_APPEND(changed_fields, '$', 'order_status');
    END IF;
    
    IF OLD.payment_status != NEW.payment_status THEN
        SET changed_fields = JSON_ARRAY_APPEND(changed_fields, '$', 'payment_status');
    END IF;
    
    -- 如果有字段变更,记录审计日志
    IF JSON_LENGTH(changed_fields) > 0 THEN
        -- 构建旧数据
        SET old_data = JSON_OBJECT(
            'order_status', OLD.order_status,
            'payment_status', OLD.payment_status,
            'actual_amount', OLD.actual_amount
        );
        
        -- 构建新数据
        SET new_data = JSON_OBJECT(
            'order_status', NEW.order_status,
            'payment_status', NEW.payment_status,
            'actual_amount', NEW.actual_amount
        );
        
        -- 插入审计记录
        INSERT INTO data_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,
            (SELECT username FROM sys_user WHERE user_id = NEW.update_by)
        );
    END IF;
END //
DELIMITER ;

4.4 性能优化设计

4.4.1 分库分表策略

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

-- 按业务垂直分库
-- 库1: 主数据库 (master_data)
-- 包含:商品、分类、客户、供应商等基础数据

-- 库2: 交易库 (transaction_data)  
-- 包含:订单、库存、采购等交易数据

-- 库3: 财务库 (financial_data)
-- 包含:应收应付、账单、付款等财务数据

-- 库4: 报表库 (report_data)
-- 包含:各类报表和统计数据的汇总

-- 水平分表策略:按时间分表
-- 订单表按月分表
CREATE TABLE customer_order_202401 (
    -- 同原customer_order表结构
) COMMENT='2024年1月订单表' 
PARTITION BY RANGE (YEAR(order_time) * 100 + MONTH(order_time)) (
    PARTITION p202401 VALUES LESS THAN (202402),
    PARTITION p202402 VALUES LESS THAN (202403),
    PARTITION p202403 VALUES LESS THAN (202404)
);

-- 库存流水按日分表
CREATE TABLE inventory_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 索引优化设计
-- 复合索引设计
-- 订单查询优化
CREATE INDEX idx_order_query ON customer_order (
    customer_id, 
    order_status, 
    order_time DESC
);

-- 库存查询优化  
CREATE INDEX idx_inventory_query ON inventory (
    warehouse_id,
    product_id,
    inventory_status,
    available_quantity
);

-- 商品查询优化
CREATE INDEX idx_product_query ON product (
    category_id,
    product_status,
    create_time DESC
);

-- 覆盖索引设计
CREATE INDEX idx_order_cover ON customer_order (
    order_no,
    customer_id,
    order_status,
    actual_amount,
    order_time
);

-- 函数索引(MySQL 8.0+)
CREATE INDEX idx_order_date ON customer_order ((DATE(order_time)));

-- 前缀索引
CREATE INDEX idx_product_name_prefix ON product (product_name(20));

-- 定期索引优化维护
-- 每周执行一次
OPTIMIZE TABLE customer_order;
ANALYZE TABLE inventory;
CHECK TABLE product FAST QUICK;

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

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
@Slf4j
public class OrderStatusChangePublisher {
    
    @Autowired
    private RabbitTemplate rabbitTemplate;
    
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    
    @TransactionalEventListener
    public void handleOrderStatusChange(OrderStatusChangeEvent event) {
        Order order = event.getOrder();
        
        // 1. 更新Redis缓存
        String cacheKey = "order:" + order.getOrderNo() + ":status";
        redisTemplate.opsForValue().set(cacheKey, order.getOrderStatus(), 1, TimeUnit.HOURS);
        
        // 2. 发布消息到MQ
        OrderStatusMessage message = new OrderStatusMessage();
        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实时通知
    private void sendWebSocketNotification(Long customerId, OrderStatusMessage message) {
        Map<String, Object> notification = new HashMap<>();
        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
@Slf4j
public class InventorySyncService {
    
    @Autowired
    private ElasticsearchRestTemplate elasticsearchTemplate;
    
    @Autowired
    private InventoryMapper inventoryMapper;
    
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    
    // 库存变更事件处理
    @EventListener
    public void handleInventoryChange(InventoryChangeEvent event) {
        // 1. 更新Redis缓存
        updateRedisCache(event);
        
        // 2. 同步到Elasticsearch
        syncToElasticsearch(event);
        
        // 3. 发送库存预警检查
        checkInventoryAlert(event);
        
        // 4. 更新实时库存看板
        updateInventoryDashboard(event);
    }
    
    // 更新Redis缓存
    private void updateRedisCache(InventoryChangeEvent event) {
        String cacheKey = String.format("inventory:%d:%d:quantity", 
            event.getWarehouseId(), event.getProductId());
        
        // 获取最新库存数量
        Integer latestQuantity = inventoryMapper.selectAvailableQuantity(
            event.getWarehouseId(), event.getProductId()
        );
        
        // 更新缓存,设置5分钟过期
        redisTemplate.opsForValue().set(
            cacheKey, 
            latestQuantity, 
            5, 
            TimeUnit.MINUTES
        );
        
        // 更新库存变化趋势
        updateInventoryTrend(event, latestQuantity);
    }
    
    // 同步到Elasticsearch
    private void syncToElasticsearch(InventoryChangeEvent event) {
        IndexQuery indexQuery = new IndexQuery();
        indexQuery.setId(generateDocId(event));
        
        InventoryDocument doc = new InventoryDocument();
        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")
        );
    }
    
    // 库存预警检查
    private void checkInventoryAlert(InventoryChangeEvent event) {
        // 获取库存配置
        InventoryConfig config = 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 //

CREATE PROCEDURE run_daily_etl_process(IN process_date DATE)
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        -- 记录错误日志
        INSERT INTO etl_error_log (process_date, error_message, error_stack)
        VALUES (process_date, 'ETL过程执行失败', CONCAT('Error: ', SQLSTATE, ' - ', SQLERRM));
        
        -- 回滚
        ROLLBACK;
        
        -- 发送告警
        CALL send_etl_failure_alert(process_date, SQLERRM);
    END;
    
    -- 开始事务
    START TRANSACTION;
    
    -- 1. 清空临时表
    TRUNCATE TABLE temp_sales_fact;
    TRUNCATE TABLE temp_purchase_fact;
    TRUNCATE TABLE temp_inventory_fact;
    
    -- 2. 抽取销售事实数据
    INSERT INTO temp_sales_fact (
        date_key, customer_key, product_key, store_key,
        quantity, amount, cost, profit
    )
    SELECT 
        d.date_key,
        c.customer_key,
        p.product_key,
        s.store_key,
        SUM(od.quantity) as quantity,
        SUM(od.subtotal) as amount,
        SUM(od.cost * od.quantity) as cost,
        SUM(od.subtotal - od.cost * od.quantity) as profit
    FROM order_detail od
    JOIN customer_order co ON od.order_id = co.order_id
    JOIN dim_date d ON DATE(co.order_time) = d.date_value
    JOIN dim_customer c ON co.customer_id = c.customer_id
    JOIN dim_product p ON od.product_id = p.product_id
    LEFT JOIN dim_store s ON co.store_id = s.store_id
    WHERE DATE(co.order_time) = process_date
        AND co.order_status = 6 -- 已完成订单
    GROUP BY d.date_key, c.customer_key, p.product_key, s.store_key;
    
    -- 3. 抽取采购事实数据
    INSERT INTO temp_purchase_fact (
        date_key, supplier_key, product_key, warehouse_key,
        quantity, amount, tax_amount, total_amount
    )
    SELECT 
        d.date_key,
        s.supplier_key,
        p.product_key,
        w.warehouse_key,
        SUM(pod.quantity) as quantity,
        SUM(pod.price * pod.quantity) as amount,
        SUM(pod.tax_amount) as tax_amount,
        SUM(pod.total_amount) as total_amount
    FROM purchase_order_detail pod
    JOIN purchase_order po ON pod.purchase_id = po.purchase_id
    JOIN dim_date d ON DATE(po.order_date) = d.date_value
    JOIN dim_supplier s ON po.supplier_id = s.supplier_id
    JOIN dim_product p ON pod.product_id = p.product_id
    JOIN dim_warehouse w ON po.warehouse_id = w.warehouse_id
    WHERE DATE(po.order_date) = process_date
        AND po.order_status IN (7, 8) -- 部分收货或已完成
    GROUP BY d.date_key, s.supplier_key, p.product_key, w.warehouse_key;
    
    -- 4. 抽取库存事实数据
    INSERT INTO temp_inventory_fact (
        date_key, product_key, warehouse_key,
        opening_quantity, opening_amount,
        inbound_quantity, inbound_amount,
        outbound_quantity, outbound_amount,
        closing_quantity, closing_amount
    )
    SELECT 
        d.date_key,
        p.product_key,
        w.warehouse_key,
        SUM(CASE WHEN ifl.transaction_time < process_date 
            THEN ifl.ending_quantity ELSE 0 END) as opening_quantity,
        SUM(CASE WHEN ifl.transaction_time < process_date 
            THEN ifl.ending_amount ELSE 0 END) as opening_amount,
        SUM(CASE WHEN ifl.flow_type = 'INBOUND' AND DATE(ifl.transaction_time) = process_date
            THEN ifl.change_quantity ELSE 0 END) as inbound_quantity,
        SUM(CASE WHEN ifl.flow_type = 'INBOUND' AND DATE(ifl.transaction_time) = process_date
            THEN ifl.change_amount ELSE 0 END) as inbound_amount,
        SUM(CASE WHEN ifl.flow_type = 'OUTBOUND' AND DATE(ifl.transaction_time) = process_date
            THEN ifl.change_quantity ELSE 0 END) as outbound_quantity,
        SUM(CASE WHEN ifl.flow_type = 'OUTBOUND' AND DATE(ifl.transaction_time) = process_date
            THEN ifl.change_amount ELSE 0 END) as outbound_amount,
        SUM(CASE WHEN ifl.transaction_time <= process_date 
            THEN ifl.ending_quantity ELSE 0 END) as closing_quantity,
        SUM(CASE WHEN ifl.transaction_time <= process_date 
            THEN ifl.ending_amount ELSE 0 END) as closing_amount
    FROM inventory_flow ifl
    JOIN dim_date d ON DATE(ifl.transaction_time) = d.date_value
    JOIN dim_product p ON ifl.product_id = p.product_id
    JOIN dim_warehouse w ON ifl.warehouse_id = w.warehouse_id
    WHERE DATE(ifl.transaction_time) <= process_date
    GROUP BY d.date_key, p.product_key, w.warehouse_key;
    
    -- 5. 加载到事实表
    INSERT INTO fact_sales_daily
    SELECT * FROM temp_sales_fact
    ON DUPLICATE KEY UPDATE
        quantity = VALUES(quantity),
        amount = VALUES(amount),
        cost = VALUES(cost),
        profit = VALUES(profit);
    
    INSERT INTO fact_purchase_daily
    SELECT * FROM temp_purchase_fact
    ON DUPLICATE KEY UPDATE
        quantity = VALUES(quantity),
        amount = VALUES(amount),
        tax_amount = VALUES(tax_amount),
        total_amount = VALUES(total_amount);
    
    INSERT INTO fact_inventory_daily
    SELECT * FROM temp_inventory_fact
    ON DUPLICATE KEY UPDATE
        opening_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. 更新汇总表
    CALL update_sales_summary(process_date);
    CALL update_purchase_summary(process_date);
    CALL update_inventory_summary(process_date);
    
    -- 7. 记录ETL日志
    INSERT INTO etl_process_log (
        process_date, 
        process_type, 
        start_time, 
        end_time, 
        status,
        records_processed
    ) VALUES (
        process_date,
        'DAILY_ETL',
        NOW(),
        NOW(),
        'SUCCESS',
        (SELECT COUNT(*) FROM temp_sales_fact) +
        (SELECT COUNT(*) FROM temp_purchase_fact) +
        (SELECT COUNT(*) FROM temp_inventory_fact)
    );
    
    -- 提交事务
    COMMIT;
    
    -- 8. 后续处理
    CALL post_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   │ 专线连接     │
│              │ 代收代付             │ 数字证书         │ 硬件加密     │
│              │ 资金归集             │ 签名加密         │ 访问控制     │
└──────────────┴─────────────────────┴─────────────────┴─────────────┘

支付集成接口设计

// 统一支付接口
public interface PaymentService {
    
    /**
     * 创建支付订单
     */
    PaymentResponse createPayment(PaymentRequest request);
    
    /**
     * 查询支付状态
     */
    PaymentStatusResponse queryPaymentStatus(String paymentNo);
    
    /**
     * 处理支付回调
     */
    PaymentCallbackResponse handleCallback(PaymentCallbackRequest request);
    
    /**
     * 申请退款
     */
    RefundResponse requestRefund(RefundRequest request);
    
    /**
     * 查询退款状态
     */
    RefundStatusResponse queryRefundStatus(String refundNo);
}

// 支付策略工厂
@Component
public class PaymentStrategyFactory {
    
    @Autowired
    private WechatPaymentService wechatPaymentService;
    
    @Autowired
    private AlipayPaymentService alipayPaymentService;
    
    @Autowired
    private UnionPaymentService unionPaymentService;
    
    public PaymentService getPaymentService(String paymentMethod) {
        switch (paymentMethod) {
            case "WECHAT":
                return wechatPaymentService;
            case "ALIPAY":
                return alipayPaymentService;
            case "UNION":
                return unionPaymentService;
            default:
                throw new IllegalArgumentException("不支持的支付方式: " + paymentMethod);
        }
    }
}

// 微信支付实现
@Service
@Slf4j
public class WechatPaymentServiceImpl implements PaymentService {
    
    @Value("${wechat.pay.app-id}")
    private String appId;
    
    @Value("${wechat.pay.mch-id}")
    private String mchId;
    
    @Value("${wechat.pay.api-key}")
    private String apiKey;
    
    @Override
    public PaymentResponse createPayment(PaymentRequest request) {
        try {
            // 构建微信支付请求
            WxPayUnifiedOrderRequest wxRequest = new WxPayUnifiedOrderRequest();
            wxRequest.setBody(request.getSubject());
            wxRequest.setOutTradeNo(request.getPaymentNo());
            wxRequest.setTotalFee(request.getAmount().multiply(new BigDecimal("100")).intValue());
            wxRequest.setSpbillCreateIp(request.getClientIp());
            wxRequest.setNotifyUrl(request.getNotifyUrl());
            wxRequest.setTradeType(request.getTradeType());
            wxRequest.setOpenid(request.getOpenId());
            
            // 调用微信支付API
            WxPayUnifiedOrderResult result = wxPayService.unifiedOrder(wxRequest);
            
            // 构建响应
            PaymentResponse response = new PaymentResponse();
            response.setSuccess(true);
            response.setPaymentNo(request.getPaymentNo());
            response.setTradeNo(result.getTransactionId());
            response.setPrepayId(result.getPrepayId());
            response.setPaySign(generatePaySign(result));
            
            // 记录支付日志
            savePaymentLog(request, response, "CREATE");
            
            return response;
            
        } catch (WxPayException e) {
            log.error("微信支付创建失败", e);
            throw new PaymentException("支付创建失败: " + e.getErrCodeDes());
        }
    }
    
    @Override
    public PaymentCallbackResponse handleCallback(PaymentCallbackRequest request) {
        try {
            // 验证签名
            WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(
                request.getNotifyData());
            
            // 验证订单信息
            PaymentOrder paymentOrder = paymentOrderMapper.selectByPaymentNo(
                notifyResult.getOutTradeNo());
            
            if (paymentOrder == null) {
                throw new PaymentException("订单不存在");
            }
            
            // 验证金额
            BigDecimal actualAmount = new BigDecimal(notifyResult.getTotalFee())
                .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
            
            if (actualAmount.compareTo(paymentOrder.getAmount()) != 0) {
                throw new PaymentException("金额不一致");
            }
            
            // 更新订单状态
            PaymentCallbackResponse response = new PaymentCallbackResponse();
            
            if ("SUCCESS".equals(notifyResult.getResultCode())) {
                paymentOrder.setStatus(PaymentStatus.PAID);
                paymentOrder.setPaymentTime(new Date());
                paymentOrder.setTransactionId(notifyResult.getTransactionId());
                
                response.setSuccess(true);
                response.setMessage("支付成功");
                
                // 触发订单支付成功事件
                eventPublisher.publishEvent(new PaymentSuccessEvent(paymentOrder));
                
            } else {
                paymentOrder.setStatus(PaymentStatus.FAILED);
                paymentOrder.setFailReason(notifyResult.getErrCodeDes());
                
                response.setSuccess(false);
                response.setMessage("支付失败: " + notifyResult.getErrCodeDes());
            }
            
            paymentOrderMapper.update(paymentOrder);
            
            return response;
            
        } catch (WxPayException e) {
            log.error("微信支付回调处理失败", e);
            throw new PaymentException("回调处理失败");
        }
    }
}
6.1.2 物流系统集成
┌─────────────────────────────────────────────────────────────────────┐
│                    物流系统集成架构                                   │
├──────────────┬─────────────────────┬─────────────────┬─────────────┤
│   物流公司    │     集成方式         │    接口协议       │  功能支持     │
├──────────────┼─────────────────────┼─────────────────┼─────────────┤
│  顺丰速运     │ API集成             │ HTTPS+JSON       │ 电子面单     │
│              │ WebService          │ XML+SOAP         │ 轨迹查询     │
│              │ 数据对接             │ 批量文件         │ 费用结算     │
├──────────────┼─────────────────────┼─────────────────┼─────────────┤
│  中通快递     │ API集成             │ HTTPS+JSON       │ 下单接口     │
│              │ 开放平台             │ OAuth 2.0        │ 取消订单     │
│              │ 消息推送             │ WebSocket        │ 状态同步     │
├──────────────┼─────────────────────┼─────────────────┼─────────────┤
│  京东物流     │ API集成             │ HTTPS+JSON       │ 预约取件     │
│              │ 物流云              │ RESTful          │ 实时追踪     │
│              │ 电子签收             │ 图片上传         │ 异常上报     │
├──────────────┼─────────────────────┼─────────────────┼─────────────┤
│  第三方平台   │ 聚合接口             │ 统一适配层        │ 多物流比价   │
│              │ 智能推荐             │ 算法服务         │ 路由优化     │
│              │ 统一跟踪             │ 数据聚合         │ 报表分析     │
└──────────────┴─────────────────────┴─────────────────┴─────────────┘

物流集成接口设计

// 物流服务接口
public interface LogisticsService {
    
    /**
     * 创建物流订单
     */
    LogisticsOrderResponse createOrder(LogisticsOrderRequest request);
    
    /**
     * 取消物流订单
     */
    LogisticsCancelResponse cancelOrder(String logisticsNo);
    
    /**
     * 查询物流轨迹
     */
    LogisticsTrackResponse queryTrack(String logisticsNo);
    
    /**
     * 电子面单打印
     */
    LogisticsLabelResponse getPrintLabel(String logisticsNo);
    
    /**
     * 运费预估
     */
    LogisticsFeeEstimateResponse estimateFee(LogisticsFeeEstimateRequest request);
}

// 物流适配器模式
@Component
public class LogisticsAdapterFactory {
    
    @Autowired
    private SFLogisticsService sfLogisticsService;
    
    @Autowired
    private ZTOLogisticsService ztoLogisticsService;
    
    @Autowired
    private JDLogisticsService jdLogisticsService;
    
    public LogisticsService getLogisticsService(String companyCode) {
        switch (companyCode) {
            case "SF":
                return sfLogisticsService;
            case "ZTO":
                return ztoLogisticsService;
            case "JD":
                return jdLogisticsService;
            default:
                throw new IllegalArgumentException("不支持的物流公司: " + companyCode);
        }
    }
}

// 顺丰物流实现
@Service
@Slf4j
public class SFLogisticsServiceImpl implements LogisticsService {
    
    @Value("${sf.client-code}")
    private String clientCode;
    
    @Value("${sf.check-word}")
    private String checkWord;
    
    @Override
    public LogisticsOrderResponse createOrder(LogisticsOrderRequest request) {
        try {
            // 构建顺丰请求
            SFOrderRequest sfRequest = convertToSFRequest(request);
            
            // 添加签名
            String timestamp = String.valueOf(System.currentTimeMillis());
            String sign = generateSFSign(sfRequest, timestamp);
            sfRequest.setSign(sign);
            sfRequest.setTimestamp(timestamp);
            
            // 调用顺丰API
            SFOrderResponse sfResponse = sfClient.createOrder(sfRequest);
            
            // 处理响应
            if ("OK".equals(sfResponse.getApiResultCode())) {
                LogisticsOrderResponse response = new LogisticsOrderResponse();
                response.setSuccess(true);
                response.setLogisticsNo(sfResponse.getLogisticsNo());
                response.setWaybillNo(sfResponse.getWaybillNo());
                response.setLabelUrl(sfResponse.getLabelUrl());
                response.setEstimatedCost(sfResponse.getEstimatedCost());
                
                // 记录物流订单
                saveLogisticsOrder(request, response);
                
                return response;
            } else {
                throw new LogisticsException("顺丰下单失败: " + sfResponse.getApiErrorMsg());
            }
            
        } catch (Exception e) {
            log.error("顺丰物流下单失败", e);
            throw new LogisticsException("物流下单失败", e);
        }
    }
    
    @Override
    public LogisticsTrackResponse queryTrack(String logisticsNo) {
        try {
            // 构建查询请求
            SFTrackRequest trackRequest = new SFTrackRequest();
            trackRequest.setTrackingNumber(logisticsNo);
            trackRequest.setMethodType(1); // 1:顺丰运单号
            
            // 调用查询接口
            SFTrackResponse trackResponse = sfClient.queryRoute(trackRequest);
            
            // 转换响应
            LogisticsTrackResponse response = new LogisticsTrackResponse();
            response.setSuccess(true);
            response.setLogisticsNo(logisticsNo);
            response.setCurrentStatus(trackResponse.getMailStatus());
            
            List<LogisticsTrackDetail> trackDetails = new ArrayList<>();
            for (SFRoute route : trackResponse.getRoutes()) {
                LogisticsTrackDetail detail = new LogisticsTrackDetail();
                detail.setTrackTime(route.getAcceptTime());
                detail.setTrackDesc(route.getRemark());
                detail.setTrackLocation(route.getAcceptAddress());
                detail.setTrackStatus(route.getOpCode());
                
                trackDetails.add(detail);
            }
            
            response.setTrackDetails(trackDetails);
            
            return response;
            
        } catch (Exception e) {
            log.error("顺丰物流轨迹查询失败", e);
            throw new LogisticsException("轨迹查询失败", e);
        }
    }
    
    // 生成顺丰签名
    private String generateSFSign(SFOrderRequest request, String timestamp) {
        String source = clientCode + request.getOrderId() + timestamp + checkWord;
        return DigestUtils.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
@Slf4j
public class OrderController {
    
    @Autowired
    private OrderService orderService;
    
    /**
     * 创建订单
     */
    @PostMapping
    @Operation(summary = "创建订单", description = "客户或门店创建新订单")
    public ApiResponse<OrderDTO> createOrder(
            @Valid @RequestBody CreateOrderRequest request,
            @RequestHeader("X-User-Id") Long userId) {
        
        log.info("创建订单请求: userId={}, request={}", userId, request);
        
        // 设置创建人
        request.setCreateBy(userId);
        
        // 调用订单服务
        OrderDTO order = orderService.createOrder(request);
        
        return ApiResponse.success(order);
    }
    
    /**
     * 查询订单列表
     */
    @GetMapping
    @Operation(summary = "查询订单列表", description = "根据条件查询订单列表")
    public ApiResponse<PageResult<OrderDTO>> queryOrders(
            @ModelAttribute OrderQueryRequest queryRequest,
            @RequestHeader("X-User-Id") Long userId,
            @RequestHeader("X-Role-Code") String roleCode) {
        
        log.info("查询订单列表: userId={}, query={}", userId, queryRequest);
        
        // 设置数据权限
        queryRequest.setUserId(userId);
        queryRequest.setRoleCode(roleCode);
        
        // 查询订单
        PageResult<OrderDTO> result = orderService.queryOrders(queryRequest);
        
        return ApiResponse.success(result);
    }
    
    /**
     * 获取订单详情
     */
    @GetMapping("/{orderNo}")
    @Operation(summary = "获取订单详情", description = "根据订单号获取订单详细信息")
    public ApiResponse<OrderDetailDTO> getOrderDetail(
            @PathVariable String orderNo,
            @RequestHeader("X-User-Id") Long userId) {
        
        log.info("获取订单详情: orderNo={}, userId={}", orderNo, userId);
        
        // 验证订单访问权限
        orderService.checkOrderAccessPermission(orderNo, userId);
        
        // 获取订单详情
        OrderDetailDTO orderDetail = orderService.getOrderDetail(orderNo);
        
        return ApiResponse.success(orderDetail);
    }
    
    /**
     * 取消订单
     */
    @PostMapping("/{orderNo}/cancel")
    @Operation(summary = "取消订单", description = "取消指定订单")
    public ApiResponse<Void> cancelOrder(
            @PathVariable String orderNo,
            @Valid @RequestBody CancelOrderRequest request,
            @RequestHeader("X-User-Id") Long userId) {
        
        log.info("取消订单: orderNo={}, userId={}, reason={}", 
            orderNo, userId, request.getCancelReason());
        
        // 设置取消人
        request.setCancelBy(userId);
        
        // 取消订单
        orderService.cancelOrder(orderNo, request);
        
        return ApiResponse.success();
    }
    
    /**
     * 确认订单
     */
    @PostMapping("/{orderNo}/confirm")
    @Operation(summary = "确认订单", description = "确认订单进入分拣流程")
    public ApiResponse<Void> confirmOrder(
            @PathVariable String orderNo,
            @RequestHeader("X-User-Id") Long userId) {
        
        log.info("确认订单: orderNo={}, userId={}", orderNo, userId);
        
        // 确认订单
        orderService.confirmOrder(orderNo, userId);
        
        return ApiResponse.success();
    }
    
    /**
     * 订单状态变更历史
     */
    @GetMapping("/{orderNo}/status-history")
    @Operation(summary = "订单状态历史", description = "获取订单状态变更历史")
    public ApiResponse<List<OrderStatusHistoryDTO>> getStatusHistory(
            @PathVariable String orderNo) {
        
        log.info("获取订单状态历史: orderNo={}", orderNo);
        
        List<OrderStatusHistoryDTO> history = orderService.getStatusHistory(orderNo);
        
        return ApiResponse.success(history);
    }
}

// 订单服务内部接口(供其他服务调用)
@FeignClient(name = "order-service", path = "/internal/orders")
public interface OrderInternalService {
    
    /**
     * 根据订单号获取订单信息
     */
    @GetMapping("/{orderNo}")
    OrderDTO getOrderByNo(@PathVariable("orderNo") String orderNo);
    
    /**
     * 锁定订单库存
     */
    @PostMapping("/{orderNo}/lock-inventory")
    ApiResponse<Void> lockOrderInventory(@PathVariable("orderNo") String orderNo);
    
    /**
     * 确认订单库存
     */
    @PostMapping("/{orderNo}/confirm-inventory")
    ApiResponse<Void> confirmOrderInventory(@PathVariable("orderNo") String orderNo);
    
    /**
     * 扣减订单库存
     */
    @PostMapping("/{orderNo}/deduct-inventory")
    ApiResponse<Void> deductOrderInventory(@PathVariable("orderNo") String orderNo);
    
    /**
     * 获取订单商品明细
     */
    @GetMapping("/{orderNo}/items")
    List<OrderItemDTO> getOrderItems(@PathVariable("orderNo") String orderNo);
    
    /**
     * 更新订单支付状态
     */
    @PutMapping("/{orderNo}/payment-status")
    ApiResponse<Void> updatePaymentStatus(
        @PathVariable("orderNo") String orderNo,
        @RequestBody UpdatePaymentStatusRequest request);
}
6.2.3 库存服务接口设计
// 库存服务API定义
@RestController
@RequestMapping("/api/inventory")
@Validated
@Slf4j
public class InventoryController {
    
    @Autowired
    private InventoryService inventoryService;
    
    /**
     * 查询商品库存
     */
    @GetMapping("/products/{productId}")
    @Operation(summary = "查询商品库存", description = "查询指定商品在各仓库的库存情况")
    public ApiResponse<List<InventoryDTO>> getProductInventory(
            @PathVariable Long productId,
            @RequestParam(required = false) Long warehouseId) {
        
        log.info("查询商品库存: productId={}, warehouseId={}", productId, warehouseId);
        
        List<InventoryDTO> inventoryList = inventoryService.getProductInventory(
            productId, warehouseId);
        
        return ApiResponse.success(inventoryList);
    }
    
    /**
     * 查询可用库存
     */
    @GetMapping("/available")
    @Operation(summary = "查询可用库存", description = "查询商品在指定仓库的可用库存数量")
    public ApiResponse<Integer> getAvailableInventory(
            @RequestParam Long productId,
            @RequestParam Long warehouseId) {
        
        log.info("查询可用库存: productId={}, warehouseId={}", productId, warehouseId);
        
        Integer availableQuantity = inventoryService.getAvailableInventory(
            productId, warehouseId);
        
        return ApiResponse.success(availableQuantity);
    }
    
    /**
     * 锁定库存
     */
    @PostMapping("/lock")
    @Operation(summary = "锁定库存", description = "锁定指定数量的库存")
    public ApiResponse<LockInventoryResult> lockInventory(
            @Valid @RequestBody LockInventoryRequest request) {
        
        log.info("锁定库存请求: {}", request);
        
        LockInventoryResult result = inventoryService.lockInventory(request);
        
        return ApiResponse.success(result);
    }
    
    /**
     * 释放锁定库存
     */
    @PostMapping("/release")
    @Operation(summary = "释放锁定库存", description = "释放已锁定的库存")
    public ApiResponse<Void> releaseInventory(
            @Valid @RequestBody ReleaseInventoryRequest request) {
        
        log.info("释放库存请求: {}", request);
        
        inventoryService.releaseInventory(request);
        
        return ApiResponse.success();
    }
    
    /**
     * 扣减库存
     */
    @PostMapping("/deduct")
    @Operation(summary = "扣减库存", description = "扣减实际库存数量")
    public ApiResponse<Void> deductInventory(
            @Valid @RequestBody DeductInventoryRequest request) {
        
        log.info("扣减库存请求: {}", request);
        
        inventoryService.deductInventory(request);
        
        return ApiResponse.success();
    }
    
    /**
     * 增加库存
     */
    @PostMapping("/increase")
    @Operation(summary = "增加库存", description = "增加库存数量")
    public ApiResponse<Void> increaseInventory(
            @Valid @RequestBody IncreaseInventoryRequest request) {
        
        log.info("增加库存请求: {}", request);
        
        inventoryService.increaseInventory(request);
        
        return ApiResponse.success();
    }
    
    /**
     * 库存流水查询
     */
    @GetMapping("/flow")
    @Operation(summary = "库存流水查询", description = "查询库存变动流水记录")
    public ApiResponse<PageResult<InventoryFlowDTO>> queryInventoryFlow(
            @ModelAttribute InventoryFlowQueryRequest queryRequest) {
        
        log.info("库存流水查询: {}", queryRequest);
        
        PageResult<InventoryFlowDTO> result = inventoryService.queryInventoryFlow(queryRequest);
        
        return ApiResponse.success(result);
    }
}

// 库存服务内部接口(供其他服务调用)
@FeignClient(name = "inventory-service", path = "/internal/inventory")
public interface InventoryInternalService {
    
    /**
     * 批量查询库存
     */
    @PostMapping("/batch-query")
    List<InventoryDTO> batchQueryInventory(@RequestBody List<InventoryQuery> queries);
    
    /**
     * 安全扣减库存(防超卖)
     */
    @PostMapping("/safe-deduct")
    ApiResponse<Boolean> safeDeductInventory(@RequestBody SafeDeductRequest request);
    
    /**
     * 检查库存是否充足
     */
    @PostMapping("/check-sufficient")
    ApiResponse<Boolean> checkInventorySufficient(@RequestBody InventoryCheckRequest request);
    
    /**
     * 获取批次库存信息
     */
    @GetMapping("/batch/{batchId}")
    BatchInventoryDTO getBatchInventory(@PathVariable("batchId") Long batchId);
    
    /**
     * 库存预警检查
     */
    @PostMapping("/alert-check")
    List<InventoryAlertDTO> checkInventoryAlert(@RequestBody AlertCheckRequest request);
    
    /**
     * 更新库存成本
     */
    @PutMapping("/cost")
    ApiResponse<Void> updateInventoryCost(@RequestBody UpdateCostRequest request);
}

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) ,界面功能升级(四)
Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐