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

Page tree

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

Skip to end of metadata
Go to start of metadata

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模板取数功能。
  • 支持多模板多数据集查询。
  • 接口返回数据,支持国密加密处理功能。

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

11 Comments

  1. 功能上和开放平台的数据集接口有重合

  2. 用了hutool这个库,不是特别推荐

    1. 已修改,SM2、SM4加解密用内置库实现。

  3. 新增功能5:多个CPT模板导出EXCEL合并压缩包下载功能

    这个功能看起来和插件名字没有什么关系,为什么要增加这个

    1. 新增调用接口,多个CPT模板导出EXCEL合并压缩包下载功能。此项为二开任务JSD8693,,合并入插件作为通用功能。

      此插件打算作为服务接口集合,后续通用的二开定制功能接口,合并进来。更侧重精细功能点和试点,避免与开放平台插件重合。

  4. 安全配置页面选项能不能优化一下显示。目前所有选项都是在同一页面排列展示,看不出来各选项的逻辑,不清楚是都要填还是两个加密方式

    1. 已优化,上面截图已更新。
      接口调用-MD5秘钥,用于 调用接口权限控制。

      其余4项,用于接口返回数据的加密操作功能。

  5. 这个功能思想和开放平台的部分功能有类似

    1. 新增接口调用支持跨域取数功能。支持FRM模板取数功能。支持多模板多数据集查询。
      这三项,是按照客户需求定制功能,因不能算二开流程,进行插件功能迭代方式。

      接口返回数据,支持国密加密处理功能。此项为 已完成二开任务JSD8815功能,合并入插件作为通用功能。

      新增调用接口,多个CPT模板导出EXCEL合并压缩包下载功能。此项为二开任务JSD8693,,合并入插件作为通用功能。

  6. 数据集JSON服务与开放平台功能说明:

    1. 数据集JSON服务上架时间比开放平台插件,要更早些。数据集功能重复,非主观意愿造成。
    2. 数据集JSON服务插件,后续更侧重精细功能点和试点,避免与开放平台插件重合。

    请审核,谢谢。