反馈已提交

网络繁忙

数据JSON服务API

  • 文档创建者:mqh
  • 历史版本:21
  • 最近更新:Wendy123456 于 2023-07-04
  • 1. 概述

    1.1 版本

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

    1.2 应用场景

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

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

    1.3 功能介绍

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

    主要功能:

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

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

    • 新增接口调用支持跨域取数功能。

    • 支持FRM模板取数功能。

    • 支持多模板多数据集查询。

    • 接口返回数据,支持国密加密处理功能。

    1.4 方案说明

    当前方案新方案
    本文方法在 FineReport 中下载「数据JSON服务API」插件实现本文不做介绍

    FineDataLink 产品 的 数据服务 功能,提供数据共享能力,可以将加工、融合后的数据封装发布为规范化 API 接口数据,供外部系统调用,实现数据价值输出及共享开放

    36.png

    用户若需要将数据库或者其他形式的数据生成为 JSON 格式,可使用「JSON 生成」算子

    2. 操作方法

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

    2.1 安装插件

     FineReport 中下载「数据JSON服务API」插件实现。

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

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

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

    2.2 数据集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:当前时间的毫秒数,相对于服务器时间,30分钟内有效(用于签名认证,可选);

    • sign:安全签名(用于签名认证,可选);

     响应说明:

    • err_code:0为正常,其他参见错误码表;

    • err_msg:错误信息;

    • total_page_number:总页数;

    • page_number:当前页码;

    • page_size:每页行数(必须项);

    • data:获取到的JSON数据;数据key为数据集列名。

    数据集JSON示例:

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

    获取data结果:

    2.3 数据集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:当前时间的毫秒数,相对于服务器时间,30分钟内有效(用于签名认证,可选);

    • sign:安全签名(用于签名认证,可选);

     响应说明:

    • err_code:0为正常,其他参见错误码表;

    • err_msg:错误信息;

    • total_page_number:总页数;

    • page_number:当前页码;

    • page_size:每页行数(必须项);

    • data:获取到的JSON数据;数据key为数据集列名。

    数据集JSON示例:

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

    获取data结果:

    2.4 报表结果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:当前时间的毫秒数,相对于服务器时间,30分钟内有效(用于签名认证,可选);

    • 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.5 调用接口管控

    安全签名配置

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

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

    安全签名的计算规则为 MD5(密钥code+report_path+timestamp),默认密钥为空,不验证。timestamp相对于服务器时间,30分钟内有效。
    如配置了密钥,系统会依规则计算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.6 报表内容导出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


    4. 注意事项

    数据接口 /decision/api/dataset、/decision/api/data、/decision/report,支持第三方系统后台跨域调用。

    浏览器前端 ajax 的跨域调用,商城版插件不支持。(受限于浏览器的PreFlight请求处理)。如有需要,可按二次开发流程,解决此问题。





    附件列表


    主题: 二次开发
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持