履约系统:发货单、配送单模型设计详解

大家好,我是汤师爷~

概念模型设计是系统开发的关键步骤,它能帮助我们厘清业务逻辑并定义核心实体。我们将从订单履约的基本概念入手,深入探讨各实体间的关系。

履约域核心概念模型

履约系统:发货单、配送单模型设计详解

如图展示了履约域的核心概念模型。

1、发货单

发货单是订单履约过程中的重要执行单据,它将订单转化为具体的发货任务。门店和仓储部门通过发货单进行拣货、打包并安排物流服务商发货。发货单确保货物从仓库到配送环节的流转过程有序、清晰、可追踪。

发货单的核心字段包含以下关键信息:

  • 发货单ID:系统生成的唯一标识,用于追踪和管理每笔发货记录
  • 所属订单ID:关联的主订单编号,确保发货单与订单的对应关系
  • 仓库/门店ID:负责发货的具体库存地点,可以是中央仓库或线下门店
  • 单据类型:标识发货单的业务类型,如销售发货、换货发货等
  • 发货方式:具体的配送方式选择,如快递、同城配送或自提等
  • 物流服务商:负责运输的快递公司或配送服务商信息
  • 实际发货时间:商品从仓库或门店实际出库的时间点
  • 单据状态:发货单在系统中的处理进度,如待发货、已发货、已签收等
  • 物流费用:该发货单产生的配送费用

2、发货单明细

发货单明细是发货单下所包含的具体商品项记录。每条发货单明细对应发货单中某个商品的实际发货信息,包括商品ID、SKU_ID、数量、重量等属性。

3、收货信息

记录收货人姓名、手机号码、联系电话和详细地址等。

4、交付信息

包括预计送货和送达时间、预约送达时间范围、预约自提时间范围、自提位置和配送方式等交付细节。

5、配送单

配送单是将已完成打包的包裹分配给物流服务商进行配送的业务单据。配送员通过配送单了解需配送的包裹信息,从而高效完成送货任务。

配送单包含以下关键字段:

  • 配送单ID:系统生成的唯一标识,用于追踪每笔配送记录
  • 所属发货单ID:关联的发货单编号,标识配送单与发货单的对应关系
  • 仓库/门店ID:负责发出商品的具体库存地点
  • 服务商ID:负责运输的物流服务商编号
  • 配送方式:具体的配送类型,如同城配送、快递配送等
  • 配送员信息:包括配送员姓名、工号和联系方式
  • 收件人姓名:订单收货人的真实姓名
  • 联系方式:手机号码、电话等
  • 收件地址:详细的配送目的地信息
  • 开始配送时间:包裹开始配送的具体时间
  • 完成配送时间:包裹成功送达的实际时间
  • 单据状态:配送单当前处理阶段,如待配送、配送中、已签收等
  • 配送费用:该配送单产生的实际运输费用

6、配送单明细

配送单明细记录每个配送单中具体的商品信息,包含商品ID、SKU_ID、数量和重量等属性。

订单履约的拆单逻辑

在整个发货环节中,订单是起点,发货单是订单拆分后的结果,用于处理更细粒度的履约逻辑。仓库收到发货单后会生成出库单,并以出库单为单位进行打包发货,如图所示。整个交易履约流程中会出现两次拆单:

1、第一次拆单

用户从购物车提交多个商品后,系统会根据业务规则将订单拆分为多个子订单,以便更好地管理和流转订单数据。子订单拆分主要基于交易结算的需求,包括不同商家主体、不同交易模式(如海外购)、不同支付结算方式、不同收货地址等因素。

2、第二次拆单

当一个子订单需要分成多个发货批次时,订单履约系统会将订单再次拆分为发货单,并将各个发货任务下发给仓库。发货单拆分主要考虑物流执行层面的因素,包括不同仓库存储、不同物流条件、不同体积和重量,以及用户的特殊配送需求等实际操作因素。

履约系统:发货单、配送单模型设计详解

接下来,让我们详细探讨几种常见的订单拆分场景,包括单门店履约、多仓库履约、基于物流条件和商品特性的拆分方案。

每种场景都有其独特的业务需求和实现逻辑,通过深入理解这些场景,我们可以更好地设计和优化订单履约系统。

单门店履约场景

