CN117149166A - 电磁水表数据对接代码生成方法及装置 - Google Patents

电磁水表数据对接代码生成方法及装置 Download PDF

Info

Publication number
CN117149166A
CN117149166A CN202311416774.8A CN202311416774A CN117149166A CN 117149166 A CN117149166 A CN 117149166A CN 202311416774 A CN202311416774 A CN 202311416774A CN 117149166 A CN117149166 A CN 117149166A
Authority
CN
China
Prior art keywords
pushing
code
data
mode
generating
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.)
Granted
Application number
CN202311416774.8A
Other languages
English (en)
Other versions
CN117149166B (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.)
Jiangsu Degao Technology Co ltd
Original Assignee
Jiangsu Degao Technology 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 Jiangsu Degao Technology Co ltd filed Critical Jiangsu Degao Technology Co ltd
Priority to CN202311416774.8A priority Critical patent/CN117149166B/zh
Publication of CN117149166A publication Critical patent/CN117149166A/zh
Application granted granted Critical
Publication of CN117149166B publication Critical patent/CN117149166B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Selective Calling Equipment (AREA)

Abstract

本公开提供了电磁水表数据对接代码生成方法及装置,该方法包括:接收代码生成请求,代码生成请求中至少包括当前代码生成所需的参数;根据参数生成实体类;根据参数定义接口名称,并生成相应的接口;根据参数生成实现层类代码,并根据定义的接口名称实现接口;获取电磁水表推送信息的推送方式,并根据推送方式在实现层类代码中添加相应的固定代码块,固定代码块为预先设置,不同的固定代码块中包含不同的推送逻辑;根据参数生成job层代码,完成代码生成。本公开能够适用于大业务量下数据对接业务的实现,有效降低开发成本和运维成本,提高工作效率,提高代码生成的准确性。

Description

电磁水表数据对接代码生成方法及装置
技术领域
本公开涉及电磁水表技术领域,尤其涉及电磁水表数据对接代码生成方法及装置。
背景技术
随着电磁水表在生产生活中的广泛应用,电磁水表相关的数据推送与对接量日益增加,由于业务量增加导致开发成本与运维成本随之增加,目前市面上的代码生成方法无法适应水行业以及数据对接业务,导致自动生成的代码准确率低,无法降低开发成本和运维成本。
发明内容
本公开针对上述问题,提出血压计算方法及装置。
为了解决上述技术问题中的至少一个,本公开提出如下技术方案:
第一方面,提供了电磁水表数据对接代码生成方法,包括以下步骤:
接收代码生成请求,代码生成请求中至少包括当前代码生成所需的参数;
根据参数生成实体类;
根据参数定义接口名称,并生成相应的接口;
根据参数生成实现层类代码,并根据定义的接口名称实现接口;
获取电磁水表推送信息的推送方式,并根据推送方式在实现层类代码中添加相应的固定代码块,固定代码块为预先设置,不同的固定代码块中包含不同的推送逻辑;
根据参数生成job层代码,完成代码生成。
第二方面,提供了电磁水表数据对接代码生成装置,用于执行上述任一电磁水表数据对接代码生成方法,包括:
参数获取模块,用于接收代码生成请求,代码生成请求中至少包括当前代码生成所需的参数;
实体类代码生成模块,用于根据参数生成实体类;
接口生成模块,用于根据参数定义接口名称,并生成相应的接口;
实现层类代码生成模块,用于根据参数生成实现层类代码,并根据定义的接口名称实现接口;
固定代码块添加模块,用于获取电磁水表推送信息的推送方式,并根据推送方式在实现层类代码中添加相应的固定代码块,固定代码块为预先设置,不同的固定代码块中包含不同的推送逻辑;
job层代码,用于根据参数生成job层代码。
第三方面,提供了一种计算机设备,计算机设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序或指令集由处理器加载并执行以实现上述任一的电磁水表数据对接代码生成方法。
第三方面,提供了一种计算机可读存储介质,计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行上述任一的电磁水表数据对接代码生成方法。
第四方面,提供了计算机可读存储介质,在计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行上述任一血压计算方法。
本公开的有益效果为:提供了一种电磁水表数据对接代码生成方法及装置,操作人员只需提供必要的参数信息,即可生成实体类、接口、实现层代码和job层代码,生成的代码能够完整实现电磁水表数据对接的相关功能,节省开发时间,降低开发成本,减轻运维负担,能够适应大业务量下数据对接业务的实现;通过根据不同推送方式预设固定代码块,当用户对数据对接存在特殊要求时,代码同样能够准确且快速的生成,提高了电磁水表数据对接代码生成方法的适用性,使代码生成能够满足更多实际应用情形,提高代码生成的准确性,降低开发和运维的时间和成本。
另外,在本公开技术方案中,凡未作特别说明的,均可通过采用本领域中的常规手段来实现本公开技术方案。
附图说明
为了更清楚地说明本公开具体实施方式中的技术方案,下面将对具体实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一个实施例提供的电磁水表数据对接代码生成方法的流程图。
图2为本公开一个实施例提供的电磁水表数据对接代码生成装置的结构示意图。
图3为本公开一个实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所描述的具体实施例是本公开一部分的实施例,而不是全部的实施例,仅用以解释本公开,并不用于限定本公开,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
实施例1:
参考说明书附图1,示出了本申请实施例提供的电磁水表数据对接代码生成方法,该方法可以包括以下步骤:
S101:接收代码生成请求,代码生成请求中至少包括当前代码生成所需的参数;
S102:根据参数生成实体类;
S103:根据参数定义接口名称,并生成相应的接口;
S104:根据参数生成实现层类代码,并根据定义的接口名称实现接口;
S105:获取电磁水表推送信息的推送方式,并根据推送方式在实现层类代码中添加相应的固定代码块,固定代码块为预先设置,不同的固定代码块中包含不同的推送逻辑;
S106:根据参数生成job层代码,完成代码生成。
在本实施例中,以数据推送为例,说明了电磁水表数据对接代码的生成方法。按照本实施例提出的电磁水表数据对接代码生成方法最终生成的代码,能够实现电磁水表的数据推送功能,具体包括以下内容:
从数据源获取数据,
根据指定数据格式重新包装,
根据不同推送方式将包装后的数据推送至指定接口,
接收接口返回值,并根据接口返回值判断数据推送是否成功,
若推送成功,则在mysql数据库中存储此推送记录;
若推送失败,则不存储此推送记录,并在日志中打印推送失败的原因。
在可选的实施例中,在S101中,代码生成请求可以通过一个controller层的API接口接收。具体的,代码生成请求可以根据预先设置的配置页面生成,用户在配置页面输入生成代码所需的参数,API接口接收到配置页面的参数后,可以对参数进行校验,检查当前接收到的参数是否满足生成代码的全部需求,若满足则执行S102,若不满足则向用户返回提示信息。
由此,通过可视化的配置页面获取代码生成所需的参数,实现代码的动态配置,进一步降低操作难度,降低工作量,提高代码生成的效率。
具体的,供用户输入参数的配置页面可以设置在浏览器中或客户端中。
在可选的实施例中,当前代码生成所需的参数的字段可以包括:
推送任务名称、客户名称、每组推送条数、全量推送标识、最新单条数据推送标识、参数匹配的键值对数组、数据源API、推送目标API和推送成功返回标识。
在可选的实施例中,根据参数生成实体类可以包括以下步骤:
将代码生成请求中的参数包装成数组;
遍历数组,数组中每有一个元素对象,则获取并创建一个实体类,每个元素对象对应的实体类均为预先设置。
具体的,可以使用JavaPoet中的TypeSpec.classBuilder()创建实体类,实体类名称及属性以键值对的形式设置。
代码生成请求中的参数被包装成数组,数组中包含了实体类名称及属性。
使用for循环遍历该数组,数组中每有一个元素对象,则新建一个实体类,每个元素对象中的key为实体类名称,value中的值也是数组,其中元素对象为实体类的属性名称及属性类型,数组的结构示例如下:
[{“testName”:[“value1”:“string”,“value2”:“float”,“value3”:“Integer”…]},{“testName2”:[“value1”:“string”,“value2”:“float”,“value3”:“Integer”…]}]。
使用FieldSpec.builder()循环的方式创建实体类属性,属性名称和类型即数组中的value1,value2,value3,数组中的表示值为string;
使用addAnnotation()在实体类上方增加lombok的@Data注解,使用@Data注解能够自动拥有get及set方法,无需再进行手动编写。
具体的,根据实际应用场景的不同,会生成不同数量的实体类,实体类的数量至少为一个。
在S102中,根据参数生成实体类后,还可以包括:
判断当前实体类是否生成,若生成成功,则执行S103,若生成失败,则中止执行并向操作人员提示错误信息。
在可选的实施例中,在S103中,根据参数定义接口名称,并生成相应的接口可以包括以下步骤:
使用TypeSpec.interfaceBuiler()创建接口,接口名称以代码生成请求中的参数为基础进行规范定义,并定义一个变量存储该接口名称,具体的,接口名称以推送任务名称为基础进行规范定义;
使用TypeSpec.addModifiers()方法定义修饰语为公共类;
使用.addMethod()添加getAndPush()方法,用于下一步实现层的重写,即对创建的接口进行具体内容的编写;
使用.returns(Boolean.calss)设置该方法返回值为布尔类型,返回推送结果是否成功。
在S103中,根据参数定义接口名称,并生成相应的接口后,还可以包括:
判断当前接口是否生成,若生成成功,则执行S104,若生成失败,则中止执行并向操作人员提示错误信息。
在可选的实施例中,在S104中,根据参数生成实现层类代码,并根据定义的接口名称实现接口具体包括以下步骤:
使用TypeSpec.classBulider()创建实现类,在参数中可获取到,具体的,可以根据参数中推送任务名称创建实现类,例如,推送任务名称为NanJing,则创建的实现类可以为NanJingImpl;
使用TypeSpec.addModifiers()方法将该方法修饰语定义为公共类;
使用.addSuperinterface()方法实现S103中生成的接口,接口名称从S103中定义的用于存储接口名称的变量中获得;
使用.addAnnotation()@Sercvice注解,标注创建的类为实现层;
使用.addMethod()添加getAndPush()方法,同时通过addAnnotation()在实体类上方增加@Override注解重写方法;
使用.returns(Boolean.calss)增加方法返回值为布尔类型用于判断推送任务是否操作成功;
使用.addCode()添加固定代码块。
其中,固定代码块可以是字符串包裹的java语言,每个固定代码块中均包含一个通用的逻辑和一个推送逻辑,每个固定代码块中的推送逻辑可以对应一种数据的推送方式。固定代码块都是预先设置的,在代码生成时,根据代码生成请求中具体的参数进行添加。
具体的,固定代码块中的通用的逻辑可以包括:
调用获取数据的方法,从指定的数据源API获取数据,指定的数据源API从代码生成请求中包括的相应参数中获得;
根据代码生成请求中的参数匹配的内容进行遍历;
通过反射实体类名称,获取并创建步骤102中定义的实体类对象;
对实体类进行参数的赋值,并包装成集合形式,具体的,可以根据代码生成请求中的参数被包装成的数组中的实体类参数进行一个个赋值;
根据接口返回值判断数据是否推送成功,其中推送成功与否的标识由代码生成请求中对应的参数提供,成功则返回true,失败则false。
在可选的实施例中,如数据推送每次仅需要推送最新的一条数据,则集合内包装的仅为需要推送的最新的一条数据。
在可选的实施例中,获取数据的方法可以是以下两种方法之一:
一种是根据上一次推送的最后一条数据的自增id标识来获取下一次数据;
另外一种是根据预设的时间间隔来获取一段时间内的数据,该方法需要预先创建接收数据的实体类,实体类中至少应该包含正向流量、反向流量、瞬时流量、采集时间、累计流量、压力和信号强度这些参数。
具体的,固定代码块中的推送逻辑可以对应一种推送信息的具体推送方法。在可选的实施例中,推送信息的对接方式可以分为http对接和中间库对接两大类,在http对接方式中又可以分为一般HTTP推送、socket通讯、fegin远程调用、RabbitMQ、Web Service和MQTT六种具体的推送方法。
在可选的实施例中,根据推送方式在实现层类代码中添加相应的固定代码块具体可以包括以下步骤:
判断当前数据对接中的对接方式是否为中间库对接方式;
若对接方式为中间库对接方式,则相应的推送信息的数据格式是xml格式,添加的固定代码块实现的功能为预先生成xml文件,并调用mapper中的方法,mapper中的方法在生成接口时已预先生成,mapper文件及方法用于映射xml文件中的sql语句;
若对接方式为http对接方式,则判断当前具体推送方式是否为一般http推送、socket通讯方式、fegin远程调用方式、RabbitMQ方式、Web Service方式或MQTT方式中的一种,
若推送方式为一般http推送,则添加的固定代码块实现的功能是将需要推送的数据直接转换成JSON字符,并将http数据类型CONTENT_TYPE指定为application/json,推送到推送目标API;
若推送方式为socket通讯方式,则添加的固定代码块实现的功能是将获取的原始数据转成json字符,并放在数据帧的指定位置中,数据帧中包含数据标识、帧长度、数据内容和校验码,数据帧以字节形式传输到指定IP和端口中,指定IP和端口可以从代码生成请求中获得;
若推送方式为fegin远程调用方式,则添加的固定代码块实现的功能是将获取的原始数据转成JSON字符,新建远程调用接口,并将JSON字符调用远程微服务方法进行传输;
若推送方式为RabbitMQ方式,则添加的固定代码块实现的功能是创建rabbitMQ的配置类及属性、创建channel数据通道、定义交换机并根据需求将原始数据包装成其他数据格式后将数据推送到指定IP和端口,指定IP和端口可以从代码生成请求中获得;
若推送方式为Web Service方式,则添加的固定代码块实现的功能是将原始数据按照指定的xml格式进行二次包装,并将http数据类型CONTENT_TYPE指定为text/xml后推送到推送目标API;
若推送方式为MQTT方式,则添加的固定代码块实现的功能是创建mqtt客户端、创建链接参数、创建消息、设置消息的服务质量、将包装为指定格式的字符串数据使用MQTT发布消息的方式发布到指定地址。
在S106中,根据参数生成job层代码可以包括以下步骤:
使用TypeSpec.classBulider()创建最外层的类,作为定时任务的执行入口,类名从代码生成请求中的参数中获取,由此,每一次的数据推送都是定时任务,job层能够将定时任务定义为定时器;
使用.addSuperinterface()方法实现接口,被实现接口可以命名为"BaseJob",被实现接口是不存在于需要生成的代码中的预定义接口,用于控制定时任务的执行时间和执行情况;
使用.addMethod()添加execute()方法,作为执行推送逻辑的入口;
使用.addCode()添加固定代码,该固定代码用于执行getAndPush方法,执行S104中创建的getAndPush()方法,并根据getAndPush()返回的布尔值true或false,使用log日志记录推送完成情况。
在可选的实施例中,定时任务的代码生成方法可以包括:
根据代码生成请求中的参数,创建定时器的控制层类;
定义定时任务的新增、查询、停止、恢复、卸载的方法;
修改数据库的定时任务相关信息。
具体的,定时任务的新增方法可以包括,使用Scheduler类创建新的定时任务,并根据cron表达式触发定时任务的执行时间。
定时任务的查询方法可以包括:通过mybatis,获取数据中定时任务表qrtz_job_details的定时任务信息,结合组件pageinfo以分页的形式返回给前端页面展示,其中前端页面显示有推送任务列表及推送任务完成情况,推送任务即定时任务。
定时任务的停止方法可以包括:获取代码生成请求中的定时器基本信息,使用scheduler类修改数据库指定任务的执行状态为“不执行”状态。
定时任务的恢复方法可以包括:获取代码生成请求中的定时器基本信息,使用scheduler类修改数据库指定任务的执行状态为“正常”状态。
定时任务的卸载方法可以包括:获取代码生成请求中的定时器基本信息,使用scheduler类删除数据库指定任务的相关信息,前端页面可显示为未安装状态。
本公开的有益效果为:提供了一种电磁水表数据对接代码生成方法,操作人员只需提供必要的参数信息,即可生成实体类、接口、实现层代码和job层代码,生成的代码能够完整实现电磁水表数据对接的相关功能,节省开发时间,降低开发成本,提高工作效率,减轻运维负担,能够适应大业务量下数据对接业务的实现;通过根据不同推送方式预设固定代码块,当用户对数据对接存在特殊要求时,代码同样能够准确且快速的生成,提高了电磁水表数据对接代码生成方法的适用性,使代码生成能够满足更多实际应用情形,提高代码生成的准确性,降低开发和运维的时间和成本。
实施例2:
参考说明书附图2,示出了本申请一个实施例提供的电磁水表数据对接代码生成装置,用于执行上述方法实施例中的任一电磁水表数据对接代码生成方法,该装置包括,
参数获取模块20,用于接收代码生成请求,代码生成请求中至少包括当前代码生成所需的参数;
实体类代码生成模块21,用于根据参数生成实体类;
接口生成模块22,用于根据参数定义接口名称,并生成相应的接口;
实现层类代码生成模块23,用于根据参数生成实现层类代码,并根据定义的接口名称实现接口;
固定代码块添加模块24,用于获取电磁水表推送信息的推送方式,并根据推送方式在实现层类代码中添加相应的固定代码块,固定代码块为预先设置,不同的固定代码块中包含不同的推送逻辑;
job层代码生成模块25,用于根据参数生成job层代码。
在可选的实施例中,当前代码生成所需的参数包括:
推送任务名称、客户名称、每组推送条数、全量推送标识、最新单条数据推送标识、参数匹配的键值对数组、数据源API、推送目标API和推送成功返回标识。
在可选的实施例中,在实体类代码生成模块21中,根据参数生成实体类包括以下步骤:
将代码生成请求中的参数包装成数组结构;
遍历数组,数组中每有一个元素对象,则获取并创建一个实体类,每个元素对象对应的实体类均为预先设置。
在可选的实施例中,在固定代码块添加模块24中,还包括推送方式判断子模块和代码块添加子模块,
推送方式判断子模块用于判断当前数据对接中的推送方式;
代码块添加子模块用于根据推送方式判断子模块输出的结果,在预先设置的若干固定代码块中获取并添加实现相应功能的固定代码块。
本公开的有益效果为:提供了一种电磁水表数据对接代码生成装置,操作人员只需提供必要的参数信息,即可生成实体类、接口、实现层代码和job层代码,生成的代码能够完整实现电磁水表数据对接的相关功能,节省开发时间,降低开发成本,提高工作效率,减轻运维负担,能够适应大业务量下数据对接业务的实现;通过根据不同推送方式预设固定代码块,当用户对数据对接存在特殊要求时,代码同样能够准确且快速的生成,提高了电磁水表数据对接代码生成方法的适用性,使代码生成能够满足更多实际应用情形,提高代码生成的准确性,降低开发和运维的时间和成本。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将设备内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
实施例3:
参考说明书附图3,提供执行方法实施例中任一电磁水表数据对接代码生成方法的计算机设备的结构示意图,该设备包括:
一个或多个处理器310以及存储器320,图3中以一个处理器310为例。
执行电磁水表数据对接代码生成方法的设备还可以包括:输入装置330和输出装置340。
存储器320作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的电磁水表数据对接代码生成方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的电磁水表数据对接代码生成方法。
存储器320可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据电磁水表数据对接代码生成装置的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器320可选包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至电磁水表数据对接代码生成装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置330可接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的信号输入。输出装置340可包括显示屏等显示设备。
一个或者多个模块存储在存储器320中,当被一个或者多个处理器310执行时,执行上述任意方法实施例中的电磁水表数据对接代码生成方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
实施例4:
本公开实施例4提供一种计算机可读存储介质,存储介质中存储有一个或多个包括执行指令的程序,执行指令能够被设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行上述方法实施例中的相关步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备及存储介质的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.电磁水表数据对接代码生成方法,其特征在于,包括以下步骤:
接收代码生成请求,所述代码生成请求中至少包括当前代码生成所需的参数;
根据所述参数生成实体类;
根据所述参数定义接口名称,并生成相应的接口;
根据所述参数生成实现层类代码,并根据定义的接口名称实现所述接口;
获取电磁水表推送信息的推送方式,并根据推送方式在实现层类代码中添加相应的固定代码块,所述固定代码块为预先设置,不同的所述固定代码块中包含不同的推送逻辑;
根据所述参数生成job层代码,完成代码生成。
2.根据权利要求1所述的电磁水表数据对接代码生成方法,其特征在于,所述当前代码生成所需的参数包括:
推送任务名称、客户名称、每组推送条数、全量推送标识、最新单条数据推送标识、参数匹配的键值对数组、数据源API、推送目标API和推送成功返回标识。
3.根据权利要求1所述的电磁水表数据对接代码生成方法,其特征在于,所述根据所述参数生成实体类包括以下步骤:
将代码生成请求中的参数包装成数组结构;
遍历数组,数组中每有一个元素对象,则获取并创建一个实体类,每个元素对象对应的实体类均为预先设置。
4.根据权利要求1所述的电磁水表数据对接代码生成方法,其特征在于,所述获取电磁水表推送信息的推送方式,并根据推送方式在实现层类代码中添加相应的固定代码块包括以下步骤:
判断当前数据对接中的对接方式是否为中间库对接方式;
若对接方式为中间库对接方式,则对应的推送信息的数据格式是xml格式,添加的固定代码块实现的功能为调用mapper中的方法,所述mapper中的方法在生成接口时已预先生成;
若对接方式为http对接方式,则判断当前具体推送方式是否为一般http推送、socket通讯方式、fegin远程调用方式、RabbitMQ方式、Web Service方式或MQTT方式中的一种,
若推送方式为一般http推送,则添加的固定代码块实现的功能是将需要推送的数据直接转换成JSON字符,并将http数据类型CONTENT_TYPE指定为application/json,推送到推送目标API;
若推送方式为socket通讯方式,则添加的固定代码块实现的功能是将获取的原始数据转成json字符,并放在数据帧的指定位置中,数据帧中包含数据标识、帧长度、数据内容和校验码,并将数据帧以字节形式传输到指定IP和端口中;
若推送方式为fegin远程调用方式,则添加的固定代码块实现的功能是将获取的原始数据转成JSON字符,新建远程调用接口,并将JSON字符调用远程微服务方法进行传输;
若推送方式为RabbitMQ方式,则添加的固定代码块实现的功能是创建rabbitMQ的配置类及属性、创建channel数据通道、定义交换机并根据需求将原始数据包装成其他数据格式后将数据推送到指定IP和端口;
若推送方式为Web Service方式,则添加的固定代码块实现的功能是将原始数据按照指定的xml格式进行二次包装,并将http数据类型CONTENT_TYPE指定为text/xml后推送到推送目标API;
若推送方式为MQTT方式,则添加的固定代码块实现的功能是创建mqtt客户端、创建链接参数、创建消息、设置消息的服务质量、将包装为指定格式的字符串数据使用MQTT发布消息的方式发布到指定地址。
5.电磁水表数据对接代码生成装置,用于执行权利要求1-4任一所述电磁水表数据对接代码生成方法,其特征在于,包括,
参数获取模块,用于接收代码生成请求,所述代码生成请求中至少包括当前代码生成所需的参数;
实体类代码生成模块,用于根据所述参数生成实体类;
接口生成模块,用于根据所述参数定义接口名称,并生成相应的接口;
实现层类代码生成模块,用于根据所述参数生成实现层类代码,并根据定义的接口名称实现所述接口;
固定代码块添加模块,用于获取电磁水表推送信息的推送方式,并根据推送方式在实现层类代码中添加相应的固定代码块,所述固定代码块为预先设置,不同的所述固定代码块中包含不同的推送逻辑;
job层代码生成模块,用于根据所述参数生成job层代码。
6.根据权利要求5所述的电磁水表数据对接代码生成装置,其特征在于,所述当前代码生成所需的参数包括:
推送任务名称、客户名称、每组推送条数、全量推送标识、最新单条数据推送标识、参数匹配的键值对数组、数据源API、推送目标API和推送成功返回标识。
7.根据权利要求5所述的电磁水表数据对接代码生成装置,其特征在于,在实体类代码生成模块中,所述根据所述参数生成实体类包括以下步骤:
将代码生成请求中的参数包装成数组结构;
遍历数组,数组中每有一个元素对象,则获取并创建一个实体类,每个元素对象对应的实体类均为预先设置。
8.根据权利要求5所述的电磁水表数据对接代码生成装置,其特征在于,在固定代码块添加模块中,还包括推送方式判断子模块和代码块添加子模块,
所述推送方式判断子模块用于判断当前数据对接中的推送方式;
代码块添加子模块用于根据推送方式判断子模块输出的结果,在预先设置的若干固定代码块中获取并添加实现相应功能的固定代码块。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序或指令集由所述处理器加载并执行以实现如权利要求1至4任一所述的电磁水表数据对接代码生成方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行权利要求1至4任一所述的电磁水表数据对接代码生成方法。
CN202311416774.8A 2023-10-30 2023-10-30 电磁水表数据对接代码生成方法及装置 Active CN117149166B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311416774.8A CN117149166B (zh) 2023-10-30 2023-10-30 电磁水表数据对接代码生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311416774.8A CN117149166B (zh) 2023-10-30 2023-10-30 电磁水表数据对接代码生成方法及装置

Publications (2)

Publication Number Publication Date
CN117149166A true CN117149166A (zh) 2023-12-01
CN117149166B CN117149166B (zh) 2023-12-29

Family

ID=88899106

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311416774.8A Active CN117149166B (zh) 2023-10-30 2023-10-30 电磁水表数据对接代码生成方法及装置

Country Status (1)

Country Link
CN (1) CN117149166B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109614102A (zh) * 2018-10-09 2019-04-12 平安科技(深圳)有限公司 代码自动生成方法、装置、电子设备及存储介质
CN110381135A (zh) * 2019-07-18 2019-10-25 北京奇艺世纪科技有限公司 接口创建方法、服务请求方法、装置、计算机设备和介质
CN110399128A (zh) * 2019-07-26 2019-11-01 北京恒华伟业科技股份有限公司 代码文件生成方法及装置
CN111078213A (zh) * 2018-10-18 2020-04-28 马上消费金融股份有限公司 一种代码生成方法及代码生成装置
CN111338637A (zh) * 2020-02-26 2020-06-26 腾讯科技(深圳)有限公司 一种代码生成方法及装置
US11106434B1 (en) * 2020-07-31 2021-08-31 EMC IP Holding Company LLC Method, device, and computer program product for generating program code
CN113835693A (zh) * 2021-09-15 2021-12-24 欧电云信息科技(江苏)有限公司 代码生成方法、装置、电子设备、存储介质
CN115599386A (zh) * 2022-10-09 2023-01-13 建信金融科技有限责任公司(Cn) 代码生成方法、装置、设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109614102A (zh) * 2018-10-09 2019-04-12 平安科技(深圳)有限公司 代码自动生成方法、装置、电子设备及存储介质
CN111078213A (zh) * 2018-10-18 2020-04-28 马上消费金融股份有限公司 一种代码生成方法及代码生成装置
CN110381135A (zh) * 2019-07-18 2019-10-25 北京奇艺世纪科技有限公司 接口创建方法、服务请求方法、装置、计算机设备和介质
CN110399128A (zh) * 2019-07-26 2019-11-01 北京恒华伟业科技股份有限公司 代码文件生成方法及装置
CN111338637A (zh) * 2020-02-26 2020-06-26 腾讯科技(深圳)有限公司 一种代码生成方法及装置
US11106434B1 (en) * 2020-07-31 2021-08-31 EMC IP Holding Company LLC Method, device, and computer program product for generating program code
CN113835693A (zh) * 2021-09-15 2021-12-24 欧电云信息科技(江苏)有限公司 代码生成方法、装置、电子设备、存储介质
CN115599386A (zh) * 2022-10-09 2023-01-13 建信金融科技有限责任公司(Cn) 代码生成方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN117149166B (zh) 2023-12-29

Similar Documents

Publication Publication Date Title
CN112329945A (zh) 一种模型部署及推理的方法和装置
CN112130993B (zh) 基于图形化建模的电力边缘物联代理边缘计算方法及系统
CN112148270B (zh) 实时计算和数据交互方法、系统及介质
CN111026634A (zh) 一种接口自动化测试系统、方法、装置及存储介质
US20210117313A1 (en) Language agnostic automation scripting tool
CN110532182B (zh) 一种虚拟化平台的自动化测试方法及装置
CN110825412A (zh) 基于LabVIEW的控制器程序的刷写系统及方法
CN114816375A (zh) 服务编排方法、装置、设备及存储介质
CN111104181A (zh) 一种可视化编辑任务流程的网页数据填报系统
CN116974581B (zh) 代码生成方法、装置、电子设备和存储介质
CN117149166B (zh) 电磁水表数据对接代码生成方法及装置
CN113687927A (zh) Flume任务调度配置方法、装置、设备及存储介质
CN112732265B (zh) 一种数据处理方法和相关装置
CN103678485A (zh) 虚拟试验流程节点驱动与活动封装系统
CN116909553A (zh) 一种页面在线开发及本地编译运行系统
US11301246B2 (en) Automatically generating continuous integration pipelines
CN115292641A (zh) 页面生成方法、装置、服务器及存储介质
CN113885844A (zh) 一种业务服务编排方法及相关装置
CN115061706A (zh) 一种Vue3组件状态管理方法、装置、设备及介质
CN112860248B (zh) 源代码生成方法及装置
CN115168175A (zh) 程序错误解决方法、装置、电子设备和存储介质
US20150248453A1 (en) Automated Logging for Object-Oriented Environments
JP2006236375A (ja) Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラム
CN115174703B (zh) 设备驱动处理方法、设备通信方法、处理系统及电子设备
CN117271424B (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