可以将已经做好的报表集成到第三方系统中,报表是H5的,所以只需要在第三方系统中通过iframe嵌入报表链接即可.
艾科思移动报表平台提供了以下报表集成方式:
通过将用户名和密码作为参数放入报表链接中,实现即时登录和权限控制。
在报表设计器中,预览报表,获得报表的访问链接,例如:
https:
//enterprise.ireport365.com/view/report.do?reportId=98062e02a4294eda86423f464485089e
在报表的访问链接中加入用户名及密码参数,例如:
https:
//enterprise.ireport365.com/view/report.do?reportId=98062e02a4294eda86423f464485089e&username=demo&password=123456
参数列表如下:
注:password和md5password只需提供其中一个即可
使用Api生成包含动态加密的用户名、密码的报表url,url过期时间为10分钟,大大提升系统安全性
- 创建授权应用,参考:应用授权
- 下载Api源码:(API_v1已废弃)
iReport365Api.java 替换Api源码中的以下参数:
Api源码参数
描述
host替换成相应的报表服务器地址,包含http,不能以 / 结尾appId授权应用的appIdappSecret授权应用的安全码- 参考Api源码中:
用户名密码作为密文参数生成报表URL
向报表服务器获得accessToken(访问码),通过Api生成包含加密认证的报表url,url过期时间为10分钟,大大提升系统安全性
- 创建授权应用,参考:应用授权
- 下载Api源码:(API_v1已废弃)
iReport365Api.java 替换Api源码中的以下参数:
Api源码参数
描述
host替换成相应的报表服务器地址,包含http,不能以 / 结尾appId授权应用的appIdappSecret授权应用的安全码- 参考Api源码中:
使用AccessToken作为参数生成报表列表的URL
如果需要与现有的用户系统集成,用户无需管理新的密码,可以启用iReport365报表平台的用户登录脚本,当用户登录时,执行管理员设定的脚本,比如使用SQL或WebService验证用户输入的密码。
- 平台管理-》系统设置-》用户登录脚本-》开启
设置用户登录脚本 (页面底部有脚本示例)
脚本中支持的内置参数:
result返回值对象属性
databaseService对象方法
webService对象方法
userService对象方法
sessionService对象方法
ldapService对象方法
wxcpService对象方法
将微信企业号用户加入指定的标签
var
wxConfigId =
"abc"
;
//配置ID,报表平台->微信企业号->编辑->ID
var
wxTagName =
"标签名称"
;
//微信企业号中的标签名称
var
usernames = JSONArray();
usernames.add(
"username1"
);
//报表平台用户名
usernames.add(
"username2"
);
//报表平台用户名
wxcpService.addUserToTag(wxConfigId, wxTagName, usernames);
redisService对象方法
从Redis集群中取值
var
redisKey =
"theKey"
;
var
redisAddrs =
new
ArrayList();
redisAddrs.add(
"192.168.1.2:7000"
);
redisAddrs.add(
"192.168.1.3:7001"
);
redisAddrs.add(
"192.168.1.4:7002"
);
var
theValue = redisService.clusterGet(redisAddrs, redisKey);
脚本示例:
数据库验证用户名密码
importPackage(java.util);
importPackage(org.apache.commons.codec.digest);
//获取用户登录时填写的用户名和密码
var
username=request.getParameter(
"username"
);
var
password=request.getParameter(
"password"
);
//将密码MD5加密
var
md5Password = DigestUtils.md5Hex(password);
//用户库的连接名称
var
connectionName =
"local dataset"
;
var
param =
new
ArrayList();
param.add(username);
param.add(md5Password);
//查询用户库
var
sql =
"select username,password from users where username=? and password=?"
;
var
data = databaseService.query(connectionName, sql, param);
if
(data.size() === 0){
result.setSuccess(
false
);
result.setMessage(
"用户名或密码错误"
);
}
else
{
result.setSuccess(
true
);
}
LDAP用户认证
importPackage(java.util);
importPackage(org.apache.commons.codec.digest);
//获取用户登录时填写的用户名和密码
var
username=request.getParameter(
"username"
);
var
password=request.getParameter(
"password"
);
//LDAP查询
var
host =
"127.0.0.1"
;
//LDAP主机地址
var
port =
"389"
;
//LDAP端口
var
type =
"simple"
;
//不用修改
var
domain =
"abc.com"
;
//域
var
success = ldapService.auth(host,port,type,domain,username,password);
if
(success){
result.setSuccess(
true
);
}
else
{
result.setSuccess(
false
);
result.setMessage(
"用户名或密码错误"
);
}
WebService用户认证脚本
importPackage(java.util);
importPackage(org.apache.commons.codec.digest);
importPackage(com.alibaba.fastjson);
importPackage(org.apache.commons.lang);
//获取用户登录时填写的用户名和密码
var
username=request.getParameter(
"username"
);
var
password=request.getParameter(
"password"
);
var
str = webService.get(
"http://127.0.0.1:8080/login?username="
+username+
"&password="
+password);
if
(!StringUtils.isEmpty(str)){
var
json = JSONObject.parseObject(str);
var
success = json.getBoolean(
"success"
);
if
(!success){
result.setSuccess(
false
);
result.setMessage(
"用户名或密码错误"
);
}
else
{
result.setSuccess(
true
);
}
}
else
{
result.setSuccess(
false
);
result.setMessage(
"用户名或密码错误"
);
}
全局数据权限脚本
importPackage(java.util);
importPackage(com.alibaba.fastjson);
importPackage(org.apache.commons.lang);
var
dataPermissionData =
new
HashMap();
//获取报表URL传入的参数
var
accessToken=request.getParameter(
"accessToken"
);
var
appSecret=
"some code"
;
var
url =
"http://www.abc.com/shopguide/api/org/getOrgWithinAuth?appSecret="
+appSecret+
"&accessToken="
+accessToken;
logger.debug(
"ur: "
+url);
//调用接口,获取相关权限
var
response = webService.get(url);
logger.debug(
"response: "
+response);
if
(!StringUtils.isEmpty(response)){
//拼接权限数据
var
json = JSONObject.parseObject(response);
var
message = json.getString(
"msg"
);
logger.debug(
"message: "
+message);
if
(StringUtils.equals(message,
"success"
)){
var
values = json.getJSONArray(
"value"
);
logger.debug(
"values: "
+values);
if
(values !=
null
){
var
codeArr =
new
ArrayList();
for
(
var
m = 0; m < values.size(); m++){
var
item = values.getJSONObject(m);
var
code = item.getString(
"code"
);
codeArr.add(code);
}
//生成SHOPCODE的权限数据
dataPermissionData.put(
"SHOPCODE"
, codeArr);
}
}
}
result.setSuccess(
true
);
result.setData(dataPermissionData);
logger.debug(
"dataPermissionData: "
+dataPermissionData);