一种在线离线单据处理系统和方法与流程

文档序号:22238163发布日期:2020-09-15 19:48阅读:244来源:国知局
一种在线离线单据处理系统和方法与流程

本发明涉及单据处理领域,尤其是涉及一种在线离线单据处理系统和方法。



背景技术:

生鲜市场上的各类商品货物多以称重形式出售,而且生鲜市场的客流时间段比较集中,主要出现在每天的早中晚饭之前,高峰期整个生鲜市场会非常热闹,生鲜市场上的各摊主也主要靠高峰期赚取收益,这就要求各摊主要快速完成一单生意的称重和收银等操作,在特定的时间内完成尽可能多的订单。

目前大部分生鲜市场仍然采用将称重与收银单独分开的形式,称重完成后再通过其他方式进行付款,这无疑大大增加了称重收银这一过程的时间,降低交易效率。虽然目前市面上有很多称重收银一体秤,可以实现称重收银一体化,但是这些都无法适用于生鲜市场的特殊场景,主要是由于其打单完成后的单据处理系统没有考虑生鲜市场快节奏、单次称重、人流量大且网络环境差等特点。

目前市面上的称重收银秤主要包括在线模式和离线模式。在线模式主要依赖服务端,所有数据都从服务端实时获取,销售上传单据成功后才能打单,如果网络中断或者弱网情况下会造成无法打单或者打单很慢的情况,同时因为所有业务需求都经过服务端,服务器响应需要时间,所以会降低操作效率。离线模式其实就是单机版,所有数据保存在本地数据库,一方面,离线的数据无法满足连锁店的管理需要,导致对账难度加大;另一方面,本地的数据一旦丢失将不可追溯,销售数据易被篡改,人为造成的经济风险。

生鲜市场高峰期人流量大,加上生鲜市场的地址、建筑结构等各种因素影响,很容易出现网络不好的情况,同时生鲜市场上很多东西称重完后就拿去处理,不可能再次称重,此时若第一次称重完成后生成的单据因为网络连接失败丢失,就无法再进行交易,给顾客和摊主都造成不必要的损失和麻烦。

因此需要设计一种适用于生鲜市场的单据处理方法和系统。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种在线离线单据处理系统和方法,提供单据存储、上传和激活的功能,具有提高单据处理效率和系统可靠性等优点,并解决在线模式网络依赖性问题和离线对账难度和数据篡改问题。

本发明的目的可以通过以下技术方案来实现:

一种在线离线单据处理系统,包括缓冲池以及分别与缓冲池连接的服务端和客户端,所述的服务端设置服务端调节因子m,所述的客户端设置客户端调节因子n和本地数据库,所述的缓冲池与本地数据库连接,所述的服务端调节因子m用于调节缓冲池向服务端上传单据的长度和速率,所述的客户端调节因子n用于调节本地数据库向缓冲池传送单据的长度和速率,所述的本地数据库用于存储打单结算时生成的单据;

打单结算生成单据后,首先将单据插入本地数据库,然后在客户端调节因子n的调节下将单据传送至缓冲池,最后在服务端调节因子m的调节下将单据上传至服务端,所述的客户端调节因子n和服务端调节因子m根据网络状况、服务端负载以及相互之间的数值大小关系,配合调节缓冲池中单据数量。

进一步地,所述的本地数据库包括主表和细表,用于储存销售单据,所述的主表内容包括单号、销售时间、金额、优惠值、优惠类型、上传状态、单据状态、操作员名称、门店名称、支付方式、银行类型和交易id,所述的细表内容包括商品名称、商品单价、商品会员价、优惠值、优惠类型、商品主辅单位和单据号。

进一步优选地,所述的细表为list类型。

进一步优选地,所述的单据状态包括支付正常单、异常单、交易关闭单、退单审核和退单成功。

支付正常单:客户端在发起支付请求后,服务端返回了该单支付成功,客户端就会把该单的单据状态修改为支付正常单。

异常单据:因为支付过程中出现丢包或者请求网络超时等原因,客户端没有获取到该单明确的支付状态,就会把该单的单据状态修改异常单。

交易关闭单:异常单是本地临时储存的状态,但服务端已经接收到了支付请求,所以这单在服务端一定有一个明确的支付状态,客户端可以通过异常单的单号去请求服务端,如果服务端明确返回该单支付失败,这时客户端就会把该单的单据状态修改为交易关闭单。

退单审核:一个已支付的正常单是允许客户退单的,客户端发起退单申请,服务端接受到后会返回申请成功,这时客户端就会把该单的单据状态修改为退单审核。

退单成功:退单审核中的单据需要有权限的人去审核,然后更新服务端该单的状态,客户端再去同步这个状态,如果拒绝退单,同步后则会变回正常单;如果通过,则该单的单据状态就会修改为退单成功。

进一步地,所述的客户端调节因子n根据本地打单时间、本地网络状况和服务端调节因子m的大小,调节传送至缓冲池单据的长度和速率,所述的服务端调节因子m根据服务端负载的大小,调节上传至服务端单据的长度和速率。

更进一步地,所述的客户端调节因子n的初始值为5,调节范围为0-10,所述的服务端调节因子m的初始值为5,调节范围为0-10。

更进一步地,所述的客户端监听网络变化,当网络断开时切换为离线模式,在离线模式下,所述的客户端调节因子n的值为0,从本地数据库传送至缓冲池单据的长度和速率为0,当网络恢复时切换为在线模式,此时所述的客户端调节因子n根据网络状况增大数值,将本地数据库中的单据传送至缓冲池中。

一种如所述的在线离线单据处理系统处理单据的方法,包括以下步骤:

客户端步骤:

s11:打单结算生成单据,并存储至本地数据库中;

s12:初始化客户端调节因子n的值为5,并根据本地网络状况和服务端调节因子m的大小调节客户端调节因子n的值;

s13:根据客户端调节因子n的大小将单据传送至缓冲池;

s14:根据返回的支付结果和退单指令同步本地数据库中的单据状态,并将上传成功的单据在缓冲池中清除;

服务端步骤:

s21:初始化服务端调节因子m的值,接收缓冲池中的单据;

s22:读取单据中的金额信息,发送支付请求;

s23:将支付结果返回至客户端;

s24:根据服务端负载情况服务端调节因子m的值,并返回步骤s21。

进一步地,所述的步骤s14中根据返回的支付结果同步本地数据库中的单据状态具体包括:

当返回的支付结果为支付成功时执行以下步骤:

s1411:修改单据状态为支付正常单;

当返回的支付结果为空时执行以下步骤:

s1421:修改单据状态为异常单;

s1422:将异常单临时存储于本地数据库;

s1423:通过异常单的单号请求服务端,直至获取支付结果;

s1424:若支付结果为支付失败,则修改单据状态为交易关闭单,并执行步骤s1425,否则执行步骤s1411;

s1425:将交易关闭单存储于本地数据库,并等待激活指令,若接收到激活指令,则执行步骤s13。

单据激活针对的是交易关闭单。在生鲜市场上,很多东西称重完后就拿去处理,不可能再次称重了,本方法中的单据激活可以解决这一问题,因为交易关闭单中保留了该单支付的所有信息,因此只要发起激活,就可以直接进入支付通道,无需再次称重。

进一步地,所述的步骤s14中根据退单指令同步本地数据库中的单据状态具体包括:

当客户端接收到退单指令时,执行以下步骤:

s1431:查询该单据状态是否为支付正常单,若是,则执行步骤s1432,否则结束本步骤;

s1432:将单据和退单请求发送至服务端,并接收服务端发送的申请结果,若申请成功,则修改单据状态为退单审核,并执行步骤s1433,否则结束本步骤;

s1433:将单据发送至服务端,请求退单审核结果,若审核结果为同意,则修改单据状态为退单成功,否则执行步骤s1411。

与现有技术相比,本发明具有以下优点:

一种在线离线单据处理方法

1)本发明采用离线在线混合方法,设有调节因子和本地缓冲池,进行单据存储、上传和激活等,并且离线在线可以动态切换,解决了在线模式网络依赖性问题和离线对账难度和数据篡改问题,提高单据处理效率,确保单据不丢失并减轻服务端压力,最大限度减少网络情况对用户的影响;

2)本发明通过设置单据先生成机制,在打单结算时,首先将单据插入本地数据库,预防在结算过程中出现意外,如停电、系统崩溃等而造成的丢单,提高系统稳定性和可靠性;

3)本发明通过设置多种单据状态,并能够进行不同单据状态间的转换和修改,对于交易关闭单仍然保存在本地数据库,提供单据激活的功能,适应在生鲜市场上,很多东西称重完后就拿去处理不可能再次称重的情况。

附图说明

图1为本发明系统的结构示意图;

图2为本发明方法中客户端步骤的流程示意图;

图3为本发明系统的数据处理流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

实施例

如图1所示,本发明提供一种在线离线单据处理系统,包括缓冲池以及分别与缓冲池连接的服务端和客户端,服务端设置服务端调节因子m,客户端设置客户端调节因子n和本地数据库,缓冲池与本地数据库连接,服务端调节因子m用于调节缓冲池向服务端上传单据的长度和速率,客户端调节因子n用于调节本地数据库向缓冲池传送单据的长度和速率,本地数据库用于存储打单结算时生成的单据;

打单结算生成单据后,首先将单据插入本地数据库,然后在客户端调节因子n的调节下将单据传送至缓冲池,最后在服务端调节因子m的调节下将单据上传至服务端,客户端调节因子n和服务端调节因子m根据网络状况、服务端负载以及相互之间的数值大小关系,配合调节缓冲池中单据数量。

客户端调节因子n:调节客户端上传单据的长度和速率,其受到服务端负载情况、单据平均上传时间、本地缓冲池中单据数量、本地打单时间、本地网络等等的影响。

服务端调节因子m:调节客户端上传单据的长度和速率,其受到服务端负载情况影响。

本地缓冲池:用于储存待上传的单据,缓冲池内的单据数量受到客户端调节因子n的直接影响,客户端调节因子n大,则本地缓冲内的单据数量就越多,反之就少。

其中,客户端调节因子n的初始值为5,调节范围为0-10,其根据本地打单时间、本地网络状况和服务端调节因子m的大小,调节传送至缓冲池单据的长度和速率,服务端调节因子m的初始值为5,调节范围为0-10,其根据服务端负载的大小,调节上传至服务端单据的长度和速率。

客户端通过监听网络变化,利用客户端调节因子n和服务端调节因子m实现离线、在线模式的切换,具体为:当网络断开时切换为离线模式,在离线模式下,客户端调节因子n的值为0,从本地数据库传送至缓冲池单据的数量为0,当网络恢复时切换为在线模式,此时客户端调节因子n根据网络状况增大数值,将本地数据库中的单据传送至缓冲池中。

本系统的单据上传和其他系统的区别主要在于单据先生成机制和内部调节机制。

单据先生成机制:在打单结算时,首先将单据插入本地数据库,主要是预防在结算过程中出现意外,如停电、系统崩溃等而造成的丢单。

内部调节机制:系统初始化时,客户端调节因子n初始值为5,服务端调节因子m初始值为5,缓冲池的单据数量为20。本地网络良好时,上传时间短,这时客户端调节因子n就会慢慢变大,缓冲池的单据数量也随着变多。此时服务端负载也会增大,服务端调节因子m就会变小,客户端通过接口请求接收到这个信息后,客户端调节因子n就会开始变小,缓冲池的数量也就减少了,以此实现内部的自动调节。这时如果服务端的调节因子m还在变小,当小于设定阈值时,可以给服务管理员发通知提示。

本地数据库包括主表和细表,用于储存销售单据,主表内容包括单号、销售时间、金额、优惠值、优惠类型、上传状态、单据状态、操作员名称、门店名称、支付方式、银行类型和交易id,细表为list类型,其内容包括商品名称、商品单价、商品会员价、优惠值、优惠类型、商品主辅单位和单据号,其中单据号要确保唯一性,本实施例中采用“操作员id+年月日时分秒毫秒+当天的数据库长度”来表示。

其中,单据状态包括支付正常单、异常单、交易关闭单、退单审核和退单成功,各单据状态说明如下:

支付正常单:客户端在发起支付请求后,服务端返回了该单支付成功,客户端就会把该单的单据状态修改为支付正常单。

异常单据:因为支付过程中出现丢包或者请求网络超时等原因,客户端没有获取到该单明确的支付状态,就会把该单的单据状态修改异常单。

交易关闭单:异常单是本地临时储存的状态,但服务端已经接收到了支付请求,所以这单在服务端一定有一个明确的支付状态,客户端可以通过异常单的单号去请求服务端,如果服务端明确返回该单支付失败,这时客户端就会把该单的单据状态修改为交易关闭单。

退单审核:一个已支付的正常单是允许客户退单的,客户端发起退单申请,服务端接受到后会返回申请成功,这时客户端就会把该单的单据状态修改为退单审核。

退单成功:退单审核中的单据需要有权限的人去审核,然后更新服务端该单的状态,客户端再去同步这个状态,如果拒绝退单,同步后则会变回正常单;如果通过,则该单的单据状态就会修改为退单成功。

如图3所示,本发明还提供一种在线离线单据处理的方法,包括客户端步骤和服务端步骤,客户端结算的时候会把生成的单据先储存到本地数据库中,这时的单据都是未上传的,所以数据库中会给这类单据标注status的值为0,代表单据状态未上传,而这些单据会根据生成的时间顺序排列,并根据本地调节因子n的大小,分批加入到缓冲池中,等待上传。

服务端在收到上传的单据后会返回每个单据的唯一uuid和对应的上传状态,客户端接收到uuid后会去本地数据库中查到对应的单据,然后更改status的值为1,代表已上传,此时缓冲池中对应的单据将会被清除。

具体地,服务端执行的步骤包括:

s21:初始化服务端调节因子m的值,接收缓冲池中的单据;

s22:读取单据中的金额信息,发送支付请求;

s23:将支付结果返回至客户端;

s24:根据服务端负载情况服务端调节因子m的值,并返回步骤s21。

如图2所示,客户端执行的步骤包括:

s11:打单结算生成单据,并存储至本地数据库中;

s12:初始化客户端调节因子n的值为5,并根据本地网络状况和服务端调节因子m的大小调节客户端调节因子n的值;

s13:根据客户端调节因子n的大小将单据传送至缓冲池;

s14:根据返回的支付结果和退单指令同步本地数据库中的单据状态,并将上传成功的单据在缓冲池中清除。

其中,步骤s14中根据返回的支付结果同步本地数据库中的单据状态具体包括:

当返回的支付结果为支付成功时执行以下步骤:

s1411:修改单据状态为支付正常单;

当返回的支付结果为空时执行以下步骤:

s1421:修改单据状态为异常单;

s1422:将异常单临时存储于本地数据库;

s1423:通过异常单的单号请求服务端,直至获取支付结果;

s1424:若支付结果为支付失败,则修改单据状态为交易关闭单,并执行步骤s1425,否则执行步骤s1411;

s1425:将交易关闭单存储于本地数据库,并等待激活指令,若接收到激活指令,则执行步骤s13。单据激活针对的是交易关闭单。在生鲜市场上,很多东西称重完后就拿去处理,不可能再次称重了,本方法中的单据激活可以解决这一问题,因为交易关闭单中保留了该单支付的所有信息,因此只要发起激活,就可以直接进入支付通道,无需再次称重。

步骤s14中根据退单指令同步本地数据库中的单据状态具体包括:

当客户端接收到退单指令时,执行以下步骤:

s1431:查询该单据状态是否为支付正常单,若是,则执行步骤s1432,否则结束本步骤;

s1432:将单据和退单请求发送至服务端,并接收服务端发送的申请结果,若申请成功,则修改单据状态为退单审核,并执行步骤s1433,否则结束本步骤;

s1433:将单据发送至服务端,请求退单审核结果,若审核结果为同意,则修改单据状态为退单成功,否则执行步骤s1411。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1