1、需求说明
客户提供了一个电子证照取数接口(注:【2、客户提供的取数接口】),希望Smartbi可以对接取数接口取数,并生成报表展示,实现效果如下图:
2、客户提供的取数接口
2.1.用户身份验证接口(账号+密码)
此接口用于获取access_token串,此功能需要在电子证照系统配置后方可启用,并配置好相应的接口角色,分配具体的用户给调用方,若未启用,可以在后续接口应用中不传字段access_token以及具体的值。
接口服务地址是:
http://59.227.162.32:8010/license-api-release/oauth/token
接口调用请求说明
http请求方式 : POST |
参数说明
参数 | 是否必须 | 说明 |
client_id | 是 | |
client_secret | 是 | |
grant_type | 是 | |
scope | 是 | |
username | 是 | |
password | 是 |
返回说明
返回access_token串。
本接口负责对调用方的权限及身份进行认证,通过身份认证后将获取到一个身份验证串(有效期12小时),调用方使用该身份验证串就可以调用相应权限的接口。
2.2.电子证照文件下载地址获取接口(基于持证主体)
通过持证主体获取该证照对应电子证照原件或加注件的下载地址。
接口服务地址是:
http://59.227.162.32:8010/license-api-release/m/v/certificate/GetCertificateFileByHolder
接口调用请求说明
http请求方式:POST |
参数说明
参数 | 是否必填 | 说明 |
AccountId | 是 | Linewell@2023 |
AccessToken | 是 | 身份认证信息 |
CertificateHolderCode | 是 | 持证主体代码(如:公民身份号码、统一社会信用代码) |
CertificateHolderType | 否 | 持证主体代码类型,参见附录A |
CertificateType | 是 | 证照类型名称 |
CertificateNumber | 否 | 证照编号 |
UseFor | 是 | 申请事由,不超过200 |
Mode | 否 | 查询范围(0本地;1全省;2全国) |
返回参数说明:
参数 | 数据类型 | 说明 |
certificateType | 字符串 | 证照类型名称 |
issueDept | 字符串 | 证照颁发机构 |
certificateNumber | 字符串 | 证照编号 |
issueDate | 字符串 | 证照颁发日期 |
fileFormat | 字符串 | 证照文件格式 |
fileUrl | 字符串 | 文件下载地址 |
3、技术方案
3.1. java查询功能
1、扩展包开发一个【电子证照JAVA查询类】实现调用接口获取数据功能,根据客户提供的取数接口文档可知需要先调用身份验证接口再调用获取数据接口以获取数据,具体实现如下:
1)在getConfigs方法中配置一些固定的请求参数列表,需要新增配置信息列表有:用户身份验证接口地址、client_id、client_secret、grant_type、scope、username、password、电子证照文件下载地址获取接口地址和AccountId,配置完前端界面可显示对应的配置信息列表;
2)在getParameters方法中配置一些报表界面可自定义填入的请求参数列表,如持证主体代码(CertificateHolderCode)、持证主体代码类型(CertificateHolderType)、证照类型名称(CertificateType)、证照编号(CertificateNumber)、申请事由(UseFor)和查询范围(Mode),例如:
3)在【电子证照JAVA查询类】中封装一个调用用户身份验证接口方法,从查询类中获取以上所需的配置参数信息,进行传参调用接口,获取返回的access_token串;
4)在JAVA数据集实现类中封装一个调用获取数据接口方法(当前示例为电子证照文件下载地址获取接口[基于持证主体]),从查询类中获取以上所需的配置参数信息和步骤3中获取的access_token串进行传参调用对应的获取数据接口方法,返回对应的JSON数据;
5)在getOutputFields方法中将想要返回的数据各字段进行设置,如该接口需返回的字段为certificateType、issueDept、certificateNumber、issueDate、fileFormat、fileUrl;
6)在getGridData方法中调用步骤3的获取数据方法,将返回的JSON数据包装成对应的GridData返回到前端进行显示。
2、基于【电子证照JAVA查询类】实现【电子证照数据模型】,需配置按次抽取(可能数据量比较大有性能问题);
3、基于【电子证照数据模型】开发个【电子证照电子表格】报表示例,按照示例图,并开发一个电子表格宏代码,实现在对应的数据行后面添加一个下载文件按钮,点击按钮后,根据该行fileUrl值(可自行隐藏列)进行新窗口下载文件。
要求:该fileUrl地址链接应支持打开后下载文件。
4、实现效果
4.1. 配置说明
1.新建数据模型-Java查询,选择【自定义】,输入类名,点击【获取默认配置】
smartbi.ext.cestcjavaquery.javaquery.CertificateAPIJavaQuery
2.按接口实际地址和参数,修改对应的参数配置:
用户身份验证接口:用户身份验证接口服务地址
示例:http://59.227.162.32:8010/license-api-release/oauth/token
身份验证接口参数:接口调用请求参数
示例:client_id=xxx&client_secret=xxx&grant_type=xxx&scope=xxx&username=xxx&password=xxx
身份验证Token属性名:对应Token属性名,无需修改
示例:access_token
下载地址获取接口:电子证照文件下载地址获取接口服务地址
示例:http://59.227.162.32:8010/license-api-release/m/v/certificate/GetCertificateFileByHolder
API接口认证参数:接口调用请求认证参数
示例:AccountId=Linewell@2023&AccessToken=${appToken}
API接口查询参数:接口调用请求查询参数,无需修改
示例:[{"name":"CertificateHolderCode","alias":"持证主体代码"},{"name":"CertificateHolderType","alias":"持证主体代码类型"},{"name":"CertificateType","alias":"证照类型名称"},{"name":"CertificateNumber","alias":"证照编号"},{"name":"UseFor","alias":"申请事由"},{"name":"Mode","alias":"查询范围"}]
API数据列表属性名:数据列表属性名,无需修改
示例:data.dataList
API接口输出字段:接口输出字段,无需修改
示例:[{"name":"certificateNumber","type":"STRING"},{"name":"certificateType","type":"STRING"},{"name":"issueDept","type":"STRING"},{"name":"issueDate","type":"STRING"},{"name":"fileFormat","type":"STRING"},{"name":"fileUrl","type":"STRING"}]
3.点击保存,执行查询结果;
4.设置抽取,并基于该数据模型创建报表。
5、扩展包源代码及示例资源
示例资源:migrate.xml