在连锁模式下,系统会根据用户的收货地址进行智能匹配,通过计算门店服务半径和距离,为用户筛选出最近且可履约的门店。如图所示,此场景下,订单不需要拆分,直接分配给匹配门店进行拣货、打包和发货。

履约系统:发货单、配送单模型设计详解

多仓库履约场景

有些商家拥有多个仓库和门店,不同商品分散存储在各个库存点。当用户下单后,如果订单中的商品分布在不同仓库,系统会将订单拆分成多个发货单,并将每个发货单分配给对应的仓库,由各仓库根据商品数量进行备货和出库。

履约系统:发货单、配送单模型设计详解

按物流条件拆分

由于部分商品具有特殊属性,需要特定的物流条件,因此我们需要将订单拆分成不同的发货单。

例如,生鲜水果、冷链食品和易碎物品对快递服务的保护性和时效性要求较高,必须进行单独包装和发货。当订单中包含这类商品时,系统会自动进行订单拆分。

履约系统:发货单、配送单模型设计详解

按商品体积和重量拆分

物流公司对包裹的体积和重量都设有限制。当订单中的商品超出这些限制时,系统需要将订单拆分为多个发货单。从成本角度来看,某些情况下将大量商品分成多个小包裹发货,反而比合并成一个大包裹更经济。

履约系统:发货单、配送单模型设计详解

本文已收录于,我的技术网站:tangshiye.cn 里面有,AI 编程、算法 Leetcode 详解、面试八股文、BAT面试真题、简历模版、架构设计,等经验分享。

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/5032.html

(0)
LomuLomu
上一篇 2024 年 12 月 31 日 上午8:50
下一篇 2024 年 12 月 31 日 上午9:52

相关推荐

  • 使用Docker部署的基于binlog实现Mysql8

    概念 MySQL 基于 Binlog 的主从复制(Master-Slave Replication)是 MySQL 数据库中实现数据复制的一种机制。在这种复制模式下,主库(Master)记录所有对数据库的修改操作(如 INSERT、UPDATE、DELETE 等)到 二进制日志(Binlog) ,从库(Slave)则读取这些日志并执行相同的操作,从而保持与主…

    未分类 2025 年 1 月 13 日
    42600
  • 【Java 学习】Java抽象类详解:从理论到实践,带你迈向面向对象的深度思考!

    💬 欢迎讨论:如对文章内容有疑问或见解,欢迎在评论区留言,我需要您的帮助! 👍 点赞、收藏与分享:如果这篇文章对您有所帮助,请不吝点赞、收藏或分享,谢谢您的支持! 🚀 传播技术之美:期待您将这篇文章推荐给更多对需要学习Java语言、低代码开发感兴趣的朋友,让我们共同学习、成长! 1. 什么是抽象类? 举一个Animal类、Cat类和Dog类的例子: “`j…

    2025 年 1 月 15 日
    50200
  • JavaScript获取URL参数常见的4种方法

    🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养🥰 📝 专 栏:JavaScript深入研究 🎉 🌈 创作不易,如果能帮助到带大家,欢迎 收藏+关注 哦💕 在前端开发中,处理URL参数是一个常见的任务,尤其是在没有框架支持的情况…

    2025 年 1 月 6 日
    38400
  • python SQLAlchemy ORM——从零开始学习 04 如何过滤(筛选)数据库中的数据

    04 如何过滤(筛选)数据库中的数据 从数据库中获筛选数据主要应用以下几个接口:filter、filter_by、以及 where。前两个在 02已经展开说过,先展开说where接口 前情提要:依赖03提及的model【本质上就是数据库的链接,有可忽视】 当前的数据库表内容如下,仅作例子,不相同根据自身数据库操作即可: 4-1 通过where进行筛选 同时筛…

    2025 年 1 月 15 日
    54000
  • 利用Java实现SSE流式通信及前端动态展示效果

    技术概览 1.1 SSE技术解析 服务端推送事件(SSE)SSE是一种轻量级的实时通信协议,支持服务端主动向客户端推送数据更新。该技术基于标准HTTP协议建立持久连接,适用于需要持续数据更新的场景,如金融行情推送、即时通讯等。与传统轮询相比,SSE能显著降低网络开销并提升响应速度。 1.2 流式通信方案对比 SSE与长轮询(Long Polling)是两种常…

    未分类 2025 年 5 月 15 日
    60900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信