CN109840815B - 用于订单处理的系统及方法 - Google Patents
用于订单处理的系统及方法 Download PDFInfo
- Publication number
- CN109840815B CN109840815B CN201711189320.6A CN201711189320A CN109840815B CN 109840815 B CN109840815 B CN 109840815B CN 201711189320 A CN201711189320 A CN 201711189320A CN 109840815 B CN109840815 B CN 109840815B
- Authority
- CN
- China
- Prior art keywords
- order
- module
- processing
- stock
- sku
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开一种用于订单处理的系统及方法。涉及计算机信息处理领域,该系统包括:至少一个订单处理模块,用于对接收的订单进行库存计算,所述库存包括第一库存与第二库存;服务模块,用于处理所述订单,所述订单中包含多个标签,通过处理结果将所述多个标签中的一个指定为所述订单的标识;以及中间件模块,用于提供库存信息给所述至少一个订单处理模块,并且按照所述指定标识将所述订单分配至对应的订单处理模块中。本申请公开的用于订单处理的系统及方法,能够在多机共同运行处理的情况下,保证不同类型,不同库存状态的订单按照先下单先生产,先下单先占货的原则,依次处理订单数据,提升处理效率。
Description
技术领域
本发明涉及计算机信息处理领域,具体而言,涉及一种用于订单处理的系统及方法。
背景技术
随着网络购物的发展,越来越多的购物行为在网络中处理,面对数量繁多的订单,电商经常采用专门的服务器系统来进行订单处理。目前现有技术中通过订单转移系统来实现上述功能,订单转移系统主要用于为订单做生产计划,快速准确的将不同类别的订单,转移到对应的生产系统。
订单转移系统包括订单转移服务系统与订单计划引擎系统。订单转移服务系统,主要功能为订单快速下传,如果订单无法当前时间现货转移,则存入转移库,供订单计划引擎系统抓取处理。订单计划引擎系统,主要解决非现货及预约订单的转移。现货库存为仓库的实际库存数量;在途库存在内配单出库,扣减库内现货,产生目的仓的在途库存。
在现有技术中,订单计划引擎系统上是单个实例运行,因为后面运行的订单的库存计算会受到前面运行的订单的库存计算的影响。在订单计划引擎系统,按照先下单先生产的原则,必须按照下单时间从早到晚依次处理。但是随着单量的增大,即使订单计划引擎系统按照每轮几分钟处理间隔来算,在可预期的将来仍旧会到达运行瓶颈。所以将订单计划引擎系统同时运行的订单进行最大限度的扩展,即为进行订单计划引擎系统的多机实例运行是必须要完成的。但是如果只是单纯的把订单计划引擎系统进行多机实例部署,则会造成订单超卖、后下单订单先生产等情况发生。
因此,需要一种新的用于订单处理的系统及方法。
在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本发明提供一种用于订单处理的系统及方法,能够在多机共同运行处理的情况下,保证不同类型,不同库存状态的订单按照先下单先生产,先下单先占货的原则,依次处理订单数据,提升处理效率。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明的一方面,提出一种用于订单处理的系统,该系统包括:至少一个订单处理模块,用于按照订单序号对接收的订单进行库存计算,所述库存包括第一库存、第二库存与第三库存;服务模块,用于处理所述订单,所述订单中包含多个标签,通过处理结果将所述多个标签中的一个指定为所述订单的标识;以及中间件模块,用于为所述订单分配序号,提供库存信息给所述至少一个订单处理模块,并且按照所述标识将所述订单分配至对应的订单处理模块中。
在本公开的一种示例性实施例中,所述订单处理模块,包括:订单获取子模块,用于根据所述标识对应获取所述订单,生成订单数据;判断子模块,用于判断所述订单数据是否满足第一预定条件;以及订单处理子模块,用于按照订单序号依次处理满足所述第一预定条件的所述订单数据,并将所述订单数据的库存计算结果更新到所述库存信息中。
在本公开的一种示例性实施例中,所述订单处理子模块,包括:状态更新子模块,用于根据所述订单数据的处理结果,更新所述订单数据的状态值。
在本公开的一种示例性实施例中,所述订单处理子模块,还包括:延迟处理模块,用于将不满足所述第一预定条件的所述订单数据进行延迟处理。
在本公开的一种示例性实施例中,所述判断子模块调用所述中间件模块以判断所述订单数据是否满足第一预定条件。
在本公开的一种示例性实施例中,所述服务模块,包括:标签读取子模块,用于读取所述订单中包含的所有的标签;以及标识分配子模块,统计所述订单中所述多个标签的标签数量和标签种类,通过所述标签数量与所述标签种类为所述订单指定所述标识。
在本公开的一种示例性实施例中,所述中间件模块,包括:序号子模块,用于为所述订单分配订单序号;库存信息子模块,用于获取所述库存信息,并将所述库存信息提供给所述订单处理模块;订单分类子模块,用于按照所述标识将所述订单分配至对应的订单处理模块中。
在本公开的一种示例性实施例中,所述中间件模块,还包括:序号更新子模块,用于定时将所述订单序号进行更新。
在本公开的一种示例性实施例中,所述库存信息子模块,包括:定时任务子模块,用于通过定时任务的形式获取所述库存信息。
根据本发明的一方面,提出一种用于订单处理的方法,该方法包括:为所述订单信息分配订单序号;处理所述订单,所述订单中包含多个标签,通过处理结果将所述多个标签中的一个指定为所述订单的标识;按照所述标识将所述订单分配至对应的订单处理模块中;以及在订单处理模块中,按照订单序号对接收的订单进行库存计算,所述库存包括第一库存,第二库存与第三库存。
在本公开的一种示例性实施例中,所述按照订单序号对接收的订单进行库存计算,包括:根据所述标识获取指定的所述订单,生成订单数据;判断所述订单数据是否满足第一预定条件;以及按照订单序号依次处理满足所述第一预定条件的所述订单数据,并将所述订单数据的库存计算结果更新到所述库存信息中。
根据本发明的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本发明的一方面,提出一种计算机可读介质,其上存储有计算机程序,其特征在于,程序被处理器执行时实现如上文中的方法。
根据本发明的用于订单处理的系统及方法,能够在多机共同运行处理的情况下,保证不同类型,不同库存状态的订单按照先下单先生产,先下单先占货的原则,依次处理订单数据,提升处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
通过参照附图详细描述其示例实施例,本发明的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种用于订单处理的系统的框图。
图2是根据另一示例性实施例示出的一种用于订单处理的系统的框图。
图3是根据另一示例性实施例示出的一种用于订单处理的系统的框图。
图4是根据另一示例性实施例示出的一种用于订单处理的系统的框图。
图5是根据另一示例性实施例示出的一种用于订单处理的系统的框图。
图6是根据另一示例性实施例示出的一种用于订单处理的方法的流程图。
图7是根据一示例性实施例示出的一种电子设备的框图。
图8示意性示出本公开示例性实施例中一种计算机可读存储介质示意图。
具体实施例
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语「及/或」包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。
图1是根据一示例性实施例示出的一种用于订单处理的系统的框图。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的购物类网站提供支持的订单处理服务器。订单处理服务器可以对接收到的订单进行处理,并将处理结果(例如订单数量,库存状态等)反馈给终端设备。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2是根据另一示例性实施例示出的一种用于订单处理的系统的框图。用于订单处理的系统20包括订单处理模块202,服务模块204,中间件模块206,转移库208。
订单处理模块202用于对接收的订单进行库存计算,所述库存包括第一库存与第二库存。第一库存可例如为某配送中心某仓的库存,第二库存可例如为sku在某配送中心的库存,第三库存可例如为订单在某配送中心的库存。
如图3所示订单处理模块202可例如包括:订单获取子模块2022用于根据所述指定标识,读取指定的所述订单,生成订单数据;判断子模块2024用于判断所述订单数据是否满足第一预定条件;以及订单处理子模块2026用于按照订单序号依次处理满足所述第一预定条件的所述订单数据,并将所述订单数据的库存计算结果更新到所述库存信息中。
其中,订单处理子模2026包括:状态更新子模块(图中未示出),用于根据所述订单数据的处理结果,更新该订单数据的状态值。延迟处理模块(图中未示出),用于将不满足所述第一预定条件的所述订单数据进行延迟处理。
在现有技术中,订单计划引擎系统整体流程是按照下单时间转换过来的时间戳依次进行订单的处理。而在本申请中,订单处理模块202处理的功能相当于现有技术中的订单计划引擎,但是订单处理模块202按照订单的序号进行依次处理。订单处理模块202会在加载订单时批量调用库存接口获取该轮需要处理的所有订单中商品库存信息(sku在有备货的仓的各库存项数值)。其中调库存接口返回skuId商品编号、dcid配送中心编号、sid仓编号、numStock现货库存、numZtStock在途库存、orderTransfer转移预占数等。
订单处理模块202处理订单过程中主要进行订单的库存计算,包括:sku(库存量单位)在某配送中心某仓的库存计算,sku在某配送中心的库存计算,订单在某配送中心的库存计算。其中,sku在某配送中心某仓(比如配送中心6仓0)的库存计算的求解是建立在本轮上一个含有下列条件的订单(含有相同sku并且该sku定位在某配送中心某仓比如配送中心6仓0的订单)的该sku处理的解的基础上。具体指的是本轮上一个含有相同sku的订单处理完后在定位的配送中心库房对该sku进行PIL预占(也就是转移内部库存预占逻辑),具体涉及到转移预占、现货预占数、在途预占。
预占后的可用现货量=预占前的可用现货量-现货预占数;
预占后的转移预占=预占前的转移预占+(预占前的可用现货量-预占后的可用现货量);
预占后的可用在途量=预占前的可用在途量-在途预占数;
其中预占前的可用现货量、预占前的转移预占、预占前的可用在途量,为本轮上一个含有相同sku并且该sku定位在同配同仓的订单的预占后的可用现货量、预占后的转移预占、预占后的可用在途量。
订单在进行sku在配送中心仓级别的库存计算时,如果sku在该配送中心该仓下可用现货>=订单该sku的购买量,则认为该sku在该配该仓为现货;如果可用现货<订单该sku的购买量,并且可用在途>=订单该sku的购买量,则认为该sku在该配该仓为在途;如果可用在途<订单该sku的购买量,则认为该sku在该配该仓为可预订。
其中可用现货计算公式可以简单理解为:如果存在本轮上一个含有相同sku并且该sku定位在该配该仓的订单。
可用现货量=numStock现货库存-本轮上一个含有相同sku并且该sku定位在该配该仓的订单的该sku预占后的转移预占数;
可用在途量=本轮上一个含有相同sku并且该sku定位在该配该仓的订单的该sku预占后的可用在途量。
如果不存在本轮上一个含有相同sku并且该sku定位在该配该仓的订单,则:可用现货量=numStock现货库存-库存接口返回的该sku定位在该配该仓的orderTransfer转移预占数
可用在途量=-库存接口返回的该sku定位在该配该仓的numZtStock在途库存。
在本实施例汇总,各订单处理模块202进行新的一轮抓取时,会先查看当前系统时间与统一运行表unifiedRun的时间是否小于10分钟。(线上是订单处理模块202每10分钟运行1轮,如果小于10分钟,说明中间件模块206的库存信息为最新获取的,未被上一轮所使用过)。如果小于10分钟,开始运行新一轮;如果不小于10分钟,则本轮不运行,等待10分钟后继续判断。
各订单处理模块202会抓取符合暂停条件并且判断表中machineid等于该订单处理模块202分配的id的订单。比如订单处理模块202A只抓取machineid=1的订单;订单处理模块202B只抓取machineid=2的订单调用中间件模块206判断订单是否可以处理各实例订单处理模块202开始处理每个订单时会调用中间件模块206判断该订单是否可以处理,入参为订单下sku及该sku的顺序号。
服务模块204用于处理所述订单,所述订单中包含多个标签,通过处理结果将所述多个标签中的一个指定为所述订单的标识。如图4所示,服务模块204可例如包括:标签读取子模块2042用于读取所述订单中包含的所有的标签;以及标识分配子模块2044统计所述订单中所述多个标签的标签数量和标签种类,通过所述标签数量与所述标签种类为所述订单的指定标识。
服务存订单到转移库208时会调用中间件模块206给该订单下所有sku赋予一个新的顺序号并将新的顺序号存库(相当于orderdetail表的serialNumber)。
订单处理模块202处理完转移内部预占逻辑后回传信息给中间件模块206订单处理完后进行转移内部预占逻辑处理后将该订单下sku的库存预占信息回传给中间件模块206,包括sku在定位的配送中心库房下的预占后的可用现货量、预占后的转移预占、预占后的可用在途量。订单现货转移处理逻辑:订单处理后如果判断是现货转移订单,则更新skulist表中该订单下sku的count值-1。比如skulist表中skuA的count值为10,skuB的count值为5。订单order1含有skuA、skuB,订单order1需要进行现货转移,则更新skulist表中skuA的count值为9,skuB的count值为4。
订单延迟处理在订单处理模块202逻辑订单开始处理前调用中间件模块206来判断订单是否可以在此时处理,如果返回延迟处理,则该订单在该订单处理模块202的本轮处理中需要延迟处理。
订单处理模块202如果得出该订单延迟处理,则将该订单放置在订单处理模块202的内存(以下称为等待区)中。如果订单处理模块202收到中间件模块206触发的消息,则立即重新开始处理该订单。同时如果在该订单处理模块202中有订单进入等待区比如order2(order2含有skuA、skuB,其中中间件模块206返回skuA的顺序号不等于此时skuA运行顺序号),则会以skuA为参数查找等待区中含有skuA的订单。如果找到该订单有且仅有1个,则将立即重新开始处理该订单。如果找到该订单有两个及两个以上,则选出skuA的顺序号小的订单立即开始处理,其他的订单仍暂停在等待区。
最后各实例订单处理模块202处理完所有可以处理的订单后,会查看等待区是否有订单存在,如果有,则立即处理等待区订单。
服务模块204会把该订单下skuid存入skulist表skulist表结构:skuid、count;如果表中没有该sku数据,插入时count=1;如果表中已有该sku数据,则更新该sku记录,count+1。
首先调用商品属性接口获取该订单下所有sku的所属事业部(可例如为本实施例中的订单的标签)。事业部可例如分为生鲜事业部、消费品事业部、时尚事业部、居家生活事业部、家电事业部、3C事业部其中machineid与事业部对应关系如下:生鲜事业部(machineid=1)、消费品事业部(machineid=2)、时尚事业部(machineid=3)、居家生活事业部(machineid=4)、家电事业部(machineid=5)、3C事业部(machineid=6)。可例如根据订单的sku判断该订单所属的事业部:如果订单中的sku属于同一个事业部A,则该订单所属的事业部就是A。如果订单中的sku属于不同的事业部,则取该订单中sku所属的事业部次数最多的,比如订单含有skuA、skuB、skuC;skuA属于生鲜事业部,skuB、skuC属于消费品事业部,则该订单判断为属于消费品事业部如果sku数量相同,则以sku的销售热度最火的为主(sku分为热销、畅销、平销、滞销(分别为bandA\bandB\bandC\bandD根据band,bandA>bandB>bandC>bandD)如果有两个band最高的sku,则以sku的购买量最大的为主,最后如果sku的购买量相同,则取sku编号最小的为主。根据订单所属的事业部判断出该订单的machineid,作为该订单的指定的所述标识。
如果中间件模块206返回该订单延迟处理,则该订单在该实例的订单处理模块202推迟处理。如果中间件模块206返回该订单可以处理,并且返回该订单下所有sku的库存信息,订单处理模块202开始进行正常对该订单进行处理计算。
中间件模块206批量获取需处理sku的库存信息,订单处理模块202开始处理订单时调用中间件模块206判断是否可以处理,如果可以处理,返回该订单下的sku的当前的库存信息。
中间件模块206用于提供库存信息给所述至少一个订单处理模块,并且按照所述指定标识将所述订单分配至对应的订单处理模块中。如图5所示,中间件模块206包括:序号子模块2062用于为所述订单分配订单序号;库存信息子模块2064用于获取所述库存信息,并将所述库存信息提供给所述订单处理模块;库存信息子模块2064还包括定时任务子模块(图中未示出)用于通过定时任务的形式获取所述库存信息。订单分类子模块2066用于按照所述指定标识将所述订单分配至对应的订单处理模块中。订单序号子模块2068用于为所述订单依序分配序号,并定时将所述序号进行定时更新。
中间件模块206给订单下所有sku赋予一个新的顺序号并将新的顺序号存库(orderdetail表的serialNumber)。分发顺序号的逻辑可例如如下:
查看skulist表中是否有该sku的顺序号最大数,如果没有该sku的顺序号最大数,则设置该sku的顺序号最大数为1,并且设置订单下该sku的顺序号为1;如果有该sku的顺序号最大数比如为a,则更新该sku的顺序号最大数a+1,并且设置该订单的该sku的顺序号为a+1。比如订单order1含有skuA、skuB,并且skuA在skulist表中有顺序号最大数,顺序号最大数为5,skuB在skulist表中没有顺序号最大数。order1在服务模块204判断需要存入转移库208时,调中间件模块206获取该订单下的skuA、skuB的顺序号。中间件模块206根据上述逻辑得出,分配给order1的skuA顺序号为6,order1的skuB顺序号为1;并且更新skuA顺序号最大数为6,skuB顺序号最大数为1。
中间件模块206统一调用库存接口获取库存信息。具体逻辑如下:订单本轮处理前统一抓取新表skulist表获取需要处理的sku(count值大于0),调用库存接口获取这些skuid的库存信息并存放在内存中供本轮各实例订单处理模块202使用比如:skulist表目前含有skuA、skuB、skuC;其中skuA、skuB的count值为2,skuC的count值为0;则中间件模块206只抓取skuA、skuB作为需处理的sku,并将需处理的sku作为入参调用库存接口获取库存信息,得出各个sku在各个有备货属性的仓下的可用现货量、可用在途量、转移预占等信息。
中间件模块206获取库存信息的时间间隔可例如为每10分钟一次。需要注意的,中间件模块206获取库存信息的时间与各订单处理模块202开始运行新一轮时间需要保持一定时间间隔,以保证需处理的sku都可以调库存接口获取到库存信息。比如中间件模块206获取库存信息时间为10:07,则各订单处理模块202本轮开始运行的时间为10:10。
中间件模块206的内存分为A、B两区;A区为当前各实例正在使用的库存信息(比如当前时间10:08,A区供实例10:00轮使用);B区为刚抓取到的库存信息(B区供实例10:10轮使用)。当这一轮处理完时,中间件模块206清空A区缓存,将B区内容放置在A区,清空B区等待下一次抓取的库存信息。
获取完所有需处理的sku库存信息后,中间件模块206更新统一运行表unifiedRun的时间为当前系统时间,比如'2017-10-01 08:00:00'。各订单处理模块202进行新的一轮抓取时,会先查看当前系统时间与统一运行表unifiedRun的时间是否小于10分钟(线上是订单处理模块202每10分钟运行1轮,如果小于10分钟,说明中间件模块206的库存信息为最新获取的,未被上一轮所使用过)。如果小于10分钟,开始运行新一轮;如果不小于10分钟,则本轮不运行,等待10分钟后继续判断。
订单开始处理时调用中间件模块206判断是否可以进行处理,入参为订单号、订单下sku及该sku的顺序号、调用来源(订单处理模块202的machineid)。
中间件模块206判断逻辑可例如如下:skulist表中含有sku仍暂停状态的顺序号最小数、sku的顺序号最大数。transferSkulist表含有各sku已现货转移的sku顺序号
中间件模块206读取skulist中所需处理的sku,并且读取transferSkulist表中含有各sku已现货转移的sku顺序号,将sku仍暂停状态的顺序号最小数、sku的顺序号最大数、各sku已现货转移的sku顺序号保存在内存中。本轮开始时,中间件模块206将sku的运行顺序号初始化为sku仍暂停状态的顺序号最小数。如果该订单下的某个sku的顺序号不等于该sku的运行顺序号,则中间件模块206返回该订单延迟处理,并且返回订单的sku的顺序号不等于运行顺序号的sku编号;如果该订单下的所有sku的顺序号等于该sku的运行顺序号,则中间件模块206返回该订单可以处理,并且返回该订单下所有sku的库存信息如果该sku的运行顺序号所对应的订单已经返回该订单相应的转移内部预占信息,则更新该sku的运行顺序号为下一个运行顺序号。
计算下一个运行顺序号具体逻辑如下:比如当前运行顺序号为A,判断A+1是否在该sku已现货转移的sku顺序号,如果不在,则下一个运行顺序号为A+1;如果在,则接着判断A+2是否在该sku已现货转移的sku顺序号。依次类推,直到计算出该sku下一个运行顺序号,将该sku下一个运行顺序号赋值到该sku运行顺序号。
订单延迟处理在中间件模块206逻辑可例如:订单处理模块202开始处理订单时调用中间件模块206获取订单是否可以处理,如果判断订单延迟处理,则中间件模块206在内存(以下称为触发处理区)中保存相关信息(订单号、订单下sku及该sku的顺序号、调用来源machineid)。并且如果有订单延迟处理比如order2(order2含有skuA、skuB,其中skuA的顺序号不等于此时skuA运行顺序号),则会以skuA、skuA的运行顺序号为参数查找触发处理区中含有skuA、并且skuA顺序号等于skuA的运行顺序号的订单。如果找到该订单比如order3,则查看订单order3是否含有其他sku。如果含有其他sku比如skuC,则查看order3的skuC的顺序号是否到达运行顺序号。如果其他sku也都全部到达运行顺序号,则根据订单的machineid通知运行该订单的订单处理模块202。如果没有含有其他sku,则直接根据订单的machineid通知运行该订单的订单处理模块202。
订单处理模块202处理订单时,调用中间件模块206判断订单是否可以处理,如果中间件模块206返回该订单可以处理,则会返回该订单下所有sku的库存信息,包括现货库存、在途库存、转移预占数订单根据这些返回的sku的库存信息进行订单库存计算。其中可用现货量=现货库存-转移预占数;订单计算结果后会对订单下所有sku进行转移内部库存预占逻辑,得出在定位的配送中心库房的预占后的可用现货量、预占后的转移预占、预占后的可用在途量。订单处理模块202将这些预占后的库存项传给中间件模块206。中间件模块206接受到该订单下sku的内部预占的库存项后,更新订单下的sku在该配送中心库房下的库存信息。其中现货库存不更新,转移预占数更新为预占后的转移预占,在途库存更新为预占后的可用在途量比如订单order1定位在配送中心6库房号0下,skuA在配送中心6库房号0下的预占后的可用现货量=10、预占后的转移预占=5、预占后的可用在途量=20;这些库存项传给中间件模块206后,中间件模块206更新skuA在配送中心6库房号0下的库存项,其中转移预占数=5,在途库存=20。
保存已现货转移的sku顺序号和更新sku仍暂停状态的顺序号最小数。如果订单处理判断为现货转移,则调中间件传入转移内部预占信息时,同时也会传入节点istransfered(是否现货转移)。中间件模块206接收到istransfered,进行如下逻辑判断:如果istransfered=0,表示该订单没有现货转移;如果istransfered=1,表示该订单现货转移,保存该订单的所有sku的顺序号到transferSkulist表中。并且如果该sku的运行顺序号等于sku仍暂停状态的顺序号最小数,则更新该sku的仍暂停状态的顺序号最小数为该sku的下一个运行顺序号(下一个运行顺序号计算逻辑见上计算下一个运行顺序号具体逻辑)。
根据本发明的用于订单处理的系统,通过服务模块204为订单指定标识,中间件模块206获取库存信息,并为所述订单分配订单序号,然后将订单按照指定标识发送至订单处理模块202进行处理的方式,能够在多机共同运行处理的情况下,保证不同类型,不同库存状态的订单按照先下单先生产,先下单先占货的原则,依次处理订单数据,提升处理效率。
应清楚地理解,本发明描述了如何形成和使用特定示例,但本发明的原理不限于这些示例的任何细节。相反,基于本发明公开的内容的教导,这些原理能够应用于许多其它实施例。
图6是根据另一示例性实施例示出的一种用于订单处理的方法的流程图。
其中,在S602中,为所述订单信息分配订单序号。可例如,在中间件模块中,为订单分配订单序号。中间件模块通过设置个定时任务,定时清理订单顺序号。具体逻辑可例如如下:
各订单处理模块202调用中间件模块206判断是否可以处理时,如果返回可以处理,并且返回订单下所有sku的库存信息,同时也会返回该订单下所有sku的第二顺序号secondSN,订单处理模块202对订单下的sku的第二顺序号secondSN进行存库(订单明细orderdetail表的secondSN字段)。中间件模块206计算第二顺序号secondSN逻辑为:每个sku的secondSN默认为1,中间件模块206判断该订单可以处理,则返回该订单下所有的sku的第二顺序号secondSN,并且中间件模块206更新sku的secondSN值加上1。比如订单order1下含有skuA,skuA在中间件模块206secondSN为5,则order1调中间件模块206返回可以处理的同时,返回skuA的secondSN=5,并且此时中间件模块206的skuA的secondSN更新为6中间件模块206保存订单处理模块202er处理完后各sku的运行顺序号。比如skuA的最终的运行顺序号为1000,最终secondSN为550。
对在订单处理模块202运行过程期间服务模块204入库的新订单进行处理。这期间进来的订单先只存顺序号serialNumber,第二顺序号secondSN先置为空。因为这期间订单处理模块202处理的订单的secondSN还没计算完毕。比如order2的skuA顺序号为1010。
订单处理模块202处理完毕之后,服务模块204准备存库订单调用中间件模块206获取顺序号时先不返回sku的顺序号,则订单暂时进入服务模块204储备池。
开始填充订单处理模块202行过程期间服务模块204入库的新订单的sku的secondSN。该订单下各sku的secondSN=(该订单下各sku的顺序号-sku的最终的运行顺序号)+sku的最终secondSN。
上一步计算完后,得出各sku的secondSN最大数,更新skulist中secondSN最大数字段=secondSN最大数。更新skulist表中各sku的sku仍暂停状态的顺序号最小数为1。
服务模块204入库的订单计算sku的顺序号的同时要开始计算订单sku下的secondSN(优先处理在服务模块204储备池的订单),逻辑如下:查看skulist表中是否有该sku的secondSN最大数,如果没有该sku的secondSN最大数,则设置该sku的secondSN最大数为1,并且设置订单下该sku的secondSN为1;如果有该sku的secondSN最大数比如为a,则更新该sku的secondSN最大数a+1,并且设置该订单的该sku的secondSN为a+1。
关闭中间件模块206的顺序号serialNumber计算。清空transferSkulist表。服务模块204、中间件模块206、订单处理模块202中之前有关对顺序号serialNumber的逻辑全部切换为对secondSN的逻辑(逻辑不变,只是顺序号serialNumber和secondSN两者的身份对调,serialNumber变为备用)。下一次整理sku的顺序号的逻辑时,本质上是对secondSN的整理,serialNumber变成准备替换上场的。
在S604中,处理所述订单,所述订单中包含多个标签,通过处理结果将所述多个标签中的一个指定为所述订单的标识。
在S606中,按照所述标识将所述订单分配至对应的订单处理模块中。
在S608中,在订单处理模块中,按照订单序号对接收的订单进行库存计算,所述库存包括第一库存,第二库存与第三库存。其中,可例如根据所述标识获取指定的所述订单,生成订单数据;判断所述订单数据是否满足第一预定条件;以及按照订单序号依次处理满足所述第一预定条件的所述订单数据,并将所述订单数据的库存计算结果更新到所述库存信息中。
根据本发明的用于订单处理的方法,为订单指定标识,并为所述订单分配订单需要,然后将订单按照指定标识与序号依次进行处理的方式,能够在多机共同运行处理的情况下,保证不同类型,不同库存状态的订单按照先下单先生产,先下单先占货的原则,依次处理订单数据,提升处理效率。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
图7是根据一示例性实施例示出的一种电子设备的框图。
下面参照图7来描述根据本发明的这种实施方式的电子设备200。图7显示的电子设备200仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备200以通用计算设备的形式表现。电子设备200的组件可以包括但不限于:至少一个处理单元210、至少一个存储单元220、连接不同系统组件(包括存储单元220和处理单元210)的总线230、显示单元240等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元210执行,使得所述处理单元210执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元210可以执行如图6中所示的步骤。
所述存储单元220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)2201和/或高速缓存存储单元2202,还可以进一步包括只读存储单元(ROM)2203。
所述存储单元220还可以包括具有一组(至少一个)程序模块2205的程序/实用工具2204,这样的程序模块2205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备300(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述电子处方流转处理方法。
图8示意性示出本公开示例性实施例中一种计算机可读存储介质示意图。
参考图8所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品400,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:为所述订单信息分配订单序号;处理所述订单,所述订单中包含多个标签,通过处理结果将所述多个标签中的一个指定为所述订单的标识;以及按照所述指定标识将所述订单分配至对应的订单处理模块中;在订单处理模块中,按照订单序号对接收的订单进行库存计算,所述库存包括第一库存,第二库存与第三库存。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施例的方法。
以上具体地示出和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
此外,本说明书说明书附图所示出的结构、比例、大小等,均仅用以配合说明书所公开的内容,以供本领域技术人员了解与阅读,并非用以限定本公开可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本公开所能产生的技术效果及所能实现的目的下,均应仍落在本公开所公开的技术内容得能涵盖的范围内。同时,本说明书中所引用的如「上」、「第一」、「第二」及「一」等的用语,也仅为便于叙述的明了,而非用以限定本公开可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当也视为本发明可实施的范畴。
Claims (13)
1.一种用于订单处理的系统,其特征在于,包括:
至少一个订单处理模块,用于按照订单序号对接收的订单进行库存计算,所述库存包括第一库存、第二库存与第三库存,所述至少一个订单处理模块包括订单获取子模块、判断子模块和订单处理子模块;
服务模块,用于处理所述订单,所述订单中包含多个标签,通过处理结果将所述多个标签中的一个指定为所述订单的标识;以及
中间件模块,用于为所述订单分配所述订单序号,提供库存信息给所述至少一个订单处理模块,并且按照所述标识将所述订单分配至对应的订单处理模块中。
2.如权利要求1所述的系统,其特征在于,所述订单处理模块,包括:
订单获取子模块,用于根据所述标识对应获取所述订单,生成订单数据;
判断子模块,用于判断所述订单数据是否满足第一预定条件;以及
订单处理子模块,用于按照订单序号依次处理满足所述第一预定条件的所述订单数据,并将所述订单数据的库存计算结果更新到所述库存信息中。
3.如权利要求2所述的系统,其特征在于,所述订单处理子模块,包括:
状态更新子模块,用于根据所述订单数据的处理结果,更新所述订单数据的状态值。
4.如权利要求2所述的系统,其特征在于,所述订单处理子模块,还包括:
延迟处理模块,用于将不满足所述第一预定条件的所述订单数据进行延迟处理。
5.如权利要求2所述的系统,其特征在于,所述判断子模块调用所述中间件模块以判断所述订单数据是否满足第一预定条件。
6.如权利要求1所述的系统,其特征在于,所述服务模块,包括:
标签读取子模块,用于读取所述订单中包含的所有的标签;以及
标识分配子模块,统计所述订单中所述多个标签的标签数量和标签种类,通过所述标签数量与所述标签种类为所述订单指定所述标识。
7.如权利要求1所述的系统,其特征在于,所述中间件模块,包括:
序号子模块,用于为所述订单分配订单序号;
库存信息子模块,用于获取所述库存信息,并将所述库存信息提供给所述订单处理模块;
订单分类子模块,用于按照所述标识将所述订单分配至对应的订单处理模块中。
8.如权利要求1所述的系统,其特征在于,所述中间件模块,还包括:
序号更新模块,用于定时将所述订单序号进行更新。
9.如权利要求7所述的系统,其特征在于,所述库存信息子模块,包括:
定时任务子模块,用于通过定时任务的形式获取所述库存信息。
10.一种用于订单处理的方法,其特征在于,包括:
为所述订单分配订单序号;
处理所述订单,所述订单中包含多个标签,通过处理结果将所述多个标签中的一个指定为所述订单的标识;
按照所述标识将所述订单分配至对应的订单处理模块中;以及
在订单处理模块中,按照所述订单序号对接收的订单进行库存计算,所述库存包括第一库存,第二库存与第三库存,所述订单处理模块包括订单获取子模块、判断子模块和订单处理子模块。
11.如权利要求10所述的方法,其特征在于,所述按照订单序号对接收的订单进行库存计算,包括:
根据所述标识获取指定的所述订单,生成订单数据;
判断所述订单数据是否满足第一预定条件;以及
按照订单序号依次处理满足所述第一预定条件的所述订单数据,并将所述订单数据的库存计算结果更新到所述库存信息中。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求10-11中任一所述的方法。
13.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求10-11中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711189320.6A CN109840815B (zh) | 2017-11-24 | 2017-11-24 | 用于订单处理的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711189320.6A CN109840815B (zh) | 2017-11-24 | 2017-11-24 | 用于订单处理的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109840815A CN109840815A (zh) | 2019-06-04 |
CN109840815B true CN109840815B (zh) | 2021-05-25 |
Family
ID=66875996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711189320.6A Active CN109840815B (zh) | 2017-11-24 | 2017-11-24 | 用于订单处理的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109840815B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113516523A (zh) * | 2020-04-10 | 2021-10-19 | 北京京东振世信息技术有限公司 | 一种订单数据处理方法和接单系统 |
CN112184103A (zh) * | 2020-09-15 | 2021-01-05 | 苏州牧星智能科技有限公司 | 一种订单处理方法、装置及系统 |
CN113240498B (zh) * | 2020-10-30 | 2022-06-17 | 贵州玖引擎科技有限公司 | 结合数字经济和新零售的业务处理方法及大数据服务器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105931003A (zh) * | 2016-06-03 | 2016-09-07 | 北京京东尚科信息技术有限公司 | 订单处理方法、系统和装置 |
CN107369055A (zh) * | 2016-05-11 | 2017-11-21 | 北京京东尚科信息技术有限公司 | 订单消息的取货分配方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799111B2 (en) * | 2012-05-04 | 2014-08-05 | Nintendo Of America Inc. | Systems and/or methods for selling non-inventory items at point-of-sale (POS) locations |
-
2017
- 2017-11-24 CN CN201711189320.6A patent/CN109840815B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107369055A (zh) * | 2016-05-11 | 2017-11-21 | 北京京东尚科信息技术有限公司 | 订单消息的取货分配方法及装置 |
CN105931003A (zh) * | 2016-06-03 | 2016-09-07 | 北京京东尚科信息技术有限公司 | 订单处理方法、系统和装置 |
Non-Patent Citations (1)
Title |
---|
京东供应链深度报告;当时明月在77;《https://wenku.baidu.com/view/fb8aea277275a417866fb84ae45c3b3567ecdd97.html》;20170131;第1-42页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109840815A (zh) | 2019-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108182111B (zh) | 任务调度系统、方法和装置 | |
US9015169B2 (en) | Tenant placement in multitenant cloud databases with data sharing | |
CN109840815B (zh) | 用于订单处理的系统及方法 | |
CN110866709A (zh) | 合并订单的方法和装置 | |
CN104901927B (zh) | 业务处理方法和装置 | |
CN110889656B (zh) | 一种仓库规则配置方法和装置 | |
CN111507651A (zh) | 应用于人机混合仓库的订单数据处理方法和装置 | |
CN109447549B (zh) | 一种物料位置确定的方法以及相关装置 | |
CN110473036A (zh) | 一种生成订单号的方法和装置 | |
CN113191713A (zh) | 仓库缺货转仓方法、装置、设备及存储介质 | |
CN110288276B (zh) | 用于生成信息的方法和装置 | |
CN109934427B (zh) | 生成物品分配方案的方法和装置 | |
CN113128821A (zh) | 确定任务的方法和装置 | |
CN110689293B (zh) | 一种物品出库的处理方法和装置 | |
CN111861298A (zh) | 一种订单取消的方法和装置 | |
CN106850707A (zh) | 物料批量上传的方法、装置及系统 | |
CN111695841A (zh) | 分配货物方法、装置、设备和计算机可读介质 | |
CN115170026A (zh) | 一种任务处理的方法和装置 | |
CN111260271A (zh) | 用于缩短门店订单拣货时长的方法和装置 | |
CN111580952A (zh) | 将多任务集合分配至缓存道的方法和装置 | |
CN110659916A (zh) | 一种订单金额的拆分方法和装置 | |
CN113822516A (zh) | 一种配运方的匹配方法及装置 | |
CN114723369A (zh) | 动态调配物品的方法、装置、电子设备及存储介质 | |
KR20220168912A (ko) | 배송기사를 배정하는 물류관제시스템 및 배송기사를 배정하는 방법 | |
CN110490501B (zh) | 一种运力状态管理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |