CN117635081B - 数据处理方法、装置、设备及存储介质 - Google Patents

数据处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117635081B
CN117635081B CN202410104608.2A CN202410104608A CN117635081B CN 117635081 B CN117635081 B CN 117635081B CN 202410104608 A CN202410104608 A CN 202410104608A CN 117635081 B CN117635081 B CN 117635081B
Authority
CN
China
Prior art keywords
index information
bill
document
index
documents
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
Application number
CN202410104608.2A
Other languages
English (en)
Other versions
CN117635081A (zh
Inventor
王玮犀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202410104608.2A priority Critical patent/CN117635081B/zh
Publication of CN117635081A publication Critical patent/CN117635081A/zh
Application granted granted Critical
Publication of CN117635081B publication Critical patent/CN117635081B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Strategic Management (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Resources & Organizations (AREA)
  • General Engineering & Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开一种数据处理方法、装置、设备及存储介质,方法包括:根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据;确定N个单据之间的依赖关系以及N个单据对应的M个索引信息;其中,一个索引信息用于索引至少一个单据;任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据;根据N个单据之间的依赖关系和N个单据对应的M个索引信息,确定N个单据的排列顺序;其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续;在业务终端中,按照N个单据的排列顺序显示N个单据;可提升单据处理效率。

Description

数据处理方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
随着计算机技术的发展以及办公自动化(Office Automation,OA)应用的普及,现有OA应用通常能够实现审批流程的智能网络化,即现有OA应用通常能够支持对象提交单据以申请事务审批,支持对象对提交的单据进行审批,以及支持对象对单据进行查询等功能;但现有OA应用所实现的审批查询功能中,通常按照单据的提交时间的先后顺序对查询到的单据进行排序显示,不利于对象进行单据审批,导致对单据的处理效率低。
发明内容
本申请实施例提供了一种数据处理方法、装置、设备及存储介质,可提升单据处理效率。
一方面,本申请实施例提供了一种数据处理方法,方法包括:
根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据,N为大于1的正整数;
确定所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息;其中,一个索引信息用于索引至少一个单据,M为正整数;任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据;
根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序;其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续;
在所述业务终端中,按照所述N个单据的排列顺序显示所述N个单据。
一方面,本申请实施例提供了一种数据处理装置,装置包括:
处理单元,用于根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据,N为大于1的正整数;
所述处理单元,还用于确定所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息;其中,一个索引信息用于索引至少一个单据,M为正整数;任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据;
所述处理单元,还用于根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序;其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续;
输出单元,用于在所述业务终端中,按照所述N个单据的排列顺序显示所述N个单据。
一方面,本申请实施例提供了一种计算机设备,计算机设备包括输入接口和输出接口,计算机设备还包括:
处理器以及计算机可读存储介质;
计算机可读存储介质,用于存储计算机程序;
处理器,用于运行计算机程序,实现上述数据处理方法。
一方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序适于由处理器加载并执行上述数据处理方法。
一方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括计算机程序,计算机程序适于由处理器加载并执行上述数据处理方法。
本申请实施例中,在根据业务终端的查询请求,从单据数据库中召回多个单据后,可以根据召回的单据之间的依赖关系和召回的单据对应的索引信息,确定召回的单据的排列顺序,在业务终端中,按照召回的单据的排列顺序显示召回的单据时,使得召回的单据中任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续,便于对象进行单据查看与管理,便于对象在处理(如审批)某一单据时,可以直接参考位于该单据之前所依赖的单据,而无需对象人为查找该单据依赖的单据来实现单据处理,从而提升单据处理效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理系统的结构示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3是本申请实施例提供的另一种数据处理方法的流程示意图;
图4a是本申请实施例提供的一种基于协程池进行单据查询的示意图;
图4b是本申请实施例提供的一种召回的单据的关联信息的示意图;
图4c是本申请实施例提供的一种建立的单据的邻接表和入度数组的示意图;
图4d是本申请实施例提供的一种构建完成的单据的邻接表和入度数组的示意图;
图4e是本申请实施例提供的一种构建标识拓扑序列的示意图;
图4f是本申请实施例提供的另一种构建标识拓扑序列的示意图;
图4g是本申请实施例提供的一种建立的索引信息的邻接表和入度数组的示意图;
图4h是本申请实施例提供的一种构建完成的索引信息的邻接表和入度数组的示意图;
图4i是本申请实施例提供的一种构建索引拓扑序列的示意图;
图4j是本申请实施例提供的一种建立映射关系图的示意图;
图4k是本申请实施例提供的一种确定排序结果的示意图;
图4l是本申请实施例提供的一种确定单据的排列顺序的示意图;
图5a是本申请实施例提供的一种申请记录管理页面的示意图;
图5b是本申请实施例提供的一种申请记录页面的示意图;
图5c是本申请实施例提供的一种对类型字段进行筛选的示意图;
图5d是本申请实施例提供的一种对时间字段进行筛选的示意图;
图5e是本申请实施例提供的一种对对象字段进行筛选的示意图;
图5f是本申请实施例提供的一种对状态字段进行筛选的示意图;
图5g是本申请实施例提供的一种召回的单据按序排列的示意图;
图5h是本申请实施例提供的一种导出单据的示意图;
图6a是本申请实施例提供的一种服务器和业务终端协同执行数据处理方法的示意图;
图6b是本申请实施例提供的另一种服务器和业务终端协同执行数据处理方法的示意图;
图7是本申请实施例提供的一种数据处理装置的结构示意图;
图8是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请实施例提供了一种数据处理方案,可以根据业务终端的查询请求,从单据数据库中召回N个单据,并确定N个单据之间的依赖关系以及N个单据对应的M个索引信息;其中,一个索引信息用于索引至少一个单据,任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据,N为大于1的正整数,M为正整数;可以根据N个单据之间的依赖关系和N个单据对应的M个索引信息,确定N个单据的排列顺序,并在业务终端中,按照N个单据的排列顺序显示N个单据;其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续。
上述数据处理方案中所提及的业务终端可以为运行有目标应用的终端设备,该目标应用可以为可以提供事务审批相关功能的应用,例如可以为面向企业的办公自动化(Office Automation,OA)应用;本申请实施例所提及的终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能车载、以及智能可穿戴设备等,本申请实施例对此不作限制。目标应用所提供的事务审批相关功能可以包括但不限于以下功能:支持对象提交单据以申请事务审批,以及支持对象对提交的单据进行审批;举例来说,若对象a需要向对象b进行请假申请,则对象a可以通过其业务终端中的目标应用向对象b提交用于进行请假申请的单据,对象b可以通过其业务终端中的目标应用对对象a提交的该单据进行审批。
通过目标应用提交的单据被存储至单据数据库中,目标应用还支持对象对单据数据库中的单据进行查询;具体的,通过目标应用提交的单据可以基于该单据的索引信息存储至单据数据库中,基于此,在需要从单据数据库中查询该单据时,可以基于该单据的索引信息从单据数据库中索引出该单据,若通过目标应用提交的多个单据的索引信息相同,则基于该相同的索引信息可以索引到该多个单据。单据的索引信息是指:可以用于从单据数据库中索引单据的信息,单据的索引信息可以由目标应用的开发人员根据具体的功能需求进行设定;在一种应用场景中,单据的索引信息可以包括以下至少一个索引字段:类型字段、时间字段、对象字段以及状态字段,其中,类型字段的取值为单据类型,时间字段的取值为单据的提交时间,对象字段的取值为单据的提交对象的对象标识,状态字段的取值为单据的审批状态,其中,提交对象的对象标识是指可以用于唯一标识相应提交对象的信息,例如可以为相应提交对象在目标应用中的对象id(Identity document,身份标识号)、对象名称等等,本申请实施例对此不做限制。
举例来说,若某一个单据的单据类型为单据类型1,该单据的提交时间为提交时间1,该单据的提交对象的对象标识为对象a,该单据的审批状态为审批状态1,若单据的索引信息被设定为只包括时间字段和对象字段,则该单据的索引信息包括以下索引字段的取值:时间字段、对象字段,各个索引字段的取值分别为:提交时间1、对象a;若单据的索引信息被设定为包括类型字段、时间字段、对象字段以及状态字段,则该单据的索引信息包括以下索引字段的取值:类型字段、时间字段、对象字段、状态字段,各个索引字段的取值分别为:单据类型1、提交时间1、对象a、审批状态1;为了便于阐述,本申请实施例后续以单据的索引信息被设定为包括类型字段、时间字段、对象字段以及状态字段为例,基于此,一个单据的索引信息即包括该单据的单据类型,该单据的提交时间,该单据的提交对象的对象标识,该单据的审批状态。
基于上述对单据的索引信息的描述,目标应用具体可以支持对象基于索引信息对应设定的索引字段对单据数据库中的单据进行查询,也就是说,目标应用可以支持对象对索引信息对应设定的各个索引字段的取值进行筛选,以根据对象筛选的索引字段的取值来对单据数据库中的单据进行查询;业务终端的查询请求可以是根据对象在目标应用中对索引字段的筛选操作生成的,业务终端的查询请求可以用于指示相应对象所筛选的索引字段的取值(即可以用于指示相应对象所筛选的筛选条件),基于此,根据业务终端的查询请求,从单据数据库中召回N个单据时,需要对满足相应对象所筛选的筛选条件的单据进行召回。以索引信息对应设定的索引字段包括类型字段、时间字段、对象字段以及状态字段为例,目标应用支持对象对类型字段、时间字段、对象字段以及状态字段中至少一个字段的取值进行筛选,若对象通过目标应用筛选了类型字段下的:单据类型1和单据类型2、对象字段下的对象a和对象b,则根据业务终端的查询请求,从单据数据库中召回N个单据时,需要对索引信息中单据类型为单据类型1或单据类型2,且对象字段为对象a或对象b的单据进行召回。
上述数据处理方案中所提及的N个单据之间的依赖关系可以用于指示:该N个单据中的任一单据所依赖的单据,任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据,以N个单据中的第n个单据为例,第n个单据所依赖的单据包括:在审批该第n个单据时,所需参考的单据,n∈[1,N]。通过目标应用提交的某一单据以及该某一单据所依赖的各个单据被存储至单据数据库的情况下,单据数据库中会存储该某一单据的依赖信息,该某一单据的依赖信息可以用于指示该某一单据所依赖的各个单据;可选的,该某一单据的依赖信息可以存储于该某一单据对应的依赖信息字段中,该某一单据对应的依赖信息字段可以用于存储该某一单据所依赖的各个单据的单据标识,该某一单据对应的依赖信息字段的取值即该某一单据的依赖信息,其中,单据的单据标识是指可以用于唯一标识相应单据的信息,例如可以为单据id、单据编号等等,本申请实施例对此不做限制。
举例来说,若对象a通过其业务终端的目标应用先提交了一个费用报销的单据1,然后又提交了单据1的明细单据(称作单据2),在审批单据1时需参考单据2,因此,单据1依赖于单据2。若通过目标应用提交的某一单据不存在依赖的单据,该某一单据被存储至单据数据库的情况下,在第一种可行的实施方式中,单据数据库中可以不存储该某一单据的依赖信息,在第二种可行的实施方式中,单据数据库中也可以存储该某一单据的依赖信息,但所存储的该某一单据的依赖信息为空,即该某一单据对应的依赖信息字段为空,即指示该某一单据不存在依赖的单据,为了便于阐述,本申请实施例后续以第二种实施方式为例,即该种情况下,单据数据库中的各个单据均具有依赖信息,单据的依赖信息为空时,指示该单据不存在依赖的单据。基于上述可知,上述数据处理方案中所提及的N个单据之间的依赖关系可以基于N个单据的依赖信息确定出。
基于上述对数据处理方案的描述,本申请实施例提供了一种数据处理系统,请参见图1,为本申请实施例提供的一种数据处理系统的结构示意图,该数据处理系统可以包括服务器101以及至少一个业务终端102;其中,本申请实施例所提及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器等,本申请实施例对此不作限制。服务器101与业务终端102之间可以通过有线或无线通信方式进行直接或间接地通信连接,本申请在此不做限制。
上述数据处理方案可以由服务器101执行,也可以由业务终端102执行,也可以由服务器101和业务终端102协同执行;当上述数据处理方案由服务器101和业务终端102协同执行的情况下,例如在一种可行实施方式中,服务器101可以根据业务终端102的查询请求,在单据数据库中进行单据召回处理,得到N个单据;确定N个单据之间的依赖关系以及N个单据对应的M个索引信息;根据N个单据之间的依赖关系和N个单据对应的M个索引信息,确定N个单据的排列顺序,并将该N个单据以及N个单据的排列顺序发送至业务终端102中;业务终端102可以在业务终端102中,按照N个单据的排列顺序显示N个单据。例如在另一种可行实施方式中,可以由业务终端102根据业务终端102的查询请求,在单据数据库中进行单据召回处理,得到N个单据,确定N个单据之间的依赖关系以及N个单据对应的M个索引信息,并将N个单据之间的依赖关系以及N个单据对应的M个索引信息发送至服务器101;服务器101可以根据N个单据之间的依赖关系和N个单据对应的M个索引信息,确定N个单据的排列顺序,并将该N个单据的排列顺序发送至业务终端102中;业务终端102可以在业务终端102中,按照N个单据的排列顺序显示N个单据。
需要特别指出的是,本申请中相关数据(例如单据)收集处理在实例应用时应该严格根据法律法规的要求,获取个人信息主体的知情同意或单独同意,并在法律法规及个人信息主体的授权范围内,开展后续数据使用及处理行为。
基于上述描述,本申请实施例提供了一种数据处理方法,参见图2,为本申请实施例提供的一种数据处理方法的流程示意图;该数据处理方法可以由服务器执行,也可以由业务终端执行,也可以由服务器和业务终端协同执行,本申请实施例以由业务终端执行为例进行阐述,该数据处理方法可包括如下步骤S201-S204:
S201,根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据。
其中,N为大于1的正整数。
在一种可行的实施方式中,业务终端的使用对象(为了便于阐述称为目标对象)可以在业务终端的目标应用中对索引信息对应设定的各个索引字段的取值进行筛选操作,业务终端可以根据目标对象的筛选操作生成查询请求,查询请求可以用于指示目标对象所筛选的索引字段的取值,即可以用于指示目标对象所筛选的筛选条件。业务终端根据查询请求,在单据数据库中进行单据召回处理时,可以对满足目标对象所筛选的筛选条件的单据进行召回,还可以对满足目标对象所筛选的筛选条件的单据所依赖的单据进行召回。以索引信息对应设定的索引字段包括类型字段、时间字段、对象字段以及状态字段为例,若目标对象筛选了类型字段下的:单据类型1和单据类型2、对象字段下的对象a和对象b,则业务终端根据查询请求,在单据数据库中进行单据召回处理时,可以对索引信息中类型字段为单据类型1或单据类型2,且对象字段为对象a或对象b的单据进行召回,若满足筛选条件的单据为:单据1、单据2、单据3以及单据4,且单据1依赖于单据5,单据2依赖于单据3,则还可以将单据5召回。
S202,确定N个单据之间的依赖关系以及N个单据对应的M个索引信息。
其中,N个单据之间的依赖关系可以用于指示:该N个单据中的任一单据所依赖的单据,任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据,以N个单据中的第n个单据为例,第n个单据所依赖的单据包括:在审批该第n个单据时,所需参考的单据,n∈[1,N]。在某一单据存在依赖的单据的情况下,单据数据库中会存储该某一单据的依赖信息,该某一单据的依赖信息可以用于指示该某一单据所依赖的各个单据,基于此,业务终端可以通过从单据数据库中获取该N个单据中各个单据的依赖信息,以确定该N个单据之间的依赖关系;针对该N个单据中的其中一个单据,业务终端可以确定该单据与该单据的依赖信息所指示的单据具有依赖关系,若获取该单据的依赖信息失败或所获取的依赖信息为空,则确定该单据与N个单据中的其他各个单据均不具有依赖关系。
其中,一个索引信息用于索引至少一个单据,M为正整数,以M个索引信息中的第m个索引信息为例,即第m个索引信息用于索引至少一个单据,m∈[1,M]。在一种可行的实施方式中,N个单据对应的M个索引信息可以通过对该N个单据中每个单据的索引信息进行汇总得到;举例来说,若召回的N个单据分别为:单据0、单据1、单据2、单据3、单据4、单据5、单据6、单据7,N个单据的索引信息分别为:索引信息C、索引信息D、索引信息B、索引信息A、索引信息A、索引信息B、索引信息A、索引信息E,则N个单据对应的M个索引信息分别为:索引信息A、索引信息B、索引信息C、索引信息D以及索引信息E。
S203,根据N个单据之间的依赖关系和N个单据对应的M个索引信息,确定N个单据的排列顺序。
其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续。举例来说,若根据业务终端的查询请求从单据数据库中召回N个单据,N=8,若召回的N个单据分别为:单据0、单据1、单据2、单据3、单据4、单据5、单据6、单据7,N个单据的索引信息分别为:索引信息C、索引信息D、索引信息B、索引信息A、索引信息A、索引信息B、索引信息A、索引信息E,其中,该N个单据中,单据1所依赖的单据为单据6、单据2所依赖的单据为单据5、单据3所依赖的单据为单据6、单据4所依赖的单据为单据3和单据6;由于单据1所依赖的单据为单据6,因此单据1的排列顺序应该位于单据6的排列顺序之后,由于单据3所依赖的单据为单据6,因此单据3的排列顺序应该位于单据6的排列顺序之后,由于单据4所依赖的单据为单据3和单据6,因此单据4的排列顺序应该位于单据3和单据6的排列顺序之后,由于单据2所依赖的单据为单据5,因此单据2的排列顺序应该位于单据5的排列顺序之后;并且,由于单据3、单据4以及单据6的索引信息均为索引信息A,因此单据3、单据4以及单据6的排列顺序还应该连续,由于单据2以及单据5的索引信息均为索引信息B,因此单据2以及单据5的排列顺序还应该连续,即实现了按照索引信息归类显示的效果。
S204,在业务终端中,按照N个单据的排列顺序显示N个单据。
在一种可行的实施方式中,在N为1的情况下,即业务终端根据业务终端的查询请求从单据数据库中召回1个单据的情况下,可以直接在业务终端中显示该1个单据;在N为0的情况下,即业务终端根据业务终端的查询请求未从单据数据库中召回单据的情况下,可以在业务终端中显示用于指示未查询到单据的提示信息;可选的,该提示信息的信息格式和信息内容可以根据具体业务需求进行设定,例如信息格式可以为文本格式、图像格式、视频格式、图文格式等等,例如信息内容可以为“未查找到单据”,本申请实施例对此不做限制。
本申请实施例中,在根据业务终端的查询请求,从单据数据库中召回多个单据后,可以根据召回的单据之间的依赖关系和召回的单据对应的索引信息,确定召回的单据的排列顺序,在业务终端中,按照召回的单据的排列顺序显示召回的单据时,使得召回的单据中任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续,便于对象进行单据查看与管理,便于对象在处理(如审批)某一单据时,可以直接参考位于该单据之前所依赖的单据,而无需对象人为查找该单据依赖的单据来实现单据处理,从而提升单据处理效率。
基于上述描述,本申请实施例提供了另一种数据处理方法,参见图3,为本申请实施例提供的另一种数据处理方法的流程示意图;该数据处理方法可以由服务器执行,也可以由业务终端执行,也可以由服务器和业务终端协同执行,本申请实施例以由业务终端执行为例进行阐述,该数据处理方法可包括如下步骤S301-S306:
S301,根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据。
其中,N为大于1的正整数;步骤S301的相关过程与上述步骤S201的相关过程类似。
在一种可行的实施方式中,查询请求携带单据索引条件,单据索引条件可以用于指示:需查询的单据所需具备的条件,单据索引条件还可以用于指示目标对象所筛选的筛选条件;业务终端根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据的过程,可以执行如下步骤:从业务终端的查询请求中获取单据索引条件,并根据单据数据库中的各个单据的索引信息,在单据数据库中查找满足单据索引条件的各个索引信息所对应的单据,得到候选单据集;在单据数据库中,查找被候选单据集中的至少一个单据所依赖的其他单据,得到依赖单据集;整合候选单据集和依赖单据集,得到N个单据。其中,业务终端在单据数据库中,查找被候选单据集中的至少一个单据所依赖的其他单据,得到依赖单据集时,可以获取候选单据集中各个单据的依赖信息,并根据候选单据集中各个单据的依赖信息,在单据数据库中查找相应单据所依赖的其他单据。
举例来说,以索引信息对应设定的索引字段包括类型字段、时间字段、对象字段以及状态字段为例,若目标对象筛选了类型字段下的:单据类型1和单据类型2、对象字段下的对象a和对象b,则索引信息中类型字段为单据类型1或单据类型2,且对象字段为对象a或对象b的索引信息为满足单据索引条件的索引信息,则业务终端可以在单据数据库中查找满足单据索引条件的各个索引信息所对应的单据,得到候选单据集。若候选单据集包括:单据1、单据2、单据3以及单据4,单据1依赖于单据5,单据2依赖于单据3,单据3、单据4以及单据5不存在依赖的单据,则依赖单据集可以包括单据5;业务终端可以对候选单据集和依赖单据集进行整合,得到N个单据,具体为:单据1、单据2、单据3、单据4以及单据5。
在一种可行的实施方式中,任一索引信息和单据索引条件均可以包括以下至少一个索引字段:类型字段、时间字段、对象字段以及状态字段;其中,类型字段的取值为单据类型,时间字段的取值为单据的提交时间,对象字段的取值为单据的提交对象的对象标识,状态字段的取值为单据的审批状态;其中,当任一索引信息中的各个索引字段的取值,分别与相应索引字段在单据索引条件中的取值相匹配时,该任一索引信息被判定满足单据索引条件。其中,当任一索引信息中的任一索引字段的取值,包含于相应索引字段在单据索引条件中的取值的情况下,可以确定对应索引字段相匹配;以类型字段为例,若单据索引条件中类型字段的取值包括:单据类型1、单据类型2,当某一索引信息中类型字段的取值为单据类型1或单据类型2时,确定该索引信息中索引字段的取值与单据索引条件中类型字段的取值相匹配。在一种可选的实施方式中,针对于时间字段的筛选,目标应用支持对所需查询的开始时间和结束时间进行筛选,即目标对象可以在业务终端的目标应用中对所需查询的开始时间和结束时间进行筛选,单据索引条件中时间字段的取值也可以包括筛选的开始时间和筛选的结束时间;当某一索引信息中的时间字段的取值,包含于筛选的开始时间至筛选的结束时间之间的筛选时间段的情况下,可以确定该索引信息和单据索引条件匹配。以任一索引信息和单据索引条件均包括以下索引字段为例:类型字段、时间字段、对象字段以及状态字段,若目标对象对该4个索引字段中的部分索引字段进行了筛选,则业务终端在生成单据索引条件时,可以根据目标对象所筛选的索引字段的取值,确定单据索引条件中相应索引字段的取值,对于目标对象未筛选的索引字段,可以对单据索引条件中相应索引字段的取值进行填充处理;一种示例性的填充方式中,可以采用特殊标识进行填充,单据索引条件中填充有特殊标识的索引字段,被确定与索引信息中相应索引字段的任意取值匹配;另一种示例性的填充方式中,可以采用未筛选的索引字段所支持筛选的各个取值进行填充,即此时认为目标对象对该索引字段下的取值进行了“全选”操作。
在一种可行的实施方式中,单据索引条件中的任一索引字段具有至少一个取值;业务终端根据单据数据库中的各个单据的索引信息,在单据数据库中查找满足单据索引条件的各个索引信息所对应的单据,得到候选单据集的过程,可以执行如下操作:根据单据索引条件中的各个索引字段的取值,构建至少一个查询索引;一个查询索引包括每个索引字段中的一个取值;将构建出的各个查询索引封装至不同的查询任务中;一个查询任务中包括一个查询索引;并发地调用各个查询任务,在单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据;汇总各个查询任务所查询出的单据,得到候选单据集。业务终端并发地调用各个查询任务,在单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据的过程中,可以将各个查询任务添加至协程池中;通过协程池并发地调用各个查询任务,基于分布式锁在单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据;请参见图4a,为本申请实施例提供的一种基于协程池进行单据查询的示意图,该图4a对应于x个查询索引以及x个查询任务。当单据索引条件中时间字段包含筛选的开始时间和筛选的结束时间的情况下,一个查询索引包括时间字段中的一个取值可以为从筛选的开始时间至筛选的结束时间之间的筛选时间段内的一个时间点,可选的,开始时间、结束时间、提交时间等与时间相关的数据可以由时间戳表示。
在一种可行的实施方式中,业务终端根据查询请求,在单据数据库中进行单据召回处理的过程中,若单据数据库中存在数据更新,则可以基于数据更新后的单据数据库重新进行单据召回,以保证所召回单据的准确性。可以知道的是,以上只是对于单据召回处理过程的示例性描述,对于单据召回处理过程也可以采用其他现有的召回算法进行召回,只要能召回满足目标对象的筛选条件的单据,以及召回满足目标对象的筛选条件的单据所依赖的单据即可。
在一种可行的实施方式中,查询请求还可以携带身份信息,身份信息可以包括目标对象的对象标识、目标对象所在企业的企业标识等等;业务终端在根据查询请求在单据数据库中进行单据召回处理之前,还可以根据查询请求所携带的身份信息对目标对象进行权限验证,在验证目标对象具有对目标对象所在企业对应的单据的查询权限的情况下,才根据查询请求在单据数据库中进行单据召回处理,并且所查询的单据数据库为目标对象所在企业对应的单据数据库,其中,目标对象所具有的查询权限可以根据具体需求进行设定。
S302,确定N个单据之间的依赖关系以及N个单据对应的M个索引信息。
其中,一个索引信息用于索引至少一个单据,M为正整数;任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据;步骤S302的相关过程和上述步骤S202的相关过程类似,在此不做赘述。
S303,根据N个单据之间的依赖关系,采用N个单据的单据标识构建标识拓扑序列。
其中,在标识拓扑序列中,任一单据的单据标识位于相应单据所依赖的各个单据的单据标识之后;可选的,任一单据的单据标识可以在单据数据库中存储于相应单据对应的单据标识字段中。
在一种可行的实施方式中,业务终端根据N个单据之间的依赖关系,采用N个单据的单据标识构建标识拓扑序列的过程,可以包括如下步骤:根据N个单据之间的依赖关系以及N个单据的单据标识,构建每个单据的邻接表以及每个单据的入度数组;其中,任一单据的邻接表用于存储:依赖于相应单据的各个单据的单据标识,任一单据的入度数组用于存储相应单据的入度,任一单据的入度用于指示相应单据所依赖的单据的数量;根据每个单据的邻接表以及每个单据的入度数组,采用N个单据的单据标识构建标识拓扑序列。以N个单据中的第n个单据为例,第n个单据的邻接表用于存储:依赖于第n个单据的各个单据的单据标识,第n个单据的入度数组用于存储第n个单据的入度,第n个单据的入度用于指示第n个单据所依赖的单据的数量。
其中,根据N个单据之间的依赖关系以及N个单据的单据标识,构建每个单据的邻接表以及每个单据的入度数组的过程,即根据N个单据之间的依赖关系以及N个单据的单据标识建图的过程,图中的节点可以指示单据标识(或单据),节点的入度代表一种指向性,即表示节点被指向的情况。在一种可行的实施方式中,业务终端根据N个单据之间的依赖关系以及N个单据的单据标识,构建每个单据的邻接表以及每个单据的入度数组的过程,可以包括如下步骤:建立N个单据中每个单据的邻接表以及每个单据的入度数组;其中,建立的任一邻接表为空,建立的任一入度数组所存储入度为无效值;遍历N个单据的单据标识,将当前遍历的单据标识所指示的单据作为第一单据;若根据N个单据之间的依赖关系,确定N个单据中存在第一单据所依赖的第二单据,则将第一单据的单据标识添加至各个第二单据的邻接表中,将第二单据的数量作为第一单据的入度,添加至第一单据的入度数组中,并继续遍历N个单据的单据标识;若根据N个单据之间的依赖关系,确定N个单据中未存在第一单据所依赖的第二单据,则继续遍历N个单据的单据标识;在N个单据的单据标识均被遍历后,确定各个单据的邻接表和各个单据的入度数组均构建完成。其中,第二单据是指第一单据所依赖的单据,在建立N个单据中每个单据的入度数组时,建立的任一入度数组所存储入度为无效值,该无效值可以根据具体需求进行设定,例如可以将无效值设定为0、设定为任意负数等等,本申请实施例对此不做限制,为了便于阐述,本申请实施例后续以无效值被设定为0为例。
举例来说,若召回的N个单据分别为:单据0、单据1、单据2、单据3、单据4、单据5、单据6、单据7,该召回的N个单据的关联信息可以如图4b所示,其中,该召回的N个单据的关联信息可以包括:存储于单据标识字段中的单据标识,存储于索引总字段中的索引信息,存储于依赖信息字段中的依赖信息,单据标识字段可以用Record表示,索引总字段可以用IndexField表示,依赖信息字段可以用BeforeRec表示,索引总字段可以包括索引信息对应设定的各个索引字段,各个索引字段的取值构成索引信息,以索引信息对应设定的索引字段包括类型字段(可以用RecordType表示)、时间字段(可以用RecordTime表示)、对象字段(可以用RecordApplicant表示)以及状态字段(可以用RecordStatus表示)为例,则索引总字段IndexField包括以上4个索引字段。由图4b可知,召回的N个单据的单据标识分别为:0、1、2、3、4、5、6、7,N个单据的索引信息分别为:索引信息C、索引信息D、索引信息B、索引信息A、索引信息A、索引信息B、索引信息A、索引信息E,为了便于阐述,在本申请实施例将索引信息A、索引信息B、索引信息C、索引信息D、索引信息E分别用:A、B、C、D、E指代,该N个单据中,单据1所依赖的单据为单据6、单据2所依赖的单据为单据5、单据3所依赖的单据为单据6、单据4所依赖的单据为单据3和单据6。请参见图4c,为本申请实施例提供的一种建立的单据的邻接表和入度数组的示意图,其中,入度数组可以用Indegree1表示,一个为空的邻接表可以如401标记所示,一个所存储入度为无效值的入度数组可以如402标记所示。
业务终端可以遍历N个单据的单据标识,若当前遍历为第一次遍历,且第一次遍历的单据标识为0,0所指示的第一单据(单据0)不存在依赖的第二单据,则继续遍历N个单据的单据标识;若当前遍历为第二次遍历,且第二次遍历的单据标识为1,1所指示的第一单据(单据1)存在依赖的第二单据(单据6),则将第一单据的单据标识(1)添加至各个第二单据(单据6)的邻接表中,将第二单据的数量(1)作为第一单据(单据1)的入度,添加至第一单据(单据1)的入度数组中,并继续遍历N个单据的单据标识;若当前遍历为第三次遍历,且第三次遍历的单据标识为2,2所指示的第一单据(单据2)存在依赖的第二单据(单据5),则将第一单据的单据标识(2)添加至各个第二单据(单据5)的邻接表中,将第二单据的数量(1)作为第一单据(单据2)的入度,添加至第一单据(单据2)的入度数组中,并继续遍历N个单据的单据标识;直至遍历N个单据的单据标识结束,在N个单据的单据标识均被遍历后,确定各个单据的邻接表和各个单据的入度数组均构建完成,构建完成的单据的邻接表和入度数组可以参见图4d。
在一种可行的实施方式中,业务终端根据每个单据的邻接表以及每个单据的入度数组,采用N个单据的单据标识构建标识拓扑序列的过程,可以执行如下步骤:建立空的标识拓扑序列以及空的第一队列;每基于每个单据的入度数组所存储的入度,检测到N个单据的单据标识中存在目标单据标识时,将存在的目标单据标识入队至第一队列中;其中,目标单据标识满足如下条件:指示的单据的入度为无效值;若第一队列不为空,则持续地将第一队列中处于队头位置的单据标识进行出队,每执行一次出队操作,则将当前出队的单据标识添加至标识拓扑序列中,并降低当前单据的邻接表所指示的各个单据的入度数组所存储的入度,当前单据是指当前出队的单据标识所指示的单据;若第一队列为空,且N个单据的单据标识均被执行过入队操作,则确定标识拓扑序列构建完成。也就是说,业务终端可以将N个单据的单据标识中,入度为无效值的单据的单据标识(即目标单据标识)添加至第一队列中;在第一队列不为空的情况下,将第一队列中处于队头位置的单据标识进行出队,并将当前出队的单据标识添加至标识拓扑序列中,以及降低当前单据的邻接表所指示的各个单据的入度数组所存储的入度;在降低相应入度数组所存储的入度之后,若N个单据的单据标识中新增了入度为无效值的单据的单据标识,则将其添加至第一队列中,直至第一队列为空;可选的,可以通过遍历当前单据的邻接表所存储的单据标识,确定当前单据的邻接表所指示的各个单据,以降低当前单据的邻接表所指示的各个单据的入度数组所存储的入度。
以图4d所示的邻接表以及入度数组为例,请参见图4e,为本申请实施例提供的一种构建标识拓扑序列的示意图;业务终端建立空的标识拓扑序列以及空的第一队列之后,可以将N个单据的单据标识中,入度为无效值的单据的单据标识(即目标单据标识,包括0、5、6、7)添加至第一队列中,此时第一队列所包含单据标识可以如图4e中411标记所示,包含0、5、6、7,未被添加至第一队列所剩余单据标识可以如图4e中412标记所示,包含1、2、3、4。然后,业务终端可以将第一队列中处于队头位置的单据标识(0)进行出队,此时第一队列所包含单据标识可以如图4e中413标记所示,包含5、6、7,将当前出队的单据标识(0)添加至标识拓扑序列中,若标识拓扑序列用Res1表示,此时得到的标识拓扑序列可以表示为Res1=[0]。由于当前单据(0所指示的单据0)的邻接表为空,所以不需要执行降低当前单据的邻接表所指示的各个单据的入度数组所存储的入度的相关操作,此时剩余单据标识所指示单据的入度没有更新,仍然可以如图4e中412标记所示;相应的N个单据的单据标识中未新增入度为无效值的单据的单据标识,基于此,此时第一队列所包含单据标识可以如图4e中413标记所示,仍然包含5、6、7,剩余单据标识可以如图4e中412标记所示,仍然包含1、2、3、4。
请参见图4f,为本申请实施例提供的另一种构建标识拓扑序列的示意图;第一队列所包含单据标识可以如图4f中421标记所示,包含5、6、7,剩余单据标识可以如图4f中422标记所示,包含1、2、3、4。业务终端可以将第一队列中处于队头位置的单据标识(5)进行出队,此时第一队列所包含单据标识可以如图4f中423标记所示,包含6、7,将当前出队的单据标识(5)添加至标识拓扑序列中,此时得到的标识拓扑序列可以表示为Res1=[0,5]。由于当前单据(5所指示的单据5)的邻接表包含的单据标识为2,所以需要执行降低当前单据的邻接表所指示的各个单据的入度数组所存储的入度的相关操作,即需要降低单据2的入度数组所存储的入度,此时剩余单据标识所指示单据的入度可以如图4f中424标记所示,单据2的入度数组所存储的入度被降为0;相应的N个单据的单据标识中新增入度为无效值的单据的单据标识(2),基于此,可以将新增的入度为无效值的单据的单据标识(2)添加至第一队列中,此时第一队列所包含单据标识可以如图4f中425标记所示,包含6、7、2,剩余单据标识可以如图4f中426标记所示,包含1、3、4。然后,业务终端可以基于图4f中如425标识所示的第一队列以及相关信息,以及图4f中如426标识所示的剩余单据标识以及相关信息,继续执行构建标识拓扑序列的相关过程,直至第一队列为空,且N个单据的单据标识均被执行过入队操作,确定标识拓扑序列构建完成,该构建完成的标识拓扑序列可以表示为:Res1=[0,5,6,7,2,1,3,4];其中,继续执行构建标识拓扑序列的相关过程与图4d以及图4f所示的构建标识拓扑序列的相关过程类似,在此不做赘述。
S304,根据N个单据之间的依赖关系,采用N个单据对应的M个索引信息构建索引拓扑序列。
其中,根据N个单据之间的依赖关系,采用N个单据对应的M个索引信息构建索引拓扑序列的相关过程,与上述根据N个单据之间的依赖关系,采用N个单据的单据标识构建标识拓扑序列的相关过程类似。任一索引信息在索引拓扑序列中的排列位置,位于相应索引信息所依赖的索引信息在索引拓扑序列中的排列位置之后;任一索引信息所依赖的索引信息包括:相应索引信息对应的单据所依赖的单据的索引信息;以M个索引信息中的第m个索引信息为例,第m个索引信息在索引拓扑序列中的排列位置,位于该第m个索引信息所依赖的索引信息在索引拓扑序列中的排列位置之后;第m个索引信息所依赖的索引信息包括:该第m个索引信息对应的单据所依赖的单据的索引信息,其中,第m个索引信息所依赖的索引信息应该与该第m个索引信息不同。以图4b所指示的N个单据以及M个索引信息为例,索引信息D对应的单据包括单据1,单据1依赖于单据6,单据6的索引信息为索引信息A,因此可以确定索引信息D依赖于索引信息A,索引信息B对应的单据包括单据2和单据5,其中单据2依赖于单据5,单据5不存在依赖的单据,因此可以确定索引信息B不存在依赖的索引信息;参照上述过程,可以确定出索引信息A、索引信息B、索引信息C以及索引信息E均不存在依赖的索引信息,索引信息D依赖于索引信息A。
在一种可行的实施方式中,根据N个单据之间的依赖关系,采用N个单据对应的M个索引信息构建索引拓扑序列,包括:根据N个单据之间的依赖关系以及N个单据对应的M个索引信息,构建每个索引信息的邻接表以及每个索引信息的入度数组;其中,任一索引信息的邻接表用于存储:依赖于相应索引信息的各个索引信息,任一索引信息的入度数组用于存储相应索引信息的入度,任一索引信息的入度用于指示相应索引信息所依赖的索引信息的数量;根据每个索引信息的邻接表以及每个索引信息的入度数组,采用M个索引信息构建索引拓扑序列。以M个索引信息中的第m个索引信息为例,第m个索引信息的邻接表用于存储:依赖于第m个索引信息的各个索引信息,第m个索引信息的入度数组用于存储第m个索引信息的入度,第m个索引信息的入度用于指示第m个索引信息所依赖的索引信息的数量。
其中,根据N个单据之间的依赖关系以及N个单据对应的M个索引信息,构建每个索引信息的邻接表以及每个索引信息的入度数组,即根据N个单据之间的依赖关系以及N个单据对应的M个索引信息建图的过程,图中的节点可以指示索引信息,节点的入度代表一种指向性,即表示节点被指向的情况。在一种可行的实施方式中,根据N个单据之间的依赖关系以及N个单据对应的M个索引信息,构建每个索引信息的邻接表以及每个索引信息的入度数组,包括:针对N个单据对应的M个索引信息,建立每个索引信息的邻接表和每个索引信息的入度数组;其中,建立的任一邻接表为空,建立的任一入度数组所存储入度为无效值;遍历M个索引信息 ,将当前遍历的索引信息作为第一索引信息;若根据N个单据之间的依赖关系,确定M个索引信息中存在第一索引信息所依赖的第二索引信息,则将第一索引信息添加至各个第二索引信息的邻接表中,将第二索引信息的数量作为第一索引信息的入度,添加至第一索引信息的入度数组中,并继续遍历M个索引信息;若根据N个单据之间的依赖关系,确定M个索引信息中未存在第一索引信息所依赖的第二索引信息,则继续遍历M个索引信息;在M个索引信息均被遍历后,确定各个索引信息的邻接表以及各个索引信息的入度数组均构建完成。其中,第二索引信息是指第一索引信息所依赖的索引信息,在建立M个索引信息中每个索引信息的入度数组时,建立的任一入度数组所存储入度为无效值,该无效值可以根据具体需求进行设定,例如可以将无效值设定为0、设定为任意负数等等,本申请实施例对此不做限制,为了便于阐述,本申请实施例后续以无效值被设定为0为例。以图4b所示的召回的N个单据的关联信息为例,请参见图4g,为本申请实施例提供的一种建立的索引信息的邻接表和入度数组的示意图,其中,入度数组可以用Indegree2表示,一个为空的邻接表可以如431标记所示,一个所存储入度为无效值的入度数组可以如432标记所示。
业务终端可以遍历M个索引信息,若当前遍历为第一次遍历,且第一次遍历的索引信息为索引信息A,索引信息A不存在依赖的索引信息,则继续遍历M个索引信息;若当前遍历为第二次遍历,且第二次遍历的索引信息为索引相信D,索引信息D依赖于索引信息A,则第一索引信息为索引信息D,第二索引信息为索引信息A,第二索引信息的数量为1;则可以将第一索引信息(索引信息D)添加至第二索引信息(索引信息A)的邻接表中,将第二索引信息的数量(1)作为第一索引信息(索引信息D)的入度,添加至第一索引信息(索引信息D)的入度数组中,并继续遍历M个索引信息,直至遍历M个索引信息结束,在M个索引信息均被遍历后,确定各个索引信息的邻接表以及各个索引信息的入度数组均构建完成,构建完成的索引信息的邻接表和入度数组可以参见图4h。
在另一种可选的构建索引信息的邻接表和入度数组的方式中,业务终端可以遍历N个单据的单据标识,以图4b所示的召回的N个单据的关联信息为例,业务终端可以遍历N个单据的单据标识,若当前遍历为第一次遍历,且第一次遍历的单据标识为0,0所指示的单据0不存在依赖的单据,则继续遍历N个单据的单据标识;若当前遍历为第二次遍历,且第二次遍历的单据标识为1,1所指示的单据1依赖于单据6,单据1的索引信息为索引信息D,单据6的索引信息为索引信息A,由于单据1的索引信息(索引信息D)和单据6的索引信息(索引信息A)不同,则可以确定索引信息D依赖于索引信息A,则将索引信息D添加至索引信息A的邻接表中,并在索引信息D的入度数组中增加1,并继续遍历N个单据的单据标识;若当前遍历为第三次遍历,且第三次遍历的单据标识为2,2所指示的单据2依赖于单据5,单据2的索引信息为索引信息B,单据5的索引信息为索引信息B,由于单据2的索引信息(索引信息B)和单据5的索引信息(索引信息B)相同,则继续遍历N个单据的单据标识,直至遍历N个单据的单据标识结束,在N个单据的单据标识均被遍历后,确定各个索引信息的邻接表以及各个索引信息的入度数组均构建完成。
在一种可行的实施方式中,根据每个索引信息的邻接表以及每个索引信息的入度数组,采用M个索引信息构建索引拓扑序列,包括:建立空的索引拓扑序列以及空的第二队列;每基于每个索引信息的入度数组所存储的入度,检测到M个索引信息存在目标索引信息时,将存在的目标索引信息入队至第二队列中;其中,目标索引信息满足如下条件:对应的入度为无效值;若第二队列不为空,则持续地将第二队列中处于队头位置的索引信息进行出队,每执行一次出队操作,则将当前出队的索引信息添加至索引拓扑序列中,并降低当前邻接表中的各个索引信息的入度数组所存储的入度,当前邻接表是指当前出队的索引信息的邻接表;若第二队列为空,且M个索引信息均被执行过入队操作,则确定索引拓扑序列构建完成。也就是说,业务终端可以将M个索引信息中,入度为无效值的索引信息(即目标索引信息)添加至第二队列中;在第二队列不为空的情况下,将第二队列中处于队头位置的索引信息进行出队,并将当前出队的索引信息添加至索引拓扑序列中,以及降低当前出队的索引信息的邻接表(即当前邻接表)中的各个索引信息的入度数组所存储的入度;在降低相应入度数组所存储的入度之后,若M个索引信息中新增了入度为无效值的索引信息,则将其添加至第二队列中,直至第二队列为空;可选的,可以通过遍历当前邻接表所存储的索引信息,确定当前邻接表中的各个索引信息,以降低当前邻接表中的各个索引信息的入度数组所存储的入度。
以图4h所示的邻接表以及入度数组为例,请参见图4i,为本申请实施例提供的一种构建索引拓扑序列的示意图;业务终端建立空的索引拓扑序列以及空的第二队列之后,可以将M个索引信息中,入度为无效值的索引信息(即目标索引信息,包括用A、B、C、E指代的索引信息A、索引信息B、索引信息C、索引信息E)添加至第二队列中,此时第二队列所包含索引信息可以如图4i中441标记所示,包含A、B、C、E,未被添加至第二队列所剩余索引信息可以如图4i中442标记所示,包含D。然后,业务终端可以将第二队列中处于队头位置的索引信息(A)进行出队,此时第二队列所包含索引信息可以如图4i中443标记所示,包含B、C、E,将当前出队的索引信息(A)添加至索引拓扑序列中,若索引拓扑序列用Res2表示,此时得到的索引拓扑序列可以表示为Res2=[A]。由于当前邻接表(索引信息A的邻接表)包含索引信息D,所以需要执行降低当前邻接表中的各个索引信息的入度数组所存储的入度的相关操作,即需要降低索引信息D的入度数组所存储的入度,此时剩余索引信息的入度可以如图4i中444标记所示,索引信息D的入度数组所存储的入度被降为0;相应的M个索引信息中新增入度为无效值的索引信息(D),基于此,可以将新增的入度为无效值的索引信息(D)添加至第二队列中,此时第二队列所包含索引信息可以如图4i中445标记所示,包含B、C、E 、D,剩余索引信息为空。然后,业务终端可以基于图4i中如445标识所示的第二队列以及相关信息,继续执行构建索引拓扑序列的相关过程,直至第二队列为空,且M个索引信息均被执行过入队操作,确定索引拓扑序列构建完成,该构建完成的索引拓扑序列可以表示为:Res2=[A,B,C,E,D];其中,继续执行构建索引拓扑序列的相关过程与图4i所示的构建索引拓扑序列的相关过程类似,在此不做赘述。
S305,根据标识拓扑序列以及索引拓扑序列,确定N个单据的排列顺序。
其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续;步骤S303至步骤S305的相关过程对应于上述步骤S203的相关过程。
在一种可行的实施方式中,业务终端根据标识拓扑序列以及索引拓扑序列,确定N个单据的排列顺序的过程,可以包括如下步骤:根据标识拓扑序列以及M个索引信息建立映射关系图;其中,映射关系图包括:各个索引信息的标识映射序列,任一标识映射序列包括相应索引信息对应的各个单据的单据标识,且任一标识映射序列中的各个单据标识之间的排列关系,与相应单据标识在标识拓扑序列中的排列关系保持一致;按照各个索引信息在索引拓扑序列中的排列顺序,对映射关系图中的各个索引信息的标识映射序列进行排序处理,得到排序结果;其中,排序结果用于指示N个单据的排列顺序。
请参见图4j,为本申请实施例提供的一种建立映射关系图的示意图,其中标识拓扑序列表示为:Res1=[0,5,6,7,2,1,3,4],M个索引信息表示为: A、B、C、D、E,索引信息C的标识映射序列包括[0],索引信息B的标识映射序列包括[5,2],索引信息A的标识映射序列包括[6,3,4],索引信息E的标识映射序列包括[7],索引信息D的标识映射序列包括[1];请参见图4k,为本申请实施例提供的一种确定排序结果的示意图,排序结果为[6,3,4,5,2,0,7,1];该排序结果所指示的N个单据的排列顺序满足任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,例如单据1依赖于单据6,该排序结果指示单据1的排列顺序位于单据6的排列顺序之后,又如单据2依赖于单据5,该排序结果指示单据2的排列顺序位于单据5的排列顺序之后,等等,并且,该排序结果所指示的N个单据的排列顺序还满足同一索引信息对应的各个单据的排列顺序连续,例如单据6、单据3和单据4的索引信息均为索引信息A,该排序结果指示单据6、单据3和单据4的排列顺序连续,又如单据5和单据2的索引信息均为索引信息B,该排序结果指示单据5和单据2的排列顺序连续。
针对根据标识拓扑序列以及M个索引信息建立映射关系图的相关过程;在一种可行的实施方式中,业务终端可以先构建M个索引信息中每个索引信息的空的标识映射序列,然后,业务终端可以遍历M个索引信息,针对当前遍历的索引信息,按照各个单据标识在标识拓扑序列中的排列顺序,依次查找该当前遍历的索引信息对应单据的单据标识,并添加至该当前遍历的索引信息的标识映射序列中,直至遍历M个索引信息结束得到映射关系图。在另一种可行的实施方式中,业务终端可以先构建M个索引信息中每个索引信息的空的标识映射序列,然后,业务终端可以按照各个单据标识在标识拓扑序列中的排列顺序,遍历标识拓扑序列中的单据标识,针对当前遍历的单据标识,将当前遍历的单据标识添加至当前单据的索引信息的标识映射序列中,此处的当前单据是指当前遍历的单据标识所指示的单据,直至遍历标识拓扑序列中的单据标识结束得到映射关系图。针对得到排序结果的相关过程,在一种可行的实施方式中,业务终端可以构建一个空的结果序列,然后,业务终端可以按照各个索引信息在索引拓扑序列中的排列顺序,遍历索引拓扑序列中的各个索引信息,针对当前遍历的索引信息,将当前遍历的索引信息的标识映射序列添加至结果序列中,直至遍历索引拓扑序列中的各个索引信息结束,将遍历结束后的结果序列作为排序结果。
在一种可行的实施方式中,若N个单据中存在不具有索引信息的单据,则在确定N个单据对应的M个索引信息的过程中,需要为不具有索引信息的每个单据,分配不同的参考索引信息,再对N个单据中每个单据的索引信息进行汇总得到M个索引信息,可以保证确定不具有索引信息的单据的排列顺序时的准确性。请参见图4l,为本申请实施例提供的一种确定单据的排列顺序的示意图;业务终端可以获取初始数据,初始数据可以包括N个单据的单据标识,N个单据的索引信息,N个单据的依赖信息等数据;对初始数据进行预处理,得到待排序数据,对初始数据进行预处理可以包括确定N个单据之间的依赖关系以及N个单据对应的M个索引信息的相关过程,待排序数据可以包括N个单据的单据标识,N个单据对应的M个索引信息,N个单据的依赖信息等数据。然后业务终端可以基于待排序数据构建N个单据中每个单据的邻接表以及每个单据的入度数组,以及构建M个索引信息中每个索引信息的邻接表以及每个索引信息的入度数组;并基于邻接表和入度数组,构建标识拓扑序列以及索引拓扑序列,即根据每个单据的邻接表以及每个单据的入度数组,采用N个单据的单据标识构建标识拓扑序列,根据每个索引信息的邻接表以及每个索引信息的入度数组,采用M个索引信息构建索引拓扑序列。然后业务终端可以根据标识拓扑序列以及M个索引信息建立映射关系图,并根据索引拓扑序列以及映射关系图,确定N个单据的排列顺序。
其中,在构建标识拓扑序列或索引拓扑序列的过程中,业务终端可以将待处理的节点中入度为无效值的节点加入参考队列,然后可以出队参考队列的队头节点,将队头节点添加至待构建的拓扑序列中,并遍历队头节点对应的邻接表,降低邻接表对应节点的入度,在检测到参考队列为空,且待处理的各个节点均被执行过入队操作时,确定待构建的拓扑序列构建完成,否则,跳转执行将待处理的节点中入度为无效值的节点加入参考队列的操作;其中,当待构建的拓扑序列为标识拓扑序列时,节点表示单据标识,待处理的节点包括N个单据的单据标识,参考队列即第一队列,当待构建的拓扑序列为索引拓扑序列时,节点表示索引信息,待处理的节点包括M个索引信息,参考队列即第二队列。可以知道的是,上述确定N个单据的排列顺序的过程是基于对单据标识的处理来实现的,在另一种可行的实现方式中,也可以基于对单据的处理来实现,相关过程可以参考对单据标识的相关处理过程,本申请实施例不做赘述。
S306,在业务终端中,按照N个单据的排列顺序显示N个单据。
由于目标对象可通过业务终端中的目标应用对索引信息对应设定的各个索引字段的取值进行筛选,以实现对单据的查询,基于此,以下对业务终端通过目标应用与目标对象的交互过程进行介绍。
在一种可行的实施方式中,目标应用提供了一种申请记录管理页面,该申请记录管理页面可以包括申请记录管理组件,若申请记录管理组件被触发,则跳转至申请记录页面,该申请记录页面可以包括用于对索引字段进行筛选的筛选组件,以及该申请记录页面可以用于对查询到的单据进行显示。可选的,该申请记录页面还可以包括用于对查询到的单据进行导出的单据导出组件,当单据导出组件被触发,可以将查询到的单据导出,例如可以基于在线文档、离线文档、在线表格、离线表格等方式进行导出,本申请实施例不做限制。
请参见图5a,为本申请实施例提供的一种申请记录管理页面的示意图,其中,申请记录管理组件可以如501标记所示,具体显示为“申请记录管理,若如501标记所示的申请记录管理组件被触发,则跳转至申请记录页面。以索引信息对应设定的索引字段包括类型字段、时间字段、对象字段以及状态字段为例,请参见图5b,为本申请实施例提供的一种申请记录页面的示意图,如511标记所示的筛选组件(也称为类型筛选组件)可以用于对类型字段的取值进行筛选,如512标记所示的筛选组件(也称为时间筛选组件)可以用于对时间字段的取值进行筛选,如513标记所示的筛选组件(也称为对象筛选组件)可以用于对对象字段的取值进行筛选,如514标记所示的筛选组件(也称为状态筛选组件)可以用于对状态字段的取值进行筛选,如515标记所示为单据显示区域,可以对查询到的单据进行显示,如516标记所示为单据导出组件,具体显示为“导出记录”。可选的,当申请记录管理组件被触发而跳转至申请记录页面时,此时申请记录页面中的单据显示区域可以不显示单据,也可以显示各个索引字段下所有取值对应的全部单据,可以根据具体业务需求进行设定。
若类型筛选组件被触发,则业务终端的目标应用中可以显示类型筛选窗口,该类型筛选窗口支持对类型字段的取值进行筛选。请参见图5c,为本申请实施例提供的一种对类型字段进行筛选的示意图,若类型筛选组件被触发,则业务终端的目标应用中可以显示类型筛选窗口,该类型筛选窗口可以如521标记所示;其中,该类型筛选窗口中可以包括类型字段的各个取值,即包括类型字段下支持筛选的各个单据类型,类型字段下支持筛选的各个单据类型可以根据具体业务需求进行设定,例如不同企业可以根据各自的业务需求,设定个性化的支持筛选的单据类型,例如支持筛选的单据类型可以包括人事类型下的请假类型、外出类型、出差类型等等;该类型筛选窗口中还可以包括用于确定筛选的类型字段的取值的确定组件以及用于取消对类型字段的取值的筛选的取消组件。
若时间筛选组件被触发,则业务终端的目标应用中可以显示时间筛选窗口,该时间筛选窗口支持对时间字段的取值进行筛选。请参见图5d,为本申请实施例提供的一种对时间字段进行筛选的示意图,若时间筛选组件被触发,则业务终端的目标应用中可以显示时间筛选窗口,该时间筛选窗口可以如531标记所示;其中,该时间筛选窗口支持对开始时间和结束时间进行筛选,也就是说,目标应用支持对提交时间处于筛选时间段的单据进行查询,该筛选时间段即筛选的开始时间至筛选的结束时间之间的时间段;若如532标记所示的开始时间筛选组件被触发,则可以对开始时间进行筛选,若如533标记所示的结束时间筛选组件被触发,则可以对结束时间进行筛选,例如图5d中筛选的开始时间为2023年5月20日;该时间筛选窗口中还可以包括用于确定筛选的时间字段的取值的确定组件以及用于取消对时间字段的取值的筛选的取消组件。可选的,目标应用还支持对默认筛选时长进行配置,使得在目标对象仅对开始时间(或结束时间)进行筛选的情况下,可以基于默认筛选时长确定出结束时间(或开始时间),该默认筛选时长可以根据具体业务需求进行配置,例如可以配置为7天、1个月、半年等等。
若对象筛选组件被触发,则业务终端的目标应用中可以显示对象筛选窗口,该对象筛选窗口支持对对象字段的取值进行筛选。请参见图5e,为本申请实施例提供的一种对对象字段进行筛选的示意图,若对象筛选组件被触发,则业务终端的目标应用中可以显示对象筛选窗口,该对象筛选窗口可以如541标记所示;其中,该对象筛选窗口支持对一个或多个对象进行筛选,也支持对企业中某一个部门的对象进行筛选,等等;以541标记所示的对象筛选窗口为例,该对象筛选窗口中筛选了对象a和对象b。
若状态筛选组件被触发,则业务终端的目标应用中可以显示状态筛选窗口,该状态筛选窗口支持对状态字段的取值进行筛选。请参见图5f,为本申请实施例提供的一种对状态字段进行筛选的示意图,若状态筛选组件被触发,则业务终端的目标应用中可以显示状态筛选窗口,该状态筛选窗口可以如551标记所示;其中,该状态筛选窗口中可以包括状态字段的各个取值,即包括状态字段下支持筛选的各个审批状态,状态字段下支持筛选的各个审批状态可以根据具体业务需求进行设定,例如支持筛选的审批状态可以包括审批中、已通过、未通过等等;该状态筛选窗口中还可以包括用于确定筛选的状态字段的取值的确定组件以及用于取消对状态字段的取值的筛选的取消组件。
若目标对象在业务终端的目标应用中,对类型字段和时间字段进行了筛选,筛选的单据类型为请假类型,筛选时间段为2023年5月20日至2023年6月20日,参见图5g,为本申请实施例提供的一种召回的单据按序排列的示意图。
请参见图5h,为本申请实施例提供的一种导出单据的示意图,若单据导出组件被触发,则业务终端可以将查询到的单据导出,此时可以显示导出提示页面,导出提示页面可以如561标记所示,可选的,该导出提示页面中可以包括用于提示导出成功的导出成功提示信息,可以如562标记所示,还可以包括用于查看导出的单据的查看组件,可以如563标记所示。可以知道的是,上述对于目标应用中各种交互页面的描述,均是示例性的描述,交互页面的样式和布局等相关设计,可以根据具体需求进行设计,本申请实施例不做限制。
本申请实施例中,根据业务终端的查询请求,在单据数据库中进行单据召回处理的过程中,可以基于由索引字段构成的索引信息来对单据数据库中的单据进行检索并召回,可以提升单据数据库的性能以及提升单据的召回效率;在从单据数据库中进行单据召回时,不仅可以对满足对象所筛选的筛选条件的单据进行召回,还可以对满足对象所筛选的筛选条件的单据所依赖的单据进行召回,并且在业务终端中,按照召回的单据的排列顺序显示召回的单据时,召回的单据中任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续,便于对象进行单据查看与管理,便于对象在处理(如审批)某一单据时,可以直接参考位于该单据之前所依赖的单据,而无需对象人为查找该单据依赖的单据来实现单据处理,从而提升单据处理效率,进而可以提高用户体验以及增加用户粘性;并且,本申请实施例还提出可以对召回的单据进行导出,使得对象可以方便快捷地获取到查询的单据。
本申请实施例所提出的数据处理方法的相关过程可以由服务器执行,也可以由业务终端执行,也可以由服务器和业务终端协同执行,以下对该数据处理方法由服务器和业务终端协同执行的相关过程进行简要描述。
在一种可行的实施方式中,若该数据处理方法由一个服务器和业务终端协同执行,请参见图6a,为本申请实施例提供的一种服务器和业务终端协同执行数据处理方法的示意图;业务终端可以向服务器发送查询请求;服务器可以根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据,并确定该N个单据的排列顺序,即服务器可以确定N个单据之间的依赖关系以及N个单据对应的M个索引信息,根据N个单据之间的依赖关系和N个单据对应的M个索引信息,确定N个单据的排列顺序,并将该N个单据以及N个单据的排列顺序发送至业务终端中;业务终端可以在业务终端中,按照N个单据的排列顺序显示N个单据。
在另一种可行的实施方式中,若该数据处理方法由多个服务器和业务终端协同执行,请参见图6b,为本申请实施例提供的另一种服务器和业务终端协同执行数据处理方法的示意图;业务终端(即Node)可以向接口服务器(即Svr)发送查询请求(即Req请求包);接口服务器(即Svr)在接收到业务终端(即Node)的查询请求后,可以将查询请求(即Req请求包)透传到逻辑服务器(即Logic)中,由逻辑服务器处理单据召回以及确定单据的排列顺序等相关的处理逻辑。逻辑服务器在接收到查询请求(即Req请求包)之后,可以进行解包,解析出查询请求所携带的数据(例如身份信息、单据索引条件等数据),并根据查询请求所携带的身份信息对目标对象进行权限验证,并在权限验证通过的情况下才执行单据召回以及确定单据的排列顺序等相关的处理逻辑,否则会反馈指示权限验证未通过的提示信息至业务终端。
在逻辑服务器(即Logic)验证权限通过后,可以向Dao层发出查询存储的请求,该查询存储的请求可以携带单据索引条件;其中,Dao(Data Access Objects)是一种可实现对数据库的访问的应用程序接口(API)。Dao层可以根据单据索引条件设置过滤信息(即Filter信息),该Filter信息可以对应于单据索引条件中各个索引字段的取值(例如对应于类型字段RecordType、时间字段RecordTime、对象字段RecordApplicant、状态字段RecordStatus这4个索引字段的取值;然后Dao层可以基于该Filter信息构建查询任务,并将查询任务添加至协程池(即CoroutineSvr)中,使得协程池可以并发地调用各个查询任务,从单据数据库(即DB)中读取数据(包括对单据以及单据相关的信息进行召回,单据相关的信息可以包括单据标识、依赖信息、索引信息等在确定单据的排列顺序的相关处理逻辑下所需使用的信息),并将读取的数据返回至逻辑服务器中。
逻辑服务器可以确定召回的N个单据的排列顺序,即逻辑服务器可以确定N个单据之间的依赖关系以及N个单据对应的M个索引信息,根据N个单据之间的依赖关系和N个单据对应的M个索引信息,确定N个单据的排列顺序,然后逻辑服务器可以将该N个单据以及N个单据的排列顺序经由接口服务器发送至业务终端中。业务终端可以按照N个单据的排列顺序显示N个单据。可选的,针对单据导出相关的过程,逻辑服务器可以通过异步调用消息中间件(即Message Queue,MQ)的方式,在MQ中进行单据导出并制作消息推送卡片,相当于在目标对象触发单据导出组件之前将单据导出并制作消息推送卡片,使得在确认目标对象触发单据导出组件之后,可将导出的单据基于卡片的形式推送至目标对象的业务终端中,其中,卡片推送可以调用卡片推送服务(即PushCardSvr)实现。当然,逻辑服务器也可以在目标对象触发单据导出组件之后,才进行单据导出并制作消息推送卡片,以推送至业务终端中,本申请实施例不做限制。
基于上述方法实施例的描述,本申请实施例还公开了一种数据处理装置;该数据处理装置可以是运行于计算机设备中的计算机程序,该计算机设备可以为终端设备或服务器,该数据处理装置可以执行图2或图3所示的方法流程中的各个步骤。请参见图7,为本申请实施例提供的一种数据处理装置的结构示意图,该数据处理装置可以包括处理单元701以及输出单元702,其中:
处理单元701,用于根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据,N为大于1的正整数;
所述处理单元701,还用于确定所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息;其中,一个索引信息用于索引至少一个单据,M为正整数;任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据;
所述处理单元701,还用于根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序;其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续;
输出单元702,用于在所述业务终端中,按照所述N个单据的排列顺序显示所述N个单据。
在一种实施方式中,处理单元701在用于根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序时,可具体用于:
根据所述N个单据之间的依赖关系,采用所述N个单据的单据标识构建标识拓扑序列;其中,在所述标识拓扑序列中,任一单据的单据标识位于相应单据所依赖的各个单据的单据标识之后;
根据所述N个单据之间的依赖关系,采用所述N个单据对应的M个索引信息构建索引拓扑序列;其中,任一索引信息在所述索引拓扑序列中的排列位置,位于相应索引信息所依赖的索引信息在所述索引拓扑序列中的排列位置之后;任一索引信息所依赖的索引信息包括:相应索引信息对应的单据所依赖的单据的索引信息;
根据所述标识拓扑序列以及所述索引拓扑序列,确定所述N个单据的排列顺序。
在一种实施方式中,处理单元701在用于根据所述标识拓扑序列以及所述索引拓扑序列,确定所述N个单据的排列顺序时,可具体用于:
根据所述标识拓扑序列以及所述M个索引信息建立映射关系图;其中,所述映射关系图包括:各个索引信息的标识映射序列,任一标识映射序列包括相应索引信息对应的各个单据的单据标识,且任一标识映射序列中的各个单据标识之间的排列关系,与相应单据标识在所述标识拓扑序列中的排列关系保持一致;
按照各个索引信息在所述索引拓扑序列中的排列顺序,对所述映射关系图中的各个索引信息的标识映射序列进行排序处理,得到排序结果;其中,所述排序结果用于指示所述N个单据的排列顺序。
在一种实施方式中,处理单元701在用于根据所述N个单据之间的依赖关系,采用所述N个单据的单据标识构建标识拓扑序列时,可具体用于:
根据所述N个单据之间的依赖关系以及所述N个单据的单据标识,构建每个单据的邻接表以及每个单据的入度数组;其中,任一单据的邻接表用于存储:依赖于相应单据的各个单据的单据标识,任一单据的入度数组用于存储相应单据的入度,任一单据的入度用于指示相应单据所依赖的单据的数量;
根据所述每个单据的邻接表以及所述每个单据的入度数组,采用所述N个单据的单据标识构建所述标识拓扑序列。
在一种实施方式中,处理单元701在用于根据所述N个单据之间的依赖关系以及所述N个单据的单据标识,构建每个单据的邻接表以及每个单据的入度数组时,可具体用于:
建立所述N个单据中每个单据的邻接表以及所述每个单据的入度数组;其中,建立的任一邻接表为空,建立的任一入度数组所存储入度为无效值;
遍历所述N个单据的单据标识,将当前遍历的单据标识所指示的单据作为第一单据;
若根据所述N个单据之间的依赖关系,确定所述N个单据中存在所述第一单据所依赖的第二单据,则将所述第一单据的单据标识添加至各个第二单据的邻接表中,将第二单据的数量作为所述第一单据的入度,添加至所述第一单据的入度数组中,并继续遍历所述N个单据的单据标识;
若根据所述N个单据之间的依赖关系,确定所述N个单据中未存在所述第一单据所依赖的第二单据,则继续遍历所述N个单据的单据标识;
在所述N个单据的单据标识均被遍历后,确定各个单据的邻接表和各个单据的入度数组均构建完成。
在一种实施方式中,处理单元701在用于根据所述每个单据的邻接表以及所述每个单据的入度数组,采用所述N个单据的单据标识构建所述标识拓扑序列时,可具体用于:
建立空的标识拓扑序列以及空的第一队列;
每基于所述每个单据的入度数组所存储的入度,检测到所述N个单据的单据标识中存在目标单据标识时,将存在的目标单据标识入队至所述第一队列中;其中,所述目标单据标识满足如下条件:指示的单据的入度为无效值;
若所述第一队列不为空,则持续地将所述第一队列中处于队头位置的单据标识进行出队,每执行一次出队操作,则将当前出队的单据标识添加至所述标识拓扑序列中,并降低当前单据的邻接表所指示的各个单据的入度数组所存储的入度,所述当前单据是指当前出队的单据标识所指示的单据;
若所述第一队列为空,且所述N个单据的单据标识均被执行过入队操作,则确定所述标识拓扑序列构建完成。
在一种实施方式中,处理单元701在用于根据所述N个单据之间的依赖关系,采用所述N个单据对应的M个索引信息构建索引拓扑序列时,可具体用于:
根据所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息,构建每个索引信息的邻接表以及每个索引信息的入度数组;其中,任一索引信息的邻接表用于存储:依赖于相应索引信息的各个索引信息,任一索引信息的入度数组用于存储相应索引信息的入度,任一索引信息的入度用于指示相应索引信息所依赖的索引信息的数量;
根据所述每个索引信息的邻接表以及所述每个索引信息的入度数组,采用所述M个索引信息构建所述索引拓扑序列。
在一种实施方式中,处理单元701在用于根据所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息,构建每个索引信息的邻接表以及每个索引信息的入度数组时,可具体用于:
针对所述N个单据对应的M个索引信息,建立每个索引信息的邻接表和所述每个索引信息的入度数组;其中,建立的任一邻接表为空,建立的任一入度数组所存储入度为无效值;
遍历所述M个索引信息,将当前遍历的索引信息作为第一索引信息;
若根据所述N个单据之间的依赖关系,确定所述M个索引信息中存在所述第一索引信息所依赖的第二索引信息,则将所述第一索引信息添加至各个第二索引信息的邻接表中,将第二索引信息的数量作为所述第一索引信息的入度,添加至所述第一索引信息的入度数组中,并继续遍历所述M个索引信息;
若根据所述N个单据之间的依赖关系,确定所述M个索引信息中未存在所述第一索引信息所依赖的第二索引信息,则继续遍历所述M个索引信息;
在所述M个索引信息均被遍历后,确定各个索引信息的邻接表以及各个索引信息的入度数组均构建完成。
在一种实施方式中,处理单元701在用于根据所述每个索引信息的邻接表以及所述每个索引信息的入度数组,采用所述M个索引信息构建所述索引拓扑序列时,可具体用于:
建立空的索引拓扑序列以及空的第二队列;
每基于所述每个索引信息的入度数组所存储的入度,检测到所述M个索引信息存在目标索引信息时,将存在的目标索引信息入队至所述第二队列中;其中,所述目标索引信息满足如下条件:对应的入度为无效值;
若所述第二队列不为空,则持续地将所述第二队列中处于队头位置的索引信息进行出队,每执行一次出队操作,则将当前出队的索引信息添加至所述索引拓扑序列中,并降低当前邻接表中的各个索引信息的入度数组所存储的入度,所述当前邻接表是指当前出队的索引信息的邻接表;
若所述第二队列为空,且所述M个索引信息均被执行过入队操作,则确定所述索引拓扑序列构建完成。
在一种实施方式中,查询请求携带单据索引条件,处理单元701在用于根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据时,可具体用于:
从所述业务终端的查询请求中获取所述单据索引条件,并根据所述单据数据库中的各个单据的索引信息,在所述单据数据库中查找满足所述单据索引条件的各个索引信息所对应的单据,得到候选单据集;
在所述单据数据库中,查找被所述候选单据集中的至少一个单据所依赖的其他单据,得到依赖单据集;
整合所述候选单据集和所述依赖单据集,得到所述N个单据。
在一种实施方式中,任一索引信息和所述单据索引条件均包括以下至少一个索引字段:类型字段、时间字段、对象字段以及状态字段;其中,类型字段的取值为单据类型,时间字段的取值为单据的提交时间,对象字段的取值为单据的提交对象的对象标识,状态字段的取值为单据的审批状态;
其中,当任一索引信息中的各个索引字段的取值,分别与相应索引字段在所述单据索引条件中的取值相匹配时,所述任一索引信息被判定满足所述单据索引条件。
在一种实施方式中,所述单据索引条件中的任一索引字段具有至少一个取值;处理单元701在用于根据所述单据数据库中的各个单据的索引信息,在所述单据数据库中查找满足所述单据索引条件的各个索引信息所对应的单据,得到候选单据集时,可具体用于:
根据所述单据索引条件中的各个索引字段的取值,构建至少一个查询索引;一个查询索引包括每个索引字段中的一个取值;
将构建出的各个查询索引封装至不同的查询任务中;一个查询任务中包括一个查询索引;
并发地调用各个查询任务,在所述单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据;
汇总所述各个查询任务所查询出的单据,得到所述候选单据集。
在一种实施方式中,处理单元701在用于并发地调用各个查询任务,在所述单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据时,可具体用于:
将所述各个查询任务添加至协程池中;
通过所述协程池并发地调用所述各个查询任务,基于分布式锁在所述单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据。
根据本申请的另一个实施例,图7所示的数据处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,数据处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图3中所示的相应方法所涉及的各步骤的计算机程序,来构造如图7中所示的数据处理装置,以及来实现本申请实施例的数据处理方法。计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算设备中,并在其中运行。
本申请实施例中,术语"模块”或"单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。
本申请实施例中,在根据业务终端的查询请求,从单据数据库中召回多个单据后,可以根据召回的单据之间的依赖关系和召回的单据对应的索引信息,确定召回的单据的排列顺序,在业务终端中,按照召回的单据的排列顺序显示召回的单据时,使得召回的单据中任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续,便于对象进行单据查看与管理,便于对象在处理(如审批)某一单据时,可以直接参考位于该单据之前所依赖的单据,而无需对象人为查找该单据依赖的单据来实现单据处理,从而提升单据处理效率。
基于上述方法实施例以及装置实施例的描述,本申请实施例还提供一种计算机设备,该计算机设备可以为终端设备或服务器。请参见图8,该计算机设备至少包括处理器801、输入接口802、输出接口803以及计算机可读存储介质804。其中,计算机设备内的处理器801、输入接口802、输出接口803以及计算机可读存储介质804可通过总线或其他方式连接。计算机可读存储介质804可以存储在计算机设备的存储器中,计算机可读存储介质804用于存储计算机程序,处理器801用于执行计算机可读存储介质804存储的计算机程序。处理器801(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于运行计算机程序从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例提出的处理器801可以用于实现单据召回及排序显示的相关过程,具体包括:根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据,N为大于1的正整数;确定所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息;其中,一个索引信息用于索引至少一个单据,M为正整数;任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据;根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序;其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续;在所述业务终端中,按照所述N个单据的排列顺序显示所述N个单据,等等。
本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是计算机设备中的记忆设备,用于存放计算机程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了计算机设备的操作系统。并且,在该存储空间中还存放了计算机程序,该计算机程序适于被处理器801加载并执行以实现本申请实施例所提供的相应方法流程。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机可读存储介质。
在一个实施例中,可由处理器加载并执行计算机可读存储介质中存放的计算机程序,以实现上述有关图2或图3所示的方法实施例中的相应步骤;具体实现中,计算机可读存储介质中的计算机程序可由处理器加载并执行如下步骤:
根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据,N为大于1的正整数;
确定所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息;其中,一个索引信息用于索引至少一个单据,M为正整数;任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据;
根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序;其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续;
在所述业务终端中,按照所述N个单据的排列顺序显示所述N个单据。
在一种实施方式中,处理器801在用于根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序时,可具体用于:
根据所述N个单据之间的依赖关系,采用所述N个单据的单据标识构建标识拓扑序列;其中,在所述标识拓扑序列中,任一单据的单据标识位于相应单据所依赖的各个单据的单据标识之后;
根据所述N个单据之间的依赖关系,采用所述N个单据对应的M个索引信息构建索引拓扑序列;其中,任一索引信息在所述索引拓扑序列中的排列位置,位于相应索引信息所依赖的索引信息在所述索引拓扑序列中的排列位置之后;任一索引信息所依赖的索引信息包括:相应索引信息对应的单据所依赖的单据的索引信息;
根据所述标识拓扑序列以及所述索引拓扑序列,确定所述N个单据的排列顺序。
在一种实施方式中,处理器801在用于根据所述标识拓扑序列以及所述索引拓扑序列,确定所述N个单据的排列顺序时,可具体用于:
根据所述标识拓扑序列以及所述M个索引信息建立映射关系图;其中,所述映射关系图包括:各个索引信息的标识映射序列,任一标识映射序列包括相应索引信息对应的各个单据的单据标识,且任一标识映射序列中的各个单据标识之间的排列关系,与相应单据标识在所述标识拓扑序列中的排列关系保持一致;
按照各个索引信息在所述索引拓扑序列中的排列顺序,对所述映射关系图中的各个索引信息的标识映射序列进行排序处理,得到排序结果;其中,所述排序结果用于指示所述N个单据的排列顺序。
在一种实施方式中,处理器801在用于根据所述N个单据之间的依赖关系,采用所述N个单据的单据标识构建标识拓扑序列时,可具体用于:
根据所述N个单据之间的依赖关系以及所述N个单据的单据标识,构建每个单据的邻接表以及每个单据的入度数组;其中,任一单据的邻接表用于存储:依赖于相应单据的各个单据的单据标识,任一单据的入度数组用于存储相应单据的入度,任一单据的入度用于指示相应单据所依赖的单据的数量;
根据所述每个单据的邻接表以及所述每个单据的入度数组,采用所述N个单据的单据标识构建所述标识拓扑序列。
在一种实施方式中,处理器801在用于根据所述N个单据之间的依赖关系以及所述N个单据的单据标识,构建每个单据的邻接表以及每个单据的入度数组时,可具体用于:
建立所述N个单据中每个单据的邻接表以及所述每个单据的入度数组;其中,建立的任一邻接表为空,建立的任一入度数组所存储入度为无效值;
遍历所述N个单据的单据标识,将当前遍历的单据标识所指示的单据作为第一单据;
若根据所述N个单据之间的依赖关系,确定所述N个单据中存在所述第一单据所依赖的第二单据,则将所述第一单据的单据标识添加至各个第二单据的邻接表中,将第二单据的数量作为所述第一单据的入度,添加至所述第一单据的入度数组中,并继续遍历所述N个单据的单据标识;
若根据所述N个单据之间的依赖关系,确定所述N个单据中未存在所述第一单据所依赖的第二单据,则继续遍历所述N个单据的单据标识;
在所述N个单据的单据标识均被遍历后,确定各个单据的邻接表和各个单据的入度数组均构建完成。
在一种实施方式中,处理器801在用于根据所述每个单据的邻接表以及所述每个单据的入度数组,采用所述N个单据的单据标识构建所述标识拓扑序列时,可具体用于:
建立空的标识拓扑序列以及空的第一队列;
每基于所述每个单据的入度数组所存储的入度,检测到所述N个单据的单据标识中存在目标单据标识时,将存在的目标单据标识入队至所述第一队列中;其中,所述目标单据标识满足如下条件:指示的单据的入度为无效值;
若所述第一队列不为空,则持续地将所述第一队列中处于队头位置的单据标识进行出队,每执行一次出队操作,则将当前出队的单据标识添加至所述标识拓扑序列中,并降低当前单据的邻接表所指示的各个单据的入度数组所存储的入度,所述当前单据是指当前出队的单据标识所指示的单据;
若所述第一队列为空,且所述N个单据的单据标识均被执行过入队操作,则确定所述标识拓扑序列构建完成。
在一种实施方式中,处理器801在用于根据所述N个单据之间的依赖关系,采用所述N个单据对应的M个索引信息构建索引拓扑序列时,可具体用于:
根据所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息,构建每个索引信息的邻接表以及每个索引信息的入度数组;其中,任一索引信息的邻接表用于存储:依赖于相应索引信息的各个索引信息,任一索引信息的入度数组用于存储相应索引信息的入度,任一索引信息的入度用于指示相应索引信息所依赖的索引信息的数量;
根据所述每个索引信息的邻接表以及所述每个索引信息的入度数组,采用所述M个索引信息构建所述索引拓扑序列。
在一种实施方式中,处理器801在用于根据所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息,构建每个索引信息的邻接表以及每个索引信息的入度数组时,可具体用于:
针对所述N个单据对应的M个索引信息,建立每个索引信息的邻接表和所述每个索引信息的入度数组;其中,建立的任一邻接表为空,建立的任一入度数组所存储入度为无效值;
遍历所述M个索引信息,将当前遍历的索引信息作为第一索引信息;
若根据所述N个单据之间的依赖关系,确定所述M个索引信息中存在所述第一索引信息所依赖的第二索引信息,则将所述第一索引信息添加至各个第二索引信息的邻接表中,将第二索引信息的数量作为所述第一索引信息的入度,添加至所述第一索引信息的入度数组中,并继续遍历所述M个索引信息;
若根据所述N个单据之间的依赖关系,确定所述M个索引信息中未存在所述第一索引信息所依赖的第二索引信息,则继续遍历所述M个索引信息;
在所述M个索引信息均被遍历后,确定各个索引信息的邻接表以及各个索引信息的入度数组均构建完成。
在一种实施方式中,处理器801在用于根据所述每个索引信息的邻接表以及所述每个索引信息的入度数组,采用所述M个索引信息构建所述索引拓扑序列时,可具体用于:
建立空的索引拓扑序列以及空的第二队列;
每基于所述每个索引信息的入度数组所存储的入度,检测到所述M个索引信息存在目标索引信息时,将存在的目标索引信息入队至所述第二队列中;其中,所述目标索引信息满足如下条件:对应的入度为无效值;
若所述第二队列不为空,则持续地将所述第二队列中处于队头位置的索引信息进行出队,每执行一次出队操作,则将当前出队的索引信息添加至所述索引拓扑序列中,并降低当前邻接表中的各个索引信息的入度数组所存储的入度,所述当前邻接表是指当前出队的索引信息的邻接表;
若所述第二队列为空,且所述M个索引信息均被执行过入队操作,则确定所述索引拓扑序列构建完成。
在一种实施方式中,查询请求携带单据索引条件,处理器801在用于根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据时,可具体用于:
从所述业务终端的查询请求中获取所述单据索引条件,并根据所述单据数据库中的各个单据的索引信息,在所述单据数据库中查找满足所述单据索引条件的各个索引信息所对应的单据,得到候选单据集;
在所述单据数据库中,查找被所述候选单据集中的至少一个单据所依赖的其他单据,得到依赖单据集;
整合所述候选单据集和所述依赖单据集,得到所述N个单据。
在一种实施方式中,任一索引信息和所述单据索引条件均包括以下至少一个索引字段:类型字段、时间字段、对象字段以及状态字段;其中,类型字段的取值为单据类型,时间字段的取值为单据的提交时间,对象字段的取值为单据的提交对象的对象标识,状态字段的取值为单据的审批状态;
其中,当任一索引信息中的各个索引字段的取值,分别与相应索引字段在所述单据索引条件中的取值相匹配时,所述任一索引信息被判定满足所述单据索引条件。
在一种实施方式中,所述单据索引条件中的任一索引字段具有至少一个取值;处理器801在用于根据所述单据数据库中的各个单据的索引信息,在所述单据数据库中查找满足所述单据索引条件的各个索引信息所对应的单据,得到候选单据集时,可具体用于:
根据所述单据索引条件中的各个索引字段的取值,构建至少一个查询索引;一个查询索引包括每个索引字段中的一个取值;
将构建出的各个查询索引封装至不同的查询任务中;一个查询任务中包括一个查询索引;
并发地调用各个查询任务,在所述单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据;
汇总所述各个查询任务所查询出的单据,得到所述候选单据集。
在一种实施方式中,处理器801在用于并发地调用各个查询任务,在所述单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据时,可具体用于:
将所述各个查询任务添加至协程池中;
通过所述协程池并发地调用所述各个查询任务,基于分布式锁在所述单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据。
本申请实施例中,在根据业务终端的查询请求,从单据数据库中召回多个单据后,可以根据召回的单据之间的依赖关系和召回的单据对应的索引信息,确定召回的单据的排列顺序,在业务终端中,按照召回的单据的排列顺序显示召回的单据时,使得召回的单据中任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续,便于对象进行单据查看与管理,便于对象在处理(如审批)某一单据时,可以直接参考位于该单据之前所依赖的单据,而无需对象人为查找该单据依赖的单据来实现单据处理,从而提升单据处理效率。
本申请实施例提供了一种计算机程序产品,计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质中读取该计算机程序,处理器执行该计算机程序,使得计算机设备执行上述图2或图3所示的方法实施例。应理解的是,以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (16)

1.一种数据处理方法,其特征在于,包括:
根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据,N为大于1的正整数;
确定所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息;其中,一个索引信息用于索引至少一个单据,M为正整数;任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据;
根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序;其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续;确定排序顺序的过程包括:构建标识拓扑序列、索引拓扑序列和映射关系图,所述标识拓扑序列根据每个单据的邻接表和用于存储相应单据的入度的入度数组构建,任一单据的入度用于指示相应单据所依赖的单据的数量,在所述标识拓扑序列中,任一单据的单据标识位于相应单据所依赖的各个单据的单据标识之后;所述索引拓扑序列根据索引信息的邻接表和用于存储相应索引信息的入度的入度数组构建,任一索引信息的入度用于指示相应索引信息所依赖的索引信息的数量,任一索引信息在所述索引拓扑序列中的排列位置,位于相应索引信息所依赖的索引信息在所述索引拓扑序列中的排列位置之后;任一索引信息所依赖的索引信息包括:相应索引信息对应的单据所依赖的单据的索引信息;所述映射关系图包括:各个索引信息的标识映射序列,任一标识映射序列包括相应索引信息对应的各个单据的单据标识,且任一标识映射序列中的各个单据标识之间的排列关系,与相应单据标识在所述标识拓扑序列中的排列关系保持一致;以及,按照各个索引信息在所述索引拓扑序列中的排列顺序,对所述映射关系图中的各个索引信息的标识映射序列进行排序处理;
在所述业务终端中,按照所述N个单据的排列顺序显示所述N个单据。
2.如权利要求1所述的方法,其特征在于,所述根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序,包括:
根据所述N个单据之间的依赖关系,采用所述N个单据的单据标识构建标识拓扑序列;
根据所述N个单据之间的依赖关系,采用所述N个单据对应的M个索引信息构建索引拓扑序列;
根据所述标识拓扑序列以及所述M个索引信息建立映射关系图;
按照各个索引信息在所述索引拓扑序列中的排列顺序,对所述映射关系图中的各个索引信息的标识映射序列进行排序处理,得到排序结果;其中,所述排序结果用于指示所述N个单据的排列顺序。
3.如权利要求2所述的方法,其特征在于,所述根据所述N个单据之间的依赖关系,采用所述N个单据的单据标识构建标识拓扑序列,包括:
根据所述N个单据之间的依赖关系以及所述N个单据的单据标识,构建每个单据的邻接表以及每个单据的入度数组;其中,任一单据的邻接表用于存储:依赖于相应单据的各个单据的单据标识;
根据所述每个单据的邻接表以及所述每个单据的入度数组,采用所述N个单据的单据标识构建所述标识拓扑序列。
4.如权利要求3所述的方法,其特征在于,所述根据所述N个单据之间的依赖关系以及所述N个单据的单据标识,构建每个单据的邻接表以及每个单据的入度数组,包括:
建立所述N个单据中每个单据的邻接表以及所述每个单据的入度数组;其中,建立的任一邻接表为空,建立的任一入度数组所存储入度为无效值;
遍历所述N个单据的单据标识,将当前遍历的单据标识所指示的单据作为第一单据;
若根据所述N个单据之间的依赖关系,确定所述N个单据中存在所述第一单据所依赖的第二单据,则将所述第一单据的单据标识添加至各个第二单据的邻接表中,将第二单据的数量作为所述第一单据的入度,添加至所述第一单据的入度数组中,并继续遍历所述N个单据的单据标识;
若根据所述N个单据之间的依赖关系,确定所述N个单据中未存在所述第一单据所依赖的第二单据,则继续遍历所述N个单据的单据标识;
在所述N个单据的单据标识均被遍历后,确定各个单据的邻接表和各个单据的入度数组均构建完成。
5.如权利要求3所述的方法,其特征在于,所述根据所述每个单据的邻接表以及所述每个单据的入度数组,采用所述N个单据的单据标识构建所述标识拓扑序列,包括:
建立空的标识拓扑序列以及空的第一队列;
每基于所述每个单据的入度数组所存储的入度,检测到所述N个单据的单据标识中存在目标单据标识时,将存在的目标单据标识入队至所述第一队列中;其中,所述目标单据标识满足如下条件:指示的单据的入度为无效值;
若所述第一队列不为空,则持续地将所述第一队列中处于队头位置的单据标识进行出队,每执行一次出队操作,则将当前出队的单据标识添加至所述标识拓扑序列中,并降低当前单据的邻接表所指示的各个单据的入度数组所存储的入度,所述当前单据是指当前出队的单据标识所指示的单据;
若所述第一队列为空,且所述N个单据的单据标识均被执行过入队操作,则确定所述标识拓扑序列构建完成。
6.如权利要求2所述的方法,其特征在于,所述根据所述N个单据之间的依赖关系,采用所述N个单据对应的M个索引信息构建索引拓扑序列,包括:
根据所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息,构建每个索引信息的邻接表以及每个索引信息的入度数组;其中,任一索引信息的邻接表用于存储:依赖于相应索引信息的各个索引信息;
根据所述每个索引信息的邻接表以及所述每个索引信息的入度数组,采用所述M个索引信息构建所述索引拓扑序列。
7.如权利要求6所述的方法,其特征在于,所述根据所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息,构建每个索引信息的邻接表以及每个索引信息的入度数组,包括:
针对所述N个单据对应的M个索引信息,建立每个索引信息的邻接表和所述每个索引信息的入度数组;其中,建立的任一邻接表为空,建立的任一入度数组所存储入度为无效值;
遍历所述M个索引信息,将当前遍历的索引信息作为第一索引信息;
若根据所述N个单据之间的依赖关系,确定所述M个索引信息中存在所述第一索引信息所依赖的第二索引信息,则将所述第一索引信息添加至各个第二索引信息的邻接表中,将第二索引信息的数量作为所述第一索引信息的入度,添加至所述第一索引信息的入度数组中,并继续遍历所述M个索引信息;
若根据所述N个单据之间的依赖关系,确定所述M个索引信息中未存在所述第一索引信息所依赖的第二索引信息,则继续遍历所述M个索引信息;
在所述M个索引信息均被遍历后,确定各个索引信息的邻接表以及各个索引信息的入度数组均构建完成。
8.如权利要求6所述的方法,其特征在于,所述根据所述每个索引信息的邻接表以及所述每个索引信息的入度数组,采用所述M个索引信息构建所述索引拓扑序列,包括:
建立空的索引拓扑序列以及空的第二队列;
每基于所述每个索引信息的入度数组所存储的入度,检测到所述M个索引信息存在目标索引信息时,将存在的目标索引信息入队至所述第二队列中;其中,所述目标索引信息满足如下条件:对应的入度为无效值;
若所述第二队列不为空,则持续地将所述第二队列中处于队头位置的索引信息进行出队,每执行一次出队操作,则将当前出队的索引信息添加至所述索引拓扑序列中,并降低当前邻接表中的各个索引信息的入度数组所存储的入度,所述当前邻接表是指当前出队的索引信息的邻接表;
若所述第二队列为空,且所述M个索引信息均被执行过入队操作,则确定所述索引拓扑序列构建完成。
9.如权利要求1-8任一项所述的方法,其特征在于,所述查询请求携带单据索引条件,所述根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据,包括:
从所述业务终端的查询请求中获取所述单据索引条件,并根据所述单据数据库中的各个单据的索引信息,在所述单据数据库中查找满足所述单据索引条件的各个索引信息所对应的单据,得到候选单据集;
在所述单据数据库中,查找被所述候选单据集中的至少一个单据所依赖的其他单据,得到依赖单据集;
整合所述候选单据集和所述依赖单据集,得到所述N个单据。
10.如权利要求9所述的方法,其特征在于,任一索引信息和所述单据索引条件均包括以下至少一个索引字段:类型字段、时间字段、对象字段以及状态字段;其中,类型字段的取值为单据类型,时间字段的取值为单据的提交时间,对象字段的取值为单据的提交对象的对象标识,状态字段的取值为单据的审批状态;
其中,当任一索引信息中的各个索引字段的取值,分别与相应索引字段在所述单据索引条件中的取值相匹配时,所述任一索引信息被判定满足所述单据索引条件。
11.如权利要求10所述的方法,其特征在于,所述单据索引条件中的任一索引字段具有至少一个取值;
所述根据所述单据数据库中的各个单据的索引信息,在所述单据数据库中查找满足所述单据索引条件的各个索引信息所对应的单据,得到候选单据集,包括:
根据所述单据索引条件中的各个索引字段的取值,构建至少一个查询索引;一个查询索引包括每个索引字段中的一个取值;
将构建出的各个查询索引封装至不同的查询任务中;一个查询任务中包括一个查询索引;
并发地调用各个查询任务,在所述单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据;
汇总所述各个查询任务所查询出的单据,得到所述候选单据集。
12.如权利要求11所述的方法,其特征在于,所述并发地调用各个查询任务,在所述单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据,包括:
将所述各个查询任务添加至协程池中;
通过所述协程池并发地调用所述各个查询任务,基于分布式锁在所述单据数据库中查询与相应查询索引相匹配的索引信息所对应的单据。
13.一种数据处理装置,其特征在于,包括:
处理单元,用于根据业务终端的查询请求,在单据数据库中进行单据召回处理,得到N个单据,N为大于1的正整数;
所述处理单元,还用于确定所述N个单据之间的依赖关系以及所述N个单据对应的M个索引信息;其中,一个索引信息用于索引至少一个单据,M为正整数;任一单据所依赖的单据包括:在审批相应单据时,所需参考的单据;
所述处理单元,还用于根据所述N个单据之间的依赖关系和所述N个单据对应的M个索引信息,确定所述N个单据的排列顺序;其中,任一单据的排列顺序,位于相应单据所依赖的各个单据的排列顺序之后,且同一索引信息对应的各个单据的排列顺序连续;确定排序顺序的过程包括:构建标识拓扑序列、索引拓扑序列和映射关系图,所述标识拓扑序列根据每个单据的邻接表和用于存储相应单据的入度的入度数组构建,任一单据的入度用于指示相应单据所依赖的单据的数量,在所述标识拓扑序列中,任一单据的单据标识位于相应单据所依赖的各个单据的单据标识之后;所述索引拓扑序列根据索引信息的邻接表和用于存储相应索引信息的入度的入度数组构建,任一索引信息的入度用于指示相应索引信息所依赖的索引信息的数量,任一索引信息在所述索引拓扑序列中的排列位置,位于相应索引信息所依赖的索引信息在所述索引拓扑序列中的排列位置之后;任一索引信息所依赖的索引信息包括:相应索引信息对应的单据所依赖的单据的索引信息;所述映射关系图包括:各个索引信息的标识映射序列,任一标识映射序列包括相应索引信息对应的各个单据的单据标识,且任一标识映射序列中的各个单据标识之间的排列关系,与相应单据标识在所述标识拓扑序列中的排列关系保持一致;以及,按照各个索引信息在所述索引拓扑序列中的排列顺序,对所述映射关系图中的各个索引信息的标识映射序列进行排序处理;
输出单元,用于在所述业务终端中,按照所述N个单据的排列顺序显示所述N个单据。
14.一种计算机设备,包括输入接口和输出接口,其特征在于,还包括:处理器以及计算机可读存储介质;
所述计算机可读存储介质,用于存储计算机程序;
所述处理器,用于运行所述计算机程序,实现如权利要求1-12任一项所述的数据处理方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行如权利要求1-12任一项所述的数据处理方法。
16.一种计算机程序产品,其特征在于,所述计算机程序产品包括一条或多条指令;所述计算机程序中的一条或多条指令被处理器执行时,实现如权利要求1-12任一项所述的数据处理方法。
CN202410104608.2A 2024-01-25 2024-01-25 数据处理方法、装置、设备及存储介质 Active CN117635081B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410104608.2A CN117635081B (zh) 2024-01-25 2024-01-25 数据处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410104608.2A CN117635081B (zh) 2024-01-25 2024-01-25 数据处理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN117635081A CN117635081A (zh) 2024-03-01
CN117635081B true CN117635081B (zh) 2024-04-16

Family

ID=90025550

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410104608.2A Active CN117635081B (zh) 2024-01-25 2024-01-25 数据处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117635081B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109241116A (zh) * 2018-09-29 2019-01-18 金蝶软件(中国)有限公司 一种业务关联信息的展示方法及相关设备
CN111047422A (zh) * 2019-09-18 2020-04-21 淮安市建筑设计研究院有限公司 一种基于大数据的企业财务报销管理系统
CN112347099A (zh) * 2020-10-27 2021-02-09 口碑(上海)信息技术有限公司 数据处理方法、装置、计算设备及计算机可读存储介质
CN112380402A (zh) * 2020-11-16 2021-02-19 零氪科技(天津)有限公司 医疗单据处理方法、装置及系统
CN113888245A (zh) * 2021-09-30 2022-01-04 北京中电普华信息技术有限公司 一种基于支票管理的费用报销业务处理方法及装置
CN114493185A (zh) * 2022-01-06 2022-05-13 北京希瑞亚斯科技有限公司 审批处理方法、装置、系统、电子设备、存储介质及产品
CN115700826A (zh) * 2021-07-30 2023-02-07 腾讯科技(深圳)有限公司 单据处理、单据展示方法、装置、计算机设备和存储介质
CN115905353A (zh) * 2022-11-08 2023-04-04 金蝶软件(中国)有限公司 关联数据导出、导入方法、装置、设备及存储介质
CN116205207A (zh) * 2022-12-23 2023-06-02 航信云享科技有限公司 一种根据规则配置自动生成业务单据的方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7680793B2 (en) * 2005-10-07 2010-03-16 Oracle International Corporation Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers
EP2869246A1 (en) * 2013-09-06 2015-05-06 ISP Co., Ltd. Record data management server and record data management program

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109241116A (zh) * 2018-09-29 2019-01-18 金蝶软件(中国)有限公司 一种业务关联信息的展示方法及相关设备
CN111047422A (zh) * 2019-09-18 2020-04-21 淮安市建筑设计研究院有限公司 一种基于大数据的企业财务报销管理系统
CN112347099A (zh) * 2020-10-27 2021-02-09 口碑(上海)信息技术有限公司 数据处理方法、装置、计算设备及计算机可读存储介质
CN112380402A (zh) * 2020-11-16 2021-02-19 零氪科技(天津)有限公司 医疗单据处理方法、装置及系统
CN115700826A (zh) * 2021-07-30 2023-02-07 腾讯科技(深圳)有限公司 单据处理、单据展示方法、装置、计算机设备和存储介质
CN113888245A (zh) * 2021-09-30 2022-01-04 北京中电普华信息技术有限公司 一种基于支票管理的费用报销业务处理方法及装置
CN114493185A (zh) * 2022-01-06 2022-05-13 北京希瑞亚斯科技有限公司 审批处理方法、装置、系统、电子设备、存储介质及产品
CN115905353A (zh) * 2022-11-08 2023-04-04 金蝶软件(中国)有限公司 关联数据导出、导入方法、装置、设备及存储介质
CN116205207A (zh) * 2022-12-23 2023-06-02 航信云享科技有限公司 一种根据规则配置自动生成业务单据的方法及系统

Also Published As

Publication number Publication date
CN117635081A (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
CN112800095B (zh) 一种数据处理方法、装置、设备及存储介质
CN106357778A (zh) 一种会话信息的共享方法、装置及系统
CN110119292A (zh) 系统运行参数查询方法、匹配方法、装置及节点设备
CN112434015B (zh) 数据存储的方法、装置、电子设备及介质
CN112084179A (zh) 一种数据处理的方法、装置、设备及存储介质
CN108038253B (zh) 一种日志查询的处理方法及装置
CN108268468A (zh) 一种大数据的分析方法及系统
CN107844488A (zh) 数据查询方法和装置
CN108154024A (zh) 一种数据检索方法、装置及电子设备
WO2022057525A1 (zh) 一种数据找回方法、装置、电子设备及存储介质
CN117635081B (zh) 数据处理方法、装置、设备及存储介质
CN115481026A (zh) 测试案例的生成方法、装置、计算机设备、存储介质
CN115687276A (zh) 一种文件处理方法、装置、电子设备及存储介质
CN116542668A (zh) 一种基于区块链的数据处理方法、设备及可读存储介质
CN112256689A (zh) 业务数据清洗方法、装置、电子设备
CN108322380B (zh) 调用数据的方法和装置以及推送信息的方法和装置
CN116701719B (zh) 一种数据处理方法、装置、计算机设备以及可读存储介质
CN110889040B (zh) 用于推送信息的方法和装置
CN116954474A (zh) 数据读取的方法、装置、设备、存储介质和程序产品
CN117520442A (zh) 数据同步方法、装置、计算机程序产品、设备及存储介质
CN115827240A (zh) 数据查询方法、装置、设备、系统以及存储介质
CN116846748A (zh) 网络配置管理方法及相关装置
CN114185949A (zh) 信息登记方法、装置、计算机设备、存储介质和程序产品
CN117993966A (zh) 虚拟资源发放方法、装置及存储介质
CN117354389A (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