【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Current »

1. 概述

1.1 版本

报表服务器版本JAR 包版本插件版本
10.02018-07-31V1.0

1.2 应用场景

FR系统提供了强大的数据支持功能,支持多种数据库和类型,并提供了异构数据源模型,使得同一张报表的数据可以来源于同一数据库的多个不同表,或多个不同数据库。

数据JSON服务API功能插件是将报表数据集、报表结果输出为JSON格式内容,并作为WEB接口服务开放,提供给报表系统前端或者其他系统使用。

1.3 功能介绍

插件功能提供JSON数据接口服务功能。

主要功能:

  • 报表模板数据集输出JSON服务API功能,提供调用接口。

  • 报表结果输出JSON服务API功能,提供调用接口。

  • 工具栏按钮实现报表内容导出JSON文件下载功能。

OS-235新增功能点:

  • 新增接口调用支持跨域取数功能。
  • 支持FRM模板取数功能。
  • 支持多模板多数据集查询。
  • 接口返回数据,支持国密加密处理功能。
  • 新增调用接口,多个CPT模板导出EXCEL合并压缩包下载功能。

2. 插件介绍

2.1 插件安装

点击下载插件:数据JSON服务API插件

设计器插件安装方法参照 设计器插件管理

服务器安装插件方法参照 服务器插件管理

2.2 操作方法

安装插件完成后,即可使用JSON接口服务功能。

2.2.1 数据集JSON服务API(多条件查询)

新版接口接口调用支持跨域请求调用、支持FRM模板取数、多模板多数据集查询。

URL地址

http://ip:port/webroot/decision/api/dataset

METHOD

POST

Content-Type

application/json

RAW

{
    "dataset": [{
        "report_path": "tabledataService/Parameter_3.cpt",
        "datasource_name": "ds2",
        "page_number": -1,
        "page_size": 2,
        "parameters": [{
                "name": "产品类型",
                "type": "String",
                "value": "饮料"
            },
            {
                "name": "地区",
                "type": "String",
                "value": "华北"
            }
        ]
    }, {
        "report_path": "tabledataService/data.frm",
        "datasource_name": "ds1",
        "page_number": -1,
        "page_size": 1,
        "parameters": [{
            "name": "company",
            "type": "String",
            "value": "VINET"
        }]
    }],
    "timestamp": "123456789",
    "sign": "761ad529b27019576de1ab4af5f9a394"
}

Response响应

[{
    "report_path": "tabledataService/Parameter_3.cpt",
    "datasource_name": "ds2",
    "err_code": 0,
    "err_msg": "",
    "total_page_number": 1,
    "page_number": -1,
    "page_size": 2,
    "data": [{
        "地区": "华北",
        "销售员": "张颖",
        "产品类型": "饮料",
        "产品": "苹果汁",
        "销量": 250.0,
        "英文简称": "zhangying"
    },
    .........
    {
        "地区": "华北",
        "销售员": "韩文",
        "产品类型": "饮料",
        "产品": "柳橙汁",
        "销量": 760.0,
        "英文简称": "hanwen"
    }]
},
{
    "report_path": "tabledataService/data.frm",
    "datasource_name": "ds1",
    "err_code": 0,
    "err_msg": "",
    "total_page_number": 1,
    "page_number": -1,
    "page_size": 1,
    "data": [{
        "产品名称": "猪肉",
        "库存量": 0,
        "成本价": 20.0,
        "单价": 39.0
    },
    .........
    {
        "产品名称": "三合一麦片",
        "库存量": 38,
        "成本价": 5.0,
        "单价": 7.0
    }]
}]

参数说明:

  • dataset:单个或多个数据集相关参数信息。
  • report_path:报表模板路径名称(必须项),支持CPT和FRM模板。例如 tabledataService/Parameter_3.cpt、tabledataService/data.frm。
  • datasource_name:数据集名称(必须项);
  • page_number:页码(必须项);
  • page_size:每页行数(必须项);
  • parameters:数据集参数(可选);参数名对应数据集中参数名;
  • timestamp:当前时间的毫秒数(用于签名认证,可选);
  • sign:安全签名(用于签名认证,可选);

 响应说明:

  • err_code:0为正常,其他参见错误码表;
  • err_msg:错误信息;
  • total_page_number:总页数;
  • page_number:当前页码;
  • page_size:每页行数(必须项);
  • data:获取到的JSON数据;数据key为数据集列名。

 

数据集JSON示例:

访问报表Parameter_3.cpt的数据集内容。

获取data结果:

2.2.2 数据集JSON服务API

 

URL地址

http://ip:port/webroot/decision/api/data 支持跨域


http://ip:port/webroot/decision/url/api/data

METHOD

POST

Content-Type

application/json

RAW

{

    "report_path": "Parameter_3.cpt",

    "datasource_name": "ds2",

    "page_number": 1,

    "page_size": 100,

    "timestamp": "123456789",

    "sign": "468705dc60eff5f67438f9b94ed15245",

    "parameters": [{

           "name": "地区",

           "type": "String",

           "value": "华北"

       },

       {

           "name": "产品类型",

           "type": "String",

           "value": "饮料"

       }

    ]

}

Response响应

{

    err_code  :  0,

    err_msg  :    "",                

    total_page_number  :   10,

    page_number  :     1,

    page_size  :     10,

    data  :    [{key1:v11,key2:v12,...},...]

}

参数说明:

  • report_path:报表模板路径名称(必须项),例如 doc/Parameter_3.cpt。
  • datasource_name:数据集名称(必须项);
  • page_number:页码(必须项);
  • page_size:每页行数(必须项);
  • parameters:数据集参数(可选);参数名对应数据集中参数名;
  • timestamp:当前时间的毫秒数(用于签名认证,可选);
  • sign:安全签名(用于签名认证,可选);

 响应说明:

  • err_code:0为正常,其他参见错误码表;
  • err_msg:错误信息;
  • total_page_number:总页数;
  • page_number:当前页码;
  • page_size:每页行数(必须项);
  • data:获取到的JSON数据;数据key为数据集列名。

 

数据集JSON示例:

访问报表Parameter_3.cpt的数据集内容。

获取data结果:

2.2.3 报表结果JSON服务API

新版接口接口调用支持跨域请求调用。

URL地址

http://ip:port/webroot/decision/api/report 支持跨域


http://ip:port/webroot/decision/url/api/report

METHOD

POST

Content-Type

application/json

RAW

{
    "report_path": "tabledataService/Parameter_3.cpt",
    "start_page": 1,
    "end_page": 1,
    "timestamp": "123456789",
    "sign": "468705dc60eff5f67438f9b94ed15245",
    "parameters": [
        {
            "name": "产品类型",
            "type": "String",
            "value": "饮料"
        },
        {
            "name": "地区",
            "type": "String",
            "value": "华北"
        }
    ]
}

Response响应

{
    "err_code": 0,
    "err_msg": "",
    "start_page": 1,
    "end_page": 1,
    "total_page_number": 1,
    "data": [
        {
            "A1": "华北销售额",
            "A2": "地区"
        }
    ]
}

参数说明:

  • report_path:报表模板路径名称(必须项),例如 tabledataService/Parameter_3.cpt。
  • start_page:报表内容起始页码(必须项);
  • end_page:报表内容结束页码(必须项);
  • parameters:报表面板参数(可选);参数名对应模板参数空间名称;
  • timestamp:当前时间的毫秒数(用于签名认证,可选);
  • sign:安全签名(用于签名认证,可选);

 响应说明:

  • err_code:0为正常,其他参见错误码表;
  • err_msg:错误信息;
  • total_page_number:总页数;
  • start_page:报表内容起始页码;
  • end_page:报表内容结束页码;
  • data:获取到的JSON数据;数据key为行列码标识。

 报表结果JSON示例:

访问报表Parameter_3.cpt的数据集内容。

参数JSON转换规则

参数类型

类型值

示例

字符串

String

{"name":"aa","type":"String","value":""}

整型

Integer

{"name":"aa","type":"Integer","value":""}

双精度型

Double

{"name":"aa","type":"Double","value":""}

日期

Date

{"name":"aa","type":"Date","value":""}

布尔型

Boolean

{"name":"aa","type":"Boolean","value":""}

公式

Formula

{"name":"aa","type":"Formula","value":""}


2.2.4 调用接口管控

安全签名配置

安全签名用于控制接口调用的权限验证。

报表平台管理页面(数据决策系统)-》管理系统-》系统管理-》点击‘常规’选项卡,配置‘JSON服务接口插件’的秘钥内容。如图

安全签名的计算规则为 MD5(秘钥code+report_path+timestamp),默认秘钥为空,不验证。
如配置了秘钥,系统会依规则计算MD5值与sign比较,相同即符合。

国密认证

国密认证用于对接口返回的 data,进行加密处理,避免信息泄露。

在插件参数页面的 启用国密认证 ,维护 SM2 App ID、SM2公钥、SM2私钥的值,即可生效使用。

获取到 加密data,先通过公钥验证签名sigature,再通过key和私钥解密得到对称加密密码,然后使用对称密码解密得到数据。

接口返回加密数据示例:


错误码表

err_code

err_msg

0

正常

10

report_path参数值不正确

11

datasource_name参数值不正确

12

page_number参数值不正确

13

page_size参数值不正确

14

报表模板文件不存在

15

安全签名不正确

16

start_page参数值不正确

17

end_page参数值不正确

20

报表数据集为空

2.2.5 报表内容导出JSON文件

在设计器打开对应报表文件,点击菜单“模板”->“模板web属性”->“分页预览属性”,会看到插件对应 JSON导出。先选择为“为该模板单独设置”项,再选择对应组件添加即可。

如图:

预览报表时,工具栏会显示导出按钮,点击即可执行。

3. 插件示例

在报表中新增按钮,并添加事件。js代码如下:



$.ajax({
	url: "http://localhost:8075/webroot/decision/url/api/data",
	type: "POST",
	contentType: "application/json;charset=utf-8",
	dataType: "json",
	data: JSON.stringify({
		"report_path": "GettingStarted.cpt",
		"datasource_name": "ds1",
		"page_number": 1,
		"page_size": 100,
		"parameters": [{
			"name": "地区",
			"type": "String",
			"value": "华北"
		}]
	}),
	success: function(data) {
		alert("导出成功" + data.toString());
	},
	error: function() {
		alert("baocuo");
	}
});


示例模板:

示例模板.cpt

以上。

  • No labels