请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
.朩龙(uid:1861)
数据挖坑工程师,负责执行rm -rf,QQ624525513 职业资格认证:尚未取得认证
关于“多产品连接工具插件”提示“连接异常,请检查加密KEY是否一致”的处理方案
插件的帮助文档:https://help.fanruan.com/finedatalink/doc-view-91.html 异常报错信息:连接异常,请检查加密KEY是否一致 版本: plugin3.6 FR11.0.7 BI6.0.9 触发条件:应该是第一次成功后更新AES加密KEY,然后删除链接信息后,重新添加会弹出错误信息 异常原因:深挖源码发现,分别在FR、FBI的数据中,表“fine_conf_entity”中id为“CoordinatorConfig.seed”中的值不一致,因此会弹报错提示,然而官方的插件帮助文档...(此处省略1万字) 解决方案: 如果外接数据库,直接进去改就好,如果不是或者没有数据库工具,可以用官方的"fine_conf_entity可视化配置"工具修改“CoordinatorConfig.seed”的值,但前提必须要以某一个为准,不要自定义(建议用主服务器的值更新副的)。 "fine_conf_entity可视化配置"插件地址:https://help.fanruan.com/finereport/doc-view-2471.html 另外还有个问题未解决,求知道的小伙伴或官方团队告知,问题如下: FR作为主服务https://abc.com:443/(ws:38888),FBI作为辅助https://域名:443/(ws:48888),集成功能正常,右上角切换来回切换正常,ws正常,在FR挂FBI一个仪表。 当登录FR,打开挂载的FBI仪表盘正常,但之后打开FR自身报表会丢token并要求重新登录,并且右上角不能切换。重新再登录,再打开FR自身报表正常,但挂载的FBI仪表又丢token...求解求解    
Tomcat漏洞对FR渗透测试【建议大家务必修复】
直奔主题,最近由于Tomcat存爆出CNVD-2020-10487漏洞,具体漏洞描述请自行百度,具体意思就是后台可上传并读取tomcat的文件 因此,此贴我就为大家详细演示如何通过漏洞获取FR中的报表文件: 首先,我要已知报表的目录;这个好办,当用户访问报表的时候可以知道报表存在哪个目录。假设我们的报表目录在reportlets下有个test.cpt的报表文件,如图 132796 图中通过python编写的一个工具可以就可以读取FR的报表文件,同理可以读取WEB-INF下所有文件,包括fr的授权,config下的配置xml文件, 但还好FR的ds.xml中的密码是加密的。 本次影响面比较大,包含所有在用的tomcat版本,非tomcat部署的不在本帖的操作范围内(Weblogic也有类似漏洞,这里不细说,反正打补丁吧) 具体修复方法就是将你的tomcat ajp13关闭,具体就是进入tomcat\conf\server.xml 搜索AJP/1.3,然后将改行注释或删除,具体如图: 132797 这都不能给我加精,下次我就不发咯~顺便问问能进感谢名单么,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 编辑于 2020-3-11 08:48
MongoDB程序数据集源码分享
继上一次,致远单点FR免积分下载,本次再次为大家提供FR连接MongoDB免积分下载 由于MongoDB插件有6000大洋,老板不批这笔钱,所以只好自己写程序来读取 但此代码没有官方方便,仅供入门级使用,如果老板不差钱,请购买官方正版 代码参考版主文档:https://help.finereport.com/doc-view-642.html 先说说该代码的缺点: 1.没有办法支持动态集合,由于程序数据集是先构建数据结构,后渲染数据内容,导致无法通过传参渲染集合名后查询,因此修改集合需要修改代码后重新编译; 2.没法支持MongDB的查询语法,主要我懒,没加这个功能,可用FR自带的过滤功能过滤就好; 3.其他缺点暂时没想到,欢迎各位补充; 优点: 1.代码不要钱,自己下载后编译即可使用; 2.作者很帅; 下面附上代码:package com.gosuncn.plugin; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.fr.data.AbstractTableData; import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.client.MongoCollection; import org.bson.Document; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Set; public class MongoDBPlugin extends AbstractTableData { /** * 列名数组,保存程序数据集所有列名 */ private String columnNames; /** * 定义程序数据集的列数量 */ private int columnNum = 10; /** * 保存查询表的实际列数量 */ private int colNum = 0; /** * 保存查询得到列值 */ //private ArrayList valueList = null; private LinkedHashSet> valueList; private MongoCollection doc; //以下是连接MongoDB所需的信息,请自行补充 private String username = ""; private String password = ""; private String db = ""; private String host = ""; private String port = ""; private String collection = ""; /** * 构造函数,定义表结构 */ public MongoDBPlugin() { doc = getMongoDB(username, password, db, host, Integer.valueOf(port), collection); JSONArray jsonArray = new JSONArray(); ArrayList list = new ArrayList(); for (Document document : doc.find()) { LinkedHashMap row = new LinkedHashMap(); JSONObject jsonObj = JSONObject.parseObject(document.toJson()); jsonArray.add(jsonObj); Set keySet = jsonObj.keySet(); for (String key : keySet) { if (!list.contains(key)) { list.add(key); } } } columnNum = list.size(); columnNames = new String; // while (itCol.hasNext()) { // columnNames = itCol.next().toString(); // j++; // } for (int i = 0; i < list.size(); i++) { columnNames = list.get(i).toString(); } } /** * 实现其他四个方法 * * @return columnNum */ @Override public int getColumnCount() { return columnNum; } @Override public String getColumnName(int columnIndex) { return columnNames; } @Override public int getRowCount() { init(); return valueList.size(); } @Override public Object getValueAt(int rowIndex, int columnIndex) { init(); int tempRowIndex = 0; for (LinkedHashMap row : valueList) { if (tempRowIndex == rowIndex) { return row.get(columnNames); } tempRowIndex += 1; } return null; } /** * 准备数据 */ private void init() { // 确保只被执行一次 if (valueList != null) { return; } // String newcollection = ((ParameterProvider) (parameters.get().toArray())).getValue().toString(); // FineLoggerFactory.getLogger().debug("tableName=" + tableName); // 保存得到的数据库表名 valueList = new LinkedHashSet>(); try { doc = getMongoDB(username, password, db, host, Integer.valueOf(port), collection); // Object objArray = null; // colNum = (int) doc.count(); JSONArray jsonArray = new JSONArray(); for (Document document : doc.find()) { LinkedHashMap row = new LinkedHashMap(); JSONObject jsonObj = JSONObject.parseObject(document.toJson()); jsonArray.add(jsonObj); Set keySet = jsonObj.keySet(); for (String key : keySet) { row.put(key, jsonObj.get(key).toString()); } valueList.add(row); } } catch (Exception e) { e.printStackTrace(); } } /** * 释放一些资源,因为可能会有重复调用,所以需释放valueList,将上次查询的结果释放掉 * * @throws Exception e */ @Override public void release() throws Exception { super.release(); this.valueList = null; } public MongoCollection getMongoDB(String user, String password, String db, String host, int port, String collection) { char pw = password.toCharArray(); //密码 MongoCredential credential = MongoCredential.createCredential(user, db, pw); //验证对象 MongoClientOptions options = MongoClientOptions.builder().sslEnabled(false).build(); //连接操作对象 MongoClient mongoClient = new MongoClient(new ServerAddress(host, port), credential, options); //连接对象 MongoCollection doc = mongoClient.getDatabase(db).getCollection(collection); return doc; } public static void main(String args) { MongoDBPlugin mongoDBPlugin = new MongoDBPlugin(); System.out.println("count=" + mongoDBPlugin.getColumnCount()); for (int i = 0; i < mongoDBPlugin.getColumnCount(); i++) { System.out.println(mongoDBPlugin.getColumnName(i)); } } } 编辑于 2020-1-10 11:34
致远与FR10单点SSO集成【免积分下载】
前段时间,朋友升级了FR10后,原由的致远与FR10的SSO单点无法使用,然后上论坛发现收费,然后受朋友所托,帮他重新写了新的方法,再此免费公开!seeyon_ctp_core.jar请放在工程里面的WEB-INF\ib下,如果不放登录时会提示ajax error! FR2seeYonSSO.class请放在工程里面的\WEB-INF\classes\com\fr\decision下,如果不放会显示classnotfound FR2seeYonSSO.java源码,可以不放,供高级玩家自己修改 128327 128326 128325 编辑于 2020-1-10 11:34
关于某4A系统的单点登录方案
最近公司在选型4A系统(4A系统是啥,简单的说就是统一登录平台,登陆了之后其他系统都不需要登录了),然后发现此4A系统与FR单点存在严重的安全漏洞,希望引起大家注意,下面附上具体代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.fr.fs.base.entity.User,com.fr.fs.base.entity.UserInfo,com.fr.fs.control.UserControl, com.fr.fs.privilege.auth.FSAuthentication,com.fr.fs.privilege.base.FServicePrivilegeLoader, com.fr.fs.privilege.entity.DaoFSAuthentication,com.fr.privilege.session.PrivilegeInfoSessionMananger"%> <% // 获取传过来的fr_username值 String username = request.getParameter("fr_username"); System.out.println(username); //如果用户名为空,跳转到登录页面 if(username == null){ response.sendRedirect("/ReportServer?op=fs"); return; } try { User U = UserControl.getInstance().getByUserName(username); //如果报表工程里没有对应传过来的用户名对应的用户信息,跳转到登录页面 if (U == null) { //改成自己的登录界面 response.sendRedirect("/ReportServer?op=fs"); return; } FSAuthentication authentication = new DaoFSAuthentication(new UserInfo(U.getId(), U.getUsername(), U.getPassword())); long userid = authentication.getUserInfo().getId(); PrivilegeInfoSessionMananger.login(new FServicePrivilegeLoader(username, UserControl.getInstance().getAllSRoleNames(userid), UserControl.getInstance().getUserDP(userid)), session, response); session.setAttribute("fr_fs_auth_key", authentication); UserControl.getInstance().login(userid); //登录后跳转到决策平台地址,可以根据需要设置是否跳转及跳转的地址 response.sendRedirect("/ReportServer?op=fs"); return; } catch (Exception e) { e.printStackTrace(); } %>以上代码是某4A平台提供的代码,需要将此代码放在FR的WebReport目录下,文件名为oaauth.jsp, PS请各位检查一下服务器中是否有此文件,如有请立刻删除 代码解释: 其实就是通过4A平台传到此页面地址带上username,然后通过username获取user对象,此时user对象中包含用户名和密码,再将user拿去校验,此过程完全不需要传密码,即通过用户名直接获取用户名密码。 So....我希望FR也认真认真认真面对这个问题,这个UserControl.getInstance()类实在有点可怕,希望FR可以改进,谢谢 111639 编辑于 2018-7-27 10:03 编辑于 2018-7-27 10:10
登录用户名切换方案
由于最近公司需要切换工号,由旧工号切换成新工号,经过与客服的讨论和研究,得出以下方案,供大家参考 版本: FR8.0(FR9.0也适用) 机制: 由于同步数据集是根据登录用户名判断用户是否存在,如不存在会新增记录,所以直接修改同步数据集中的登录用户名会导致FR会新增用户而非更新用户,因此需要通过后台更新登录用户名。 前置配置: 1.FineDB已迁移,迁移到Mysql5.7 2.登录方式采取同步数据集 3.同步数据集已迁移到数据库 -------------------------------------------------------- 以上3条是本次迁移的必备条件,其他如tomcat配置、其他配置请自行酌情配置 以下是操作步骤,但在操作之前,请先备份好一切,包括FR目录、数据库、配置文件等!!! 1.备份!!!备份!!!备份!!!备份!!!备份!!!备份!!! 2.先停止Tomcat,因为不停止会导致会执行同步数据集,此时一旦同步数据集的数据修改会导致用户重复; 3.同步数据集中的系统更新登录用户名(本人是同步OA,所以可以通知OA管理员可以修改登录账号了); 4.本次更新涉及到FineDB中3个数据表:FR_T_UENF、FR_S_USER、FR_T_USER,而上述3个表的字段都是username,所以直接更新就好了,如果不知道更新的话,建议找专业人士帮忙 5.确认这3表更新成功后,此时需要确认你的同步数据集端的数据是否已经更新完成,如果未完成不能启动tomcat 6.待同步数据集端也修改完成后,此时可以启动Tomcat,测试相关登录及权限。 ------------------------------------------------------------------------------------------------------------- 如果更换登录用户名失败,可还原数据库,但如果FineDB迁移及同步数据集迁移出错请咨询客服。 ----------------------------------------------------------------------------- 当中参考帮助文档 同步数据集迁移至平台数据库:http://help.finereport.com/doc-view-2075.html 平台数据迁移http://help.finereport.com/doc-view-1610.html
关于钉钉集成FR后导致其他应用获取AC、签名失效解决方法
本文仅适用于钉钉集成FR,并且集成其他应用(包括自研发及第三方应用)具体现象如下: 当其他应用获取AC并缓存后,FR此时获取AC,这时候其他应用的AC会失效,导致签名失败 解决方法: 登录 http://open-dev.dingtalk.com 64159 选择企业开发视图 64160 选择 开发者账号管理 ,并且创建开发者账号 此时可以给每个应用单独建立CorpSecret 大家可以发现,虽然CorpId是一样,但是CorpSecret是不一样的 这样子每个应用都可以单独拥有自己AC不会再互相冲突
“盛年不重来,一日难再晨”——5年番薯的心路历程
公司:高新兴 姓名:龙 Ladies and gentleman!My name is Dragon Leung. 本人是技术男,没上高中,直接读职中后就出来工作。第一份工作是在广州一家重点高中负责运维,当时已经开始已经接触数据库。离开之后,去了下一家公司,当时入职的时候负责金蝶ERP的维护,主要还是弄弄二次开发、触发器和存储过程,这时候其实已经不仅把数据库玩透,还把整个金蝶的系统数据结构给玩转了。2011年的时候后来来了新的部门经理,开始接触BI。当时试用了BO、RQ、FR,3个都其实都有他的优缺点,具体最后为什么选择了FR就不多说了,毕竟有拖的嫌疑吗,反正我现在去了另外的一个单位,也还是用FR。当时FR的版本还是6.5,刚买回来估计不够1个月就更新了7.0。有用过的小伙伴应该还记得,当年FineBI的现有功能其实是集成在FR里面,后来才拆分成2个产品线。当时我也很荣幸的成为华南首位通过FCRA认证的番薯,同时还受邀参加华南区的一次分享会。当时我还记得帆软在广州解放南路组织的分享会是2张容纳不到10个人的小圆桌到后来在天河在酒店举行的30人小培训会,再到今年年中在希尔顿估计有300人的FineBI4.0广州站巡回发布会,其实FR一直的在努力,一直在进步,一直在跟贴近用户的需求。 小弟的技术不才,这里说说我目前FR的使用心得。 首先是配置方面,目前的话FR架设在一台虚拟化的WinSRV08的服务器上,1.8JDK+Tomcat8x64+Mysql5.6的基本配置。这里Mysql主要是存放LogDB,不是放数据仓库,FineDB目前尚有Bug暂时没有修复,所以暂没有迁移。我们因为已经有泛微的OA,因为泛微OA的登录名和密码(MD5加密后的)能够轻松获取,所以用户能够通过OA的用户名和密码登录,就无需再单独建用户。有人可能会问为什么不将FR集成在OA里面,这里想说说是因为目前国内的大部分知名的OA厂商的插件都是针对IE开发,所以就算双核浏览器也好都不能很好解决报表的渲染速度和渲染效果,所以就没有集成在OA里面。 在使用方面,目前FR已经集合了好多业务系统的数据,从ERP、HR、考勤、行政等等的系统中收集数据进行分析,但唯一没有做到的就是一线销售的分析。目前主要集中还是写报表多,图表比较小,因为老板喜欢看报表,还真不是个个老板喜欢看仪表盘。其实在总体的使用来说,坦然我估计只用了FR50%的功能不到,呵呵。不过其实除了我现在负责的公司的FR设计以外,其实也负责某国内著名的OA厂商(排名前三)的FR报表外包工作,所以能够接触了各行各业的不同报表需求,也增长了自己的见识。 最后再分享一下上周去FR总部的参观的感受,First老板薛宝宝好搞笑,好Nice,连端茶递水都是亲力亲为,试想一下已经发展到这么大的公司老板都是亲力亲为的真的有多罕见。然后聊天中也提到了几个梗,例如FR怎么成立的呀,薛宝宝的车车是怎么来D啊,老马当时在广州峰会怎么调侃薛宝宝的呀,不过这都是一些玩笑,其实最让我佩服的是FR整体的管理模式,老板愿意放权让下面的人放手的去干!年轻人想法多,只有不犯大错,放心的去干!薛宝宝说他从不干预每一项财务审批,不干预每一项采购需求,不干预每一项产品功能,就是为了放手让年轻人去干,他唯一的关心是客户的反馈。其次,FR真是一家真的有社会责任感的公司,在深圳的小伙伴应该特别清楚,每月拿着20K的工资也很难在深圳找一个属于自己的家,但是FR为了解决员工有家这个问题想尽了自己办法,由于一些原因我就不方便多说了。哈哈哈,会后传说的传说哥还请我们吃了一顿饭,感动死了,最后附上跟薛宝宝的合作~嘿嘿嘿! 最最最后,祝FR的发展越来越旺,越来越好,越来越棒,越来越爽~~~ 52492 (PS:那个像京东快递的哥们就是薛宝宝)
【填报】主键自增长,提交出错
DB:SQL2008 Design:FR8.0 2016.02.15 JDK:1.8 表名:t_test id int 主键 自增长 name varchar(20) 允许空 智能提交 id设置主键 绑定单元格 name 绑定单元格 已根据 http://www.finereporthelp.com/help/12/1/2/1.html 在WEB-INF\resources\ 设置insertIgnoreColumn.properties 内容为 t_test.ignoreColumns=id 并已重启服务器 但仍提示“当 IDENTITY_INSERT 设置为 OFF 时,不能为表 't_test' 中的标识列插入显式值”
跨Sheet,数据定位,条件定位,Bug
本帖最后由 .朩龙 于 2016-3-11 10:39 编辑 34539 34542 34540 34541 SheetA中D2公式==B2{B1 =$D1} Sheet2中B2公式=='SheetA'!B2{'SheetA'!B1 = $A1} 目前怀疑是因为Sheet2中条件没有生效
哈哈哈 坚果收到了~谢谢FR~谢谢传说哥~
@传说哥 哈哈哈 今天上班收到了FR寄来的快递~开心死了~ 在此谢谢传说哥了~ 16732
最近微信新出了企业微信号,本人想结合FR+JAVA做开发的接口,有没志同道合的同志加入
本帖最后由 夏娃 于 2015-12-16 14:27 编辑 最近微信新出了企业微信号(并不是订阅号和服务号,详细请自行搜索微信企业号),本人想结合FR+JAVA做开发的接口,有没志同道合的同志加入? 有兴趣的请跟帖? 前期的开发大概思路如下: Step1: 先把消息接口做了之后,能够简单通过发送一些简单的指令查询报表 如:库存报表 广州,能够查询广州的库存状态 然后微信返回一条消息链接,用户点击后能够查看报表。 Step2: 流程推送,流程流转通过微信通知到指定部门或人。 Step3: 期待各位更多更好的想法! 本人非常期待大家的交流!期望各位志同道合的朋友一齐参与!
我和FR有个约会
今天是2014年11月5日,离光棍节还有1周(论坛有功能能帮我脱光吗?),离我生日还有1个月,离圣诞节还有1个半月,离新一年还有不到2个月了~ 我叫派大星,一个在广州土生土长的广州仔,今年25岁。已经接触了帆软3年了,应该算一名比较老资历的帆薯了。从FineReport(下简称FR)最稳定V6.5,到大飞跃的V7.0,再到大数据分析的V7.1,经过几次的升级,自己也从一个入门的程序员,到现在变成一个数据分析专员,功能也从报表呈现,填报分析,系统集成,流程流转慢慢的熟悉起来。 最早的时候,FR使用的人数相对比国外的BI工具要少,我也基本属于广州地区前5个用户,再到现在在翻天薯地和企鹅群里看到各区域各种行业都在使用FR,我就感觉FR行了,没买错了。 其中最深的印象莫过于线下的培训,最早的时候因为广州的用户比较少,FR培训都是一对一。然后一年之后,我再一次培训那时候就已经增加到接近20人,然后3年之后我以资深薯友的身份去培训会分享经验的时候,在一个100平方的会议室里面坐满了人。当我分享完毕之后享受着一阵阵激烈掌声,那时候觉得其实跟人家分享是一种很快乐的事。 在线上,有很多帆薯也经常帮助我,例如@阿迪 @传说哥 @无语 @海绵宝宝 还有群主大大等等我就不一一列出的了。在此谢谢各位一直的支持,希望FR也能蒸蒸日上,使用各位帆薯也节节上升,提前跟大家说光棍节快乐~ 小伙伴们抽时间帮我投上宝贵的一票吧!谢谢!投票猛戳→投票地址
广州求招一名熟悉SQL稍懂硬件的毕业生
广州求招一名懂SQL学历不限,中专毕业亦可 语言要求:国语、日语、法语、德语、意大利、粤语(PS:懂第一项及最后一项最好,中间可以省略,但会的话更佳) 要求: 1.懂基本软硬件维护 2.熟悉简单的SQL 3.对公司业务流程感兴趣 4.对软件系统实施感兴趣 有意者+扣扣或Wechat了解详情! 扣扣/Wechat:select len('654321'),datediff(DD,'1900-01-01','1900-01-03') ,right('12345',2),str(255,13),reverse(31)
个人成就
内容被浏览178,522
加入社区12年261天
返回顶部