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

大家好,我是汤师爷~

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

履约域核心概念模型

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

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

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

相关推荐

  • 思维导图xmind如何安装?附安装包

    前言 大家好,我是小徐啊。我们在Java开发中,有时候是需要用到思维导图的,这可以帮助我们更好的理清思路,提高开发的效率。而说到思维导图,最有名的就是xmind了,它的功能十分强大,几乎是思维导图里面最强大的那一个。但是,默认只能使用初级功能,高级功能需要额外再开通,今天小徐就来介绍下如何安装xmind以及升级,让我们可以使用pro的功能。文末附获取方式。 …

    2025 年 1 月 11 日
    18200
  • 深入理解 Java 接口的回调机制

    前言 回调是一种非常重要的编程技术,它广泛应用于事件驱动的编程、异步任务和框架设计中。在 Java 中,回调机制通常通过 接口 来实现。本篇博客将详细解析 Java 接口的回调原理、实现方式,以及实际开发中的应用场景。 泪崩了,期末JAVA编程考了回调,小编不会。 一、什么是回调? 回调(Callback) 是指通过将一个方法作为参数传递给另一个方法,在某些…

    2025 年 1 月 12 日
    9300
  • 使用 gt-checksum 迁移表结构到 GreatSQL

    将数据库表结构迁移至 GreatSQL 的实践指南 引言 本文旨在指导用户如何利用 gt-checksum 工具,将数据库表结构从 ORACLE 平台平滑迁移至 GreatSQL。以下是详细的操作步骤和配置说明。 工具介绍:gt-checksum gt-checksum 是由 GreatSQL 社区开发的开源静态数据库校验与修复工具,广泛支持包括 MySQL…

    未分类 2024 年 12 月 27 日
    13400
  • 基于Redis有序集合实现滑动窗口限流

    滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间段内的请求次数。通过动态地滑动窗口,可以动态调整限流的速率,以应对不同的流量变化。 整个限流可以概括为两个主要步骤: 统计窗口内的请求数量 应用限流规则 Redis有序集合每个value有一个score(分数),基于score我们可以定义一个时间窗口,然后每次…

    2024 年 12 月 31 日
    12800
  • Java 零基础入门学习(小白也能看懂!)

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点,相互学习进步! 小杨近些在学习人工智能方面的知识,发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默…

    2025 年 1 月 14 日
    13600

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信