CN111913804A - 访前报告的生成方法、装置、电子设备及存储介质 - Google Patents
访前报告的生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111913804A CN111913804A CN202010754826.2A CN202010754826A CN111913804A CN 111913804 A CN111913804 A CN 111913804A CN 202010754826 A CN202010754826 A CN 202010754826A CN 111913804 A CN111913804 A CN 111913804A
- Authority
- CN
- China
- Prior art keywords
- visit report
- report generation
- visit
- thread
- task queue
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000002159 abnormal effect Effects 0.000 claims description 19
- 238000005516 engineering process Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种访前报告的生成方法、装置、电子设备及存储介质,涉及该方法包括:在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中;根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;调用预设的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M;针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。采用本申请实施例有利于提高访前报告的生成效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种访前报告的生成方法、装置、电子设备及存储介质。
背景技术
企业业务人员在拜访客户前通常需要做充分的准备工作,访前报告就是其中极为重要的一项。访前报告一般包括客户基本信息、主要资本运作、风险、重大事项、业务机会分析等内容,现有业务人员生成访前报告使用较为广泛的方法是手工拼接,但是,由于平台不同、更新时间不同等因素,手工拼接的访前报告中数据的可靠性并不能得到保证,再者,人工获取数据不仅人力成本高,且效率极低。为解决上述问题,相关方案中采用单体架构,利用机器从确定的数据源提取数据,结合POI(Poor Obfuscation Implementation,简洁版的模糊实现)技术自动生成访前报告,但是,由于数据量大、运算时间长、依赖生成Word或PDF的组件能力有限等问题,导致生成访前报告的效率仍然较低。
发明内容
为解决上述问题,本申请提供了一种访前报告的生成方法、装置、电子设备及存储介质,有利于提高访前报告的生成效率。
本申请实施例第一方面提供了一种访前报告的生成方法,该方法包括:
在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中;
根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
调用预设的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M;
针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。
结合第一方面,在一种可能的实施方式中,所述调用预设的N条线程并发执行M条所述访前报告生成请求的步骤,包括:
将未消费的M条所述访前报告生成请求放入线程池中;
调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求。
结合第一方面,在一种可能的实施方式中,所述调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求,包括:
所述N条线程中每条线程均采用以下步骤并发执行M条所述访前报告生成请求中对应的所述访前报告生成请求:
从目标数据地址获取数据,对获取到的数据进行组装;
获取目标Word模板,通过POI技术使用组装后的数据填充目标Word模板,得到Word格式的访前报告,将Word格式的访前报告转为PDF格式的访前报告;
在执行过程中记录执行日志。
结合第一方面,在一种可能的实施方式中,所述根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求的步骤,包括:
当集群中预设定时任务到达时,执行带有行锁的查询指令,以从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
所述任务队列表中记录有每条所述访前报告生成请求对应的接收地址;所述将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址的步骤,包括:
从所述任务队列表中获取所述第一目标线程执行的所述访前报告生成请求对应的接收地址为目标接收地址;
将所述第一目标线程生成的访前报告发送至所述目标接收地址。
结合第一方面,在一种可能的实施方式中,所述方法还包括:
针对所述N条线程中执行结果为失败的第二目标线程,记录失败日志和失败原因,并将所述第二目标线程执行的所述访前报告生成请求在所述任务队列表中的消费状态修改为未消费。
结合第一方面,在一种可能的实施方式中,所述线程池中设置有异常捕获机制;所述方法还包括:
在所述线程池中存在运行中的线程时,通过所述异常捕获机制创建一守护线程对所述线程池内所有运行中的线程进行监听;
在组装数据时,通过所述异常捕获机制进行异常数据的捕获,记录异常数据的来源。
本申请实施例第二方面提供了一种访前报告的生成装置,该装置包括:
请求获取模块,用于在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中;
请求查询模块,用于根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
并发执行模块,用于调用预设的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M;
报告推送模块,用于针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。
本申请实施例第三方面提供了一种电子设备,该电子设备包括输入设备和输出设备,还包括处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行上述第一方面所述的方法中的步骤。
本申请实施例第四方面提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行上述第一方面所述的方法中的步骤。
与现有技术相比,本申请实施例在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中,然后根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求,再调用预设的N条线程并发执行M条所述访前报告生成请求,最后针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。这样通过服务器集群中多线程并发的方式处理目标客户端提交的访前报告生成请求,生成访前报告,相比单台服务器单线程启用的访前报告生成方案,数据运算的峰值处理能力成倍提升,有利于提高访前报告的生成效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种网络系统架构图;
图2为本申请实施例提供的一种访前报告的生成方法的流程示意图;
图3为本申请实施例提供的一种集群中节点线程池的示例图;
图4为本申请实施例提供的另一种访前报告的生成方法的流程示意图;
图5为本申请实施例提供的一种访前报告的生成装置的结构示意图;
图6为本申请实施例提供的另一种访前报告的生成装置的结构示意图;
图7为本申请实施例提供的另一种访前报告的生成装置的结构示意图;
图8为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。
本申请实施例提供一种访前报告的自动生成方案,以解决现有访前报告生成方案中单主机单线程带来的峰值处理瓶颈问题。具体的,该方案可基于图1所示的网络系统进行实施,如图1所示,网络系统中至少包括企业业务人日常工作中涉及到的多类客户端,例如:邮箱端、证券端、银行端等,以及服务器集群。客户端通过集群暴露的接口提交访前报告生成请求,集群中每个节点上部署的代码相同,在定时任务到达时每个节点同时从任务队列表获取未消费的访前报告生成请求,且每个节点设有对应的线程池,该线程池可以是ThreadPoolExecutor线程池,线程池中设定多条线程并发执行客户端提交的访前报告生成请求,通过异常捕获机制对运行中的线程进行异常监控,最终将成功生成的访前报告返回至客户端或预设接收地址。由于集群中多节点多线程的采用,针对海量的访前报告生成请求,可充分利用集群中的线程资源进行执行处理,经过测试,集群中节点CPU(centralprocessing unit,中央处理器)对数据运算的峰值处理能力可提高至原来的48倍,访前报告生成的全流程处理时间由原来的5-10分钟缩短至8-15秒,效率显著提升。
基于图1所示的网络系统,以下结合相关附图对本申请实施例提出的访前报告的生成方法进行详细阐述,请参见图2,图2为本申请实施例提供的一种访前报告的生成方法的流程示意图,该访前报告的生成方法由集群中的节点执行,如图2所示,包括步骤S21-S24:
S21,在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中。
本申请具体实施例中,目标客户端可以是单个应用的客户端,也可以是多个应用的客户端,包括但不限于证券端、银行端、邮箱端,任务队列表为自定义的邮箱端、银行端、证券端等多端与集群节点交互的阻塞队列。
集群中任意节点在接收到目标客户端提交的访前报告生成请求时,将其逐条加入任务队列表,并记录每条访前报告生成请求入队的时间,以及生成访前报告后报告返回的路径或接收人的邮箱地址等信息,请参见表1:
表1
如表1所示,任务队列表可以包括序号(ID)、项目类型、入队时间、邮箱地址、提交地址、消费状态等信息,当然,还可以包括更多或更少的信息,表1仅仅为一种示例,并不对本方案造成限定。
S22,根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求。
本申请具体实施例中,查询指令即指查询条件语句,该查询指令通常带有forupdate行锁。消费状态可以理解为处理状态,例如:由集群中某一节点获取到并在线程池进行处理的访前报告生成请求,其消费状态就是已消费,而任务队列表中未成功生成访前报告的访前报告生成请求,其消费状态就是未消费,在数据库中的消费状态字段属性为“ONWAIT”。当集群中预设定时任务到达时,各节点执行带有行锁的查询指令,以从任务队列表中获取消费状态为未消费的M条访前报告生成请求,预设定时任务即指在预设时间到达时,集群中的节点执行从任务队列表中获取未消费的访前报告生成请求的任务,起着触发的作用。
另外,for update行锁是Oracle数据库自带的功能,此处在自定义的任务队列表上使用,由于集群中每个节点上部署的代码都相同,在定时任务到达时,集群中的多节点将同时执行从任务队列表中获取未消费的访前报告生成请求,未避免同一个未消费的访前报告生成请求被多节点多次执行,造成重复消费的情况,在查询条件语句后加上for update行锁,以保证集群中的节点不会获取到同一条未消费的访前报告生成请求。此外,为保证单线程能一直持有行锁,本申请中将数据库的自动提交事务改由手动提交,在节点执行的访前报告生成请求成功生成访前报告后,手动提交事务以释放行锁,若不手动提交的话,执行该访前报告生成请求的线程将一直持有行锁。可选的,上述查询指令还可以指定本次获取的未消费的访前报告生成请求的数量,例如:ROWNUM<;9即表示本次可获取8条未消费的访前报告生成请求。
S23,调用预设的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M。
本申请具体实施例中,如图3所示,集群中包括多个节点,每个节点均有对应的线程池,线程池内设定N条线程,此处线程数量N可根据实际情况动态设定,N接近于CPU的核数时为最优,此时每个节点线程池中有16条线程可执行获取到的M条访前报告生成请求,若实际中不需要这么大的并发,可适当减少N的数量,其中,N为大于1的正整数,且N大于或等于M。节点在获取到未消费的M条访前报告生成请求后,先将其放入对应的线程池,由线程池中每条线程执行一条访前报告生成请求,每条线程执行访前报告生成请求的步骤相同,区别在于每条访前报告生成请求针对的客户不同,因此,线程要获取、组装的数据和使用的Word模板会不同。
S24,针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。
本申请具体实施例中,N条线程中成功生成Word和PDF访前报告的线程,其返回的执行结果为成功,此类线程即第一目标线程。请再次参见表1,由于任务队列表中记录有每条所述访前报告生成请求对应的接收地址,针对该第一目标线程,先从任务队列表中获取其执行的访前报告生成请求对应的接收地址,将其确定为目标接收地址,然后将第一线程生成的访前报告发送至该目标接收地址。
在一种可能的实施方式中,所述方法还包括:
针对所述N条线程中执行结果为失败的第二目标线程,记录失败日志和失败原因,并将所述第二目标线程执行的所述访前报告生成请求在所述任务队列表中的消费状态修改为未消费。
本申请具体实施例中,N条线程中未成功生成Word和PDF访前报告的线程,其返回的执行结果为失败,此类线程即第二目标线程。鉴于一篇访前报告通常有数百个甚至更多的目标数据地址,在数据组装时,异常捕获机制可记录异常数据来源,而该异常数据可能是线程执行失败的原因之一,当然,线程执行失败的原因还可以是Word转PDF的外部工具启动失败或被占用、线程崩溃、线程阻塞,等等。一些实施例中,在修改消费状态后,等待预设时间(例如:3秒)向集群中剩余的节点发起重试(有条件重试),由其他节点来获取并执行本次执行失败的访前报告生成请求,若多次重试仍执行失败,则发送异常处理邮件,以提醒相应人员进行异常处理。该实施方式,一方面可以保证执行失败的访前报告生成请求能快速得到重新执行,另一方面,失败日志和失败原因的记录有利于异常处理人员快速找到问题所在。
在一种可能的实施方式中,所述方法还包括:
在所述线程池中存在运行中的线程时,通过所述异常捕获机制创建一守护线程对所述线程池内所有运行中的线程进行监听;
在组装数据时,通过所述异常捕获机制进行异常数据的捕获,记录异常数据的来源。
本申请具体实施例中,每个节点的线程池中均设置有异常捕获机制,异常捕获机制可创建一个守护线程对线程池内所有运行的线程进行监听,以避免某一个运行的线程异常时危及整个线程池内的线程。另外,每条线程在组装数据时,可通过异常捕获机制进行异常数据的捕获,记录异常数据的来源。
可以看出,本申请实施例在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中,然后根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求,再调用预设的N条线程并发执行M条所述访前报告生成请求,最后针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。这样通过服务器集群中多线程并发的方式处理目标客户端提交的访前报告生成请求,生成访前报告,相比单台服务器单线程启用的访前报告生成方案,数据运算的峰值处理能力成倍提升,有利于提高访前报告的生成效率。
请参见图4,图4为本申请实施例提供的另一种访前报告的生成方法的流程示意图,如图4所示,包括步骤S41-S45:
S41,在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中;
S42,根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
S43,将未消费的M条所述访前报告生成请求放入线程池中;
S44,调用所述线程池中的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M;
S45,针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。
本申请具体实施例中,N条线程中每条线程执行所述访前报告生成请求均采用以下步骤:从目标数据地址获取数据,对获取到的数据进行组装;获取目标Word模板,通过POI技术(一种具有对Microsoft Office格式档案读和写功能的开放源码函式库)使用组装后的数据填充目标Word模板,得到Word格式的访前报告,将Word格式的访前报告转为PDF格式的访前报告;在执行过程中记录执行日志。
本申请具体实施例中,因为每条访前报告生成请求对应的客户不同,因此要获取的数据不同、数据所在的目标地址不同,例如:执行A有限责任公司的访前报告生成请求可能会到X统计平台去获取数据,执行B银行股份有限公司的访前报告生成请求可能会到政府网站去获取数据,另外,每条访前报告生成请求可包括或指定目标数据地址,在从目标数据地址获取到数据后,将其组装成特定格式的数据,以备后续使用;其次,公司性质(例如:新三板、上市、非上市等)不同,要使用的Word模板也会不一样,每条访前报告生成请求可包括或指定目标Word模板;因此,N条线程中的一条线程仅执行M条访前报告生成请求中的一条访前报告生成请求,例如:A有限责任公司的访前报告生成请求运行在线程1,B银行股份有限公司的访前报告生成请求运行在线程2,C证券股份有限公司运行在线程n,等等。另外,Word转PDF需要依赖外部工具实现,若选用的工具不支持多线程,则可能会出现工具启动失败或工具被占用的情况,因此,本申请中对Word转PDF的外部工具加上应用锁,使其他要使用该外部工具的线程处于等待状态,以避免该外部工具启动失败或被占用。
需要说明的是,图4所示实施例中的部分步骤在图2所示的实施例中已有相关说明,为避免重复,此处不再赘述。
本申请实施例在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中,然后根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求,将未消费的M条所述访前报告生成请求放入线程池中;再调用线程池中的N条线程并发执行M条所述访前报告生成请求,最后针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。这样通过服务器集群中节点线程池的多线程并发处理目标客户端提交的访前报告生成请求,生成访前报告,相比单台服务器单线程启用的访前报告生成方案,数据运算的峰值处理能力成倍提升,有利于提高访前报告的生成效率。
基于上述方法实施例的描述,本申请实施例还提供一种访前报告的生成装置,所述访前报告的生成装置可以是运行于终端中的一个计算机程序(包括程序代码)。该访前报告的生成装置可以执行图2或图4所示的方法。请参见图5,该装置包括:
请求获取模块51,用于在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中;
请求查询模块52,用于根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
并发执行模块53,用于调用预设的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M;
报告推送模块54,用于针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。
在一种可选的实施方式中,在调用预设的N条线程并发执行M条所述访前报告生成请求方面,并发执行模块53,具体用于:
将未消费的M条所述访前报告生成请求放入线程池中;
调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求。
在一种可选的实施方式中,在调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求方面,并发执行模块53,具体用于:
从目标数据地址获取数据,对获取到的数据进行组装;
获取目标Word模板,通过POI技术使用组装后的数据填充目标Word模板,得到Word格式的访前报告,将Word格式的访前报告转为PDF格式的访前报告;
在执行过程中记录执行日志。
在一种可选的实施方式中,在根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求方面,请求查询模块52,具体用于:
当集群中预设定时任务到达时,执行带有行锁的查询指令,以从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
在将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址方面,报告推送模块53,具体用于:
从所述任务队列表中获取所述第一目标线程执行的所述访前报告生成请求对应的接收地址为目标接收地址;
将所述第一目标线程生成的访前报告发送至所述目标接收地址。
在一种可选的实施方式中,如图6所示,访前报告的生成装置还包括异常处理模块55;异常处理模块55用于:
针对所述N条线程中执行结果为失败的第二目标线程,记录失败日志和失败原因,并将所述第二目标线程执行的所述访前报告生成请求在所述任务队列表中的消费状态修改为未消费。
在一种可选的实施方式中,如图7所示,访前报告的生成装置还包括异常捕获模块56;异常捕获模块56用于:
在所述线程池中存在运行中的线程时,通过异常捕获机制创建一守护线程对所述线程池内所有运行中的线程进行监听;
在组装数据时,通过异常捕获机制进行异常数据的捕获,记录异常数据的来源。
本申请实施例提供的访前报告的生成装置在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中,然后根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求,再调用预设的N条线程并发执行M条所述访前报告生成请求,最后针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。这样通过多线程并发的方式处理目标客户端提交的访前报告生成请求,数据运算的峰值处理能力成倍提升,有利于提高访前报告的生成效率。
根据本申请的一个实施例,图5-图7所示的访前报告的生成装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,访前报告的生成装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图4中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图5-图7所示的装置设备,以及来实现本发明实施例的上述方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
基于上述方法实施例以及装置实施例的描述,本发明实施例还提供一种电子设备。请参见图8,该电子设备至少包括处理器81、输入设备82、输出设备83以及计算机存储介质84。其中,电子设备内的处理器81、输入设备82、输出设备83以及计算机存储介质84可通过总线或其他方式连接。
计算机存储介质84可以存储在电子设备的存储器中,所述计算机存储介质84用于存储计算机程序,所述计算机程序包括程序指令,所述处理器81用于执行所述计算机存储介质84存储的程序指令。处理器81(或称CPU(Central Processing Unit,中央处理器))是电子设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例提供的电子设备的处理器81可以用于进行一系列访前报告的生成处理,包括:
在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中;
根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
调用预设的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M;
针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。
在一个实施例中,处理器81执行所述调用预设的N条线程并发执行M条所述访前报告生成请求,包括:
将未消费的M条所述访前报告生成请求放入线程池中;
调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求。
在一个实施例中,处理器81执行所述调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求,包括:
处理器81调用所述N条线程中每条线程并发执行M条所述访前报告生成请求中对应的所述访前报告生成请求时用于:
从目标数据地址获取数据,对获取到的数据进行组装;
获取目标Word模板,通过POI技术使用组装后的数据填充目标Word模板,得到Word格式的访前报告,将Word格式的访前报告转为PDF格式的访前报告;
在执行过程中记录执行日志。
在一个实施例中,处理器81执行所述根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求,包括:
当集群中预设定时任务到达时,执行带有行锁的查询指令,以从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
所述任务队列表中记录有每条所述访前报告生成请求对应的接收地址;处理器81执行所述将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址,包括:
从所述任务队列表中获取所述第一目标线程执行的所述访前报告生成请求对应的接收地址为目标接收地址;
将所述第一目标线程生成的访前报告发送至所述目标接收地址。
在一个实施例中,处理器81还用于:针对所述N条线程中执行结果为失败的第二目标线程,记录失败日志和失败原因,并将所述第二目标线程执行的所述访前报告生成请求在所述任务队列表中的消费状态修改为未消费。
在一个实施例中,所述线程池中设置有异常捕获机制;处理器81还用于:
在所述线程池中存在运行中的线程时,通过所述异常捕获机制创建一守护线程对所述线程池内所有运行中的线程进行监听;
在组装数据时,通过所述异常捕获机制进行异常数据的捕获,记录异常数据的来源。
示例性的,上述电子设备可以是主机、服务器、云端服务器等。电子设备可包括但不仅限于处理器81、输入设备82、输出设备83以及计算机存储介质84。本领域技术人员可以理解,所述示意图仅仅是电子设备的示例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
需要说明的是,由于电子设备的处理器81执行计算机程序时实现上述的访前报告的生成方法中的步骤,因此上述访前报告的生成方法的实施例均适用于该电子设备,且均能达到相同或相似的有益效果。
本申请实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是电子设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端中的内置存储介质,当然也可以包括终端所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器81加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器81的计算机存储介质。在一个实施例中,可由处理器81加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关访前报告的生成方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器81加载并执行如下步骤:
在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中;
根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
调用预设的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M;
针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。
在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤:
将未消费的M条所述访前报告生成请求放入线程池中;
调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求。
在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤:
从目标数据地址获取数据,对获取到的数据进行组装;
获取目标Word模板,通过POI技术使用组装后的数据填充目标Word模板,得到Word格式的访前报告,将Word格式的访前报告转为PDF格式的访前报告;
在执行过程中记录执行日志。
在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤:
当集群中预设定时任务到达时,执行带有行锁的查询指令,以从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤:
从所述任务队列表中获取所述第一目标线程执行的所述访前报告生成请求对应的接收地址为目标接收地址;
将所述第一目标线程生成的访前报告发送至所述目标接收地址。
在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤:
针对所述N条线程中执行结果为失败的第二目标线程,记录失败日志和失败原因,并将所述第二目标线程执行的所述访前报告生成请求在所述任务队列表中的消费状态修改为未消费。
在一种示例中,计算机存储介质中的一条或多条指令由处理器81加载时还执行如下步骤:
在所述线程池中存在运行中的线程时,通过所述异常捕获机制创建一守护线程对所述线程池内所有运行中的线程进行监听;
在组装数据时,通过所述异常捕获机制进行异常数据的捕获,记录异常数据的来源。
需要说明的是,由于计算机存储介质的计算机程序被处理器执行时实现上述的访前报告的生成方法中的步骤,因此上述访前报告的生成方法的所有实施例或实施方式均适用于该计算机存储介质,且均能达到相同或相似的有益效果。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种访前报告的生成方法,其特征在于,所述方法包括:
在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中;
根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
调用预设的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M;
针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。
2.根据权利要求1所述的方法,其特征在于,所述调用预设的N条线程并发执行M条所述访前报告生成请求的步骤,包括:
将未消费的M条所述访前报告生成请求放入线程池中;
调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求。
3.根据权利要求2所述的方法,其特征在于,所述调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求,包括:
所述N条线程中每条线程均采用以下步骤并发执行M条所述访前报告生成请求中对应的所述访前报告生成请求:
从目标数据地址获取数据,对获取到的数据进行组装;
获取目标Word模板,通过POI技术使用组装后的数据填充目标Word模板,得到Word格式的访前报告,将Word格式的访前报告转为PDF格式的访前报告;
在执行过程中记录执行日志。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求的步骤,包括:
当集群中预设定时任务到达时,执行带有行锁的查询指令,以从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
所述任务队列表中记录有每条所述访前报告生成请求对应的接收地址;所述将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址的步骤,包括:
从所述任务队列表中获取所述第一目标线程执行的所述访前报告生成请求对应的接收地址为目标接收地址;
将所述第一目标线程生成的访前报告发送至所述目标接收地址。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
针对所述N条线程中执行结果为失败的第二目标线程,记录失败日志和失败原因,并将所述第二目标线程执行的所述访前报告生成请求在所述任务队列表中的消费状态修改为未消费。
6.根据权利要求2所述的方法,其特征在于,所述线程池中设置有异常捕获机制;所述方法还包括:
在所述线程池中存在运行中的线程时,通过所述异常捕获机制创建一守护线程对所述线程池内所有运行中的线程进行监听;
在组装数据时,通过所述异常捕获机制进行异常数据的捕获,记录异常数据的来源。
7.一种访前报告的生成装置,其特征在于,所述装置包括:
请求获取模块,用于在获取到用户通过目标客户端提交的访前报告生成请求时,将所述访前报告生成请求加入任务队列表中;
请求查询模块,用于根据查询指令从所述任务队列表中获取消费状态为未消费的M条所述访前报告生成请求;
并发执行模块,用于调用预设的N条线程并发执行M条所述访前报告生成请求,所述N大于或等于所述M;
报告推送模块,用于针对所述N条线程中执行结果为成功的第一目标线程,将所述第一目标线程生成的访前报告发送至所述任务队列表中的接收地址。
8.根据权利要求7所述的装置,其特征在于,在调用预设的N条线程并发执行M条所述访前报告生成请求方面,所述并发执行模块,具体用于:
将未消费的M条所述访前报告生成请求放入线程池中;
调用所述线程池中的所述N条线程并发执行M条所述访前报告生成请求。
9.一种电子设备,包括输入设备和输出设备,其特征在于,还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-6任一项所述的方法中的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1-6任一项所述的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010754826.2A CN111913804A (zh) | 2020-07-30 | 2020-07-30 | 访前报告的生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010754826.2A CN111913804A (zh) | 2020-07-30 | 2020-07-30 | 访前报告的生成方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111913804A true CN111913804A (zh) | 2020-11-10 |
Family
ID=73286887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010754826.2A Pending CN111913804A (zh) | 2020-07-30 | 2020-07-30 | 访前报告的生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111913804A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268501A (zh) * | 2021-05-26 | 2021-08-17 | 杭州迪普科技股份有限公司 | 一种报告生成方法及装置 |
CN113779949A (zh) * | 2021-09-17 | 2021-12-10 | 北京天融信网络安全技术有限公司 | 一种报告生成方法、装置、电子设备、存储介质及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700938A (zh) * | 2016-01-15 | 2016-06-22 | 浪潮通用软件有限公司 | 一种多线程处理数据的方法及装置 |
CN106095585A (zh) * | 2016-06-22 | 2016-11-09 | 中国建设银行股份有限公司 | 任务请求处理方法、装置和企业信息系统 |
CN109298924A (zh) * | 2018-09-26 | 2019-02-01 | 中国平安人寿保险股份有限公司 | 定时任务的管理方法、计算机可读存储介质和终端设备 |
CN110413390A (zh) * | 2019-07-24 | 2019-11-05 | 深圳市盟天科技有限公司 | 线程任务处理方法、装置、服务器及存储介质 |
-
2020
- 2020-07-30 CN CN202010754826.2A patent/CN111913804A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700938A (zh) * | 2016-01-15 | 2016-06-22 | 浪潮通用软件有限公司 | 一种多线程处理数据的方法及装置 |
CN106095585A (zh) * | 2016-06-22 | 2016-11-09 | 中国建设银行股份有限公司 | 任务请求处理方法、装置和企业信息系统 |
CN109298924A (zh) * | 2018-09-26 | 2019-02-01 | 中国平安人寿保险股份有限公司 | 定时任务的管理方法、计算机可读存储介质和终端设备 |
CN110413390A (zh) * | 2019-07-24 | 2019-11-05 | 深圳市盟天科技有限公司 | 线程任务处理方法、装置、服务器及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268501A (zh) * | 2021-05-26 | 2021-08-17 | 杭州迪普科技股份有限公司 | 一种报告生成方法及装置 |
CN113779949A (zh) * | 2021-09-17 | 2021-12-10 | 北京天融信网络安全技术有限公司 | 一种报告生成方法、装置、电子设备、存储介质及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7698602B2 (en) | Systems, methods and computer products for trace capability per work unit | |
CN112463144B (zh) | 分布式存储的命令行服务方法、系统、终端及存储介质 | |
CN111245900B (zh) | 一种分布式消息发送的处理系统及其处理方法 | |
CN109814910A (zh) | 自动化灰度发布方法、装置、计算机系统及存储介质 | |
CN107241315B (zh) | 银行网关接口的接入方法、装置及计算机可读存储介质 | |
US9189303B2 (en) | Shadow queues for recovery of messages | |
CN111835467B (zh) | 消息发送方法、装置、计算机设备和存储介质 | |
CN111198769A (zh) | 信息处理方法及其系统、计算机系统及计算机可读介质 | |
CN111913804A (zh) | 访前报告的生成方法、装置、电子设备及存储介质 | |
US9880897B2 (en) | Failure mode identification and reporting | |
US20160150015A1 (en) | Methods for integrating applications with a data storage network and devices thereof | |
US8254391B2 (en) | Method and system for performing blocking of messages on errors in message stream | |
CN111859205A (zh) | 一种用于批量处理任务的解析方法及设备 | |
CN110888791A (zh) | 一种日志处理方法、装置、设备和存储介质 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN108241616B (zh) | 消息推送方法和装置 | |
CN108062224B (zh) | 基于文件句柄的数据读写方法、装置及计算设备 | |
CN112445860A (zh) | 一种处理分布式事务的方法和装置 | |
CN115934272A (zh) | 一种联机批量任务处理方法及装置 | |
CN115499493A (zh) | 异步事务处理方法、装置、存储介质及计算机设备 | |
CN115563226A (zh) | 基于数据库的数据消费方法、控制装置及可读存储介质 | |
CN111261206B (zh) | 一种读写方法、装置和电子设备及可读存储介质 | |
CN112597227A (zh) | 电力配网调度中的信息处理方法、装置及存储介质 | |
CN110908820A (zh) | 一种异步任务的执行方法、装置、设备及存储介质 | |
CN115866017B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201110 |