找回密码
 立即注册

QQ登录

只需一步,快速开始

James.Lv 讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2020-1-20 10:51  /   查看:4552  /  回复:0
本帖最后由 James.Lv 于 2023-1-5 18:45 编辑

如果想要在业务系统中设置一个菜单,用户点击菜单时不经查看页面、直接下载和打印报表内容,可调用Wyn Enterprise的导出和打印API,将报表内容打印或者导出为PDF、Excel等格式的文件。
image.png654823302.png image.png939001159.png

重点:Wyn Enterprise提供GraphQL API,几乎所有界面操作均可通过调用API完成,本贴主要介绍报表的打印和导出API,最后在附件一个简单的DEMO供参考
实现原理:
报表的导出重点分为两个步骤:
1、通过API获取到报表的ID,并选择待导出的报表ID。
2、通过API和报表ID获取到待导出的报表的导出地址,然后在浏览器新窗口打开即可导出

报表的打印重点分为3个步骤:
1、通过API获取到报表的ID,并选择待导出的报表ID。
2、通过API和报表ID获取到JobId,利用JobId获取到DocumentId。
3、通过API和DocumentId获取到报表的预览打印地址

具体过程:
1、报表导出(以导出PDF为例)
首先获取到报表ID,通过HTTP-POST请求访问Wyn Enterprise提供GraphQL API地址,获取到报表清单,选择想要导出的报表ID
  1. POST:http://localhost:51980/api/graphql?token=c8b21f18a1990baf5d73233f9530b7c22b803067041e43ef85ff892f7c894f38
  2. HTTP-Header:Content-Type: application/json
  3. Body:{"query":"query { documenttypes(key:"rdl") { documents{ id, title } } }"}
复制代码
注意:外部调用API时需要在地址加上token认证信息
image.png962234497.png
接着根据想要导出的报表的ID通过API获取到报表的导出地址
  1. POST:http://localhost:51980/api/graphql?token=c8b21f18a1990baf5d73233f9530b7c22b803067041e43ef85ff892f7c894f38
  2. HTTP-Header:Content-Type: application/json
  3. Body:{"query":"mutation { exportReport(reportId: "41ff202a-1868-41c1-8689-e8262fb52567", exportExtension: "pdf", renderPayload: {interactiveActions:"",parameters:[]}) { resultUrl, verificationUrl } }"}
复制代码
导出PDF不分页模式
  1. POST: http://localhost:51980/api/graphql?token=46911daf6f74fbb68ed0b0672a957cc17adc8aea3551d4f82018e80a753bc492
  2. HTTP-Header:Content-Type: application/json
  3. Body:{"query":"mutation { exportReport(reportId: "0ddb33e9-3211-4d96-9d25-ca34458dd8b9", exportExtension: "pdf", renderPayload: {settings:[{key:"IsPaginated",value:"true"}]interactiveActions:"",parameters:[]}) { resultUrl, verificationUrl } }"}
复制代码


注意:外部调用API时需要在地址加上token认证信息

image.png853802184.png

最后在浏览器新窗口打开报表导出地址即可进行导出
  1. http://localhost:51980/api/workerJob/76054324-9bb7-4be3-a251-28a985497529?token=c8b21f18a1990baf5d73233f9530b7c22b803067041e43ef85ff892f7c894f38
复制代码
注意:外部调用时需要在地址加上token认证信息
image.png938517761.png
2、报表预览打印
首先呢还是获取到报表ID,通过HTTP-POST请求访问Wyn Enterprise提供GraphQL API地址,获取到报表清单,选择想要打印的报表ID
(上面报表导出已经说明,详情请向上查看)
接着根据想要打印的报表的ID通过API获取到JobId,以及利用JobId获取到DocumentId
获取JobId
  1. POST:http://localhost:51980/api/graphql?token=c8b21f18a1990baf5d73233f9530b7c22b803067041e43ef85ff892f7c894f38
  2. HTTP-Header:Content-Type: application/json
  3. Body:{"query":"mutation { render(reportId: "41ff202a-1868-41c1-8689-e8262fb52567", renderPayload: {interactiveActions:"",parameters:[]}) { jobId } }"}
复制代码
注意:外部调用API时需要在地址加上token认证信息

image.png397625121.png

利用JobId获取到DocumentId
  1. POST:http://localhost:51980/api/graphql?token=c8b21f18a1990baf5d73233f9530b7c22b803067041e43ef85ff892f7c894f38
  2. HTTP-Header:Content-Type: application/json
  3. Body:{"query":"query { job(jobId: "d094e8e8-688c-45fc-8c13-e644114492f9") { status, documentId, error } }"}
复制代码
注意:外部调用API时需要在地址加上token认证信息
image.png741019286.png

通过API和DocumentId获取到报表的预览打印地址

  1. POST:http://localhost:51980/api/graphql?token=c8b21f18a1990baf5d73233f9530b7c22b803067041e43ef85ff892f7c894f38
  2. HTTP-Header:Content-Type: application/json
  3. Body:{"query":"query { job(jobId: "d094e8e8-688c-45fc-8c13-e644114492f9") { status, documentId, error } }"}
复制代码
注意:外部调用API时需要在地址加上token认证信息 image.png752288512.png

最后在浏览器新窗口打开报表预览地址即可进行预览打印
  1. http://localhost:51980/api/workerJob/254680f7-c478-400b-be3c-800503ebb381?token=c8b21f18a1990baf5d73233f9530b7c22b803067041e43ef85ff892f7c894f38
复制代码
注意:外部调用API时需要在地址加上token认证信息



ReportTool.zip (2.21 KB, 下载次数: 253)

评分

参与人数 1满意度 +5 收起 理由
mengpa + 5 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部