帆软爱好者
编程爱好者
展开
-
FineBi工具栏增加按钮
分别再两个场景中,第一个场景是决策系统的目录界面里的报表工具栏增加按钮与我的分析中的仪表板的工具栏增加按钮,这两个地方是一样的方式增加,第二个场景是仪表板的编辑界面的工具栏增加按钮。原创 2024-06-11 07:22:40 · 84 阅读 · 0 评论 -
FR中隐藏系统管理--用户管理中 表格中每条数据中的编辑按钮,删除按钮
【代码】FR中隐藏系统管理--用户管理中 表格中每条数据中的编辑按钮,删除按钮。原创 2024-04-09 06:58:07 · 57 阅读 · 0 评论 -
帆软报表二次开发 树组件节点上添加自己的按钮
那怎么实现呢,这里采用拦截makeDOMNodeMainAfte方法,在它的内部先插入我们自己的组件,最后再插入标签。这就是构建li的方法,我们可以在调用makeDOMNodeMainAfte之前插入我们的内容来达到在树节点上添加自己的组件。我这里是有条件的加入自己的组件,加入了一个复制按钮,点击时将url属性复制到剪贴板上。通过查找源码发现这个组件内部构建树是通过BI.$.fn.zTree来构建的,我这里的需求是在树组件的子节点上加一个复制按钮。它里面有个view,通过view来构建的。原创 2023-06-12 06:21:17 · 720 阅读 · 0 评论 -
帆软报表各种情形下引入js
3.EncryptionComponent.KEY——$HOST/v10/encryption/page 平台切换国密的时候才可能会用到,主要用于提示异常。8.MigrationComponent.KEY——$HOST/v10/migration/page FineDb迁移数据时的进度页面,在插件中用处不大。12.WorkflowComponent.KEY——$HOST/workflow/authority 单独访问多级上报权限控制页面时生效。被依赖组件——前端页面。被依赖组件——前端页面。原创 2023-03-16 21:39:04 · 906 阅读 · 0 评论 -
分享帆软二次开发中经常用到的一个后台请求工具类,支持get,post,http,https(免证书)
二次开发后台发送http,https请求 工具类原创 2022-06-03 07:27:02 · 1341 阅读 · 0 评论 -
帆软报表获取单元格的值的几种方式,包括分页预览,填报预览,新填报预览
帆软报表获取单元格的值的方式在分页预览,填报预览,新填报预览都是不同的,没有统一的方式,这给使用者带来一定的不便。现在总结一下。分页预览: getCellValue: function (cellPositionLabl) { // cellPositionLabl=A1这样的形式 // 这是分页预览 var columnIndex = cellPositionLabl.charCodeAt(0) - 65;原创 2022-05-20 01:58:18 · 7584 阅读 · 0 评论 -
帆软报表开发技巧-- 字符串转JSON
String jsonString = "[{reportlet: 'json_export.cpt',param1: 'value1',param2: 'value2'}]"; ArrayList<HashMap<String,Object>> results = new ArrayList<>(); try { JSONArray reportlets = new JSONArray(jsonString);.原创 2022-05-04 15:57:43 · 1240 阅读 · 0 评论 -
彻底搞懂帆软报表JWT使用登录。也就是AccessProvider扩展的使用
我们在登录帆软报表决策系统时,知道后台会写一个fine_auth_token到cookie中,它的值就是一个jwt的值。这个值是帆软报表自己产生的,如果考虑到安全性,我们需要用自己的方法来产生这个jwt值,并且能够登录。帆软报表的登录接口中正好提供了基于第三方产生的jwt值来登录。首先看它的登录接口定义: @RequestMapping( value = {"/login/third/auth"}, method = {RequestMethod.POST}原创 2022-05-04 02:11:23 · 1281 阅读 · 0 评论 -
帆软报表导出各种格式之后台导出
我们前面介绍了帆软报表在界面上的导出是通过类似的URL:http://localhost:8075/webroot/decision/view/report?op=export&sessionID=10653244-3e46-408c-bc54-f89a214a9bc7&format=image&extype=PNG来完成的,就是带OP=export以及format参数来完成的。如果不从界面传参数,比如我们自己实现了一个HTTP接口,也可以通过传参数format来完成各种格式的导原创 2022-05-03 02:20:54 · 3331 阅读 · 0 评论 -
帆软报表导出总结
下面总结一下导出的原理以及一些扩展点。我们知道帆软报表在预览的时候url一般为:http://localhost:8075/webroot/decision/view/report?viewlet=xxxx.cpt。而当我们在报表界面中点击一些操作时,比如:打印:http://localhost:8075/webroot/decision/view/report?op=fr_pdfprint&cmd=check_registerPDF导出:http://localhost:8075/we原创 2022-05-02 18:32:55 · 2030 阅读 · 0 评论 -
帆软报表导出分析六 使用ExcelExportCellValueProvider扩展来改变excel导出时单元格的值
在导出需求的个性化处理中,并非所有的个性化都是要重新导出一种新的文件格式,或者对所有的现有导出逻辑都全部重来一次。部分用户需要的仅仅是对部分导出逻辑进行调整即可满足需求,帆软对这类场景提供了一系列的接口针对性的对导出的细分和细节进行处理。而ExcelExportCellValueProvider接口就是其中之一,允许开发者在导出excel的时候,对导出的值进行处理。ExcelExportCellValueProvider接口主要用于导出值的格式转换,比如 10000转换成 1万。看看我们的实现,pl原创 2022-05-02 07:03:03 · 593 阅读 · 2 评论 -
帆软报表导出分析五 使用PDFExporterCreator扩展来处理PDF导出
帆软报表中涉及到pdf导出的地方有:打印时的预览,导出中的pdf导出,设计器中的输出PDF格式。看看PDFExporterCreator扩展的接口定义:public interface PDFExporterCreator extends Immutable { String MARK_STRING = "PDFExporterCreator"; int CURRENT_LEVEL = 1; @Deprecated PDFExporterProce原创 2022-05-01 20:52:14 · 2099 阅读 · 0 评论 -
帆软报表导出分析四 使用ExcelExportAppProvider扩展来拦截excel导出中的原样导出、分页导出和分页分 sheet
我们在预览报表时,发现导出excel导出时有三种类型的导出:分页导出:如果报表模板是分页的,这里会按照分页的结果形式导出,重复的标题等也会重复。原样导出:即使报表模板是分页的这里也不会分页,会连续导出,如果有重复标题的,标题也只显示一次分页分sheet导出:报表结果的每一页为一个 sheet 保存在 Excel 文件中当我们需要做一些其他的excel细分导出或者对现有的某中细分类型导出进行调整时,可以使用ExcelExportAppProvider接口处理。该接口常用于对exce原创 2022-05-01 18:05:22 · 2559 阅读 · 0 评论 -
帆软报表导出分析三 使用FormExportProcessor扩展导出决策报表的JSON格式
前面说的导出都是针对cpt报表来说的,对于决策报表的导出需要用到FormExportProcessor扩展。决策报表的预览导出也是通过下面的请求的。然后会走到这里:这里插一句,不同报表对应的weblet,帆软报表默认提供了6种实现:决策报表对应的就是FormletCreator。FormletCreator创建出来的自然就是Formlet。Formlet在它的dealWithFormlet方法中获取了FormExportProcessor扩展。 public st原创 2022-05-01 00:57:20 · 447 阅读 · 0 评论 -
帆软报表导出分析二 使用ExportExtensionProcessor扩展拦截导出过程。添加一些统一的逻辑。
帆软报表支持多种格式的导出,如果我们想对所有格式的导出做一些统一处理,比如导出时统一打印一些日志,对导出的文件进行加密、备份等等操作。上一篇我们分析到导出时会调用ExportService的dealWithExport方法的时候说那里有一个扩展。现在来看看getExportExtensionProcessor这个方法: private static ExportExtensionProcessor getExportExtensionProcessor() { Object原创 2022-04-30 11:59:09 · 413 阅读 · 0 评论 -
帆软报表导出分析一 使用ExportOperateProvider扩展导出JSON格式
帆软报表的导出形式有两种形式。第一种是通过url方式,跟预览报表一样,只是会在url上多加一个format的参数,比如,预览报表的url为:http://localhost:8075/webroot/decision/view/report?viewlet=json_export.cpt,再后面加一个format参数,http://localhost:8075/webroot/decision/view/report?viewlet=json_export.cpt&format=...原创 2022-04-29 15:06:50 · 1264 阅读 · 0 评论 -
利用动态字节码工具包,在模板的打开与保存时拦截,加入自己的逻辑,比如对模板进行加密解密
使用帆软报表动态拦截jar包-Java文档类资源-CSDN下载这个jar来实现拦截。比如我有个类:public class MyAAA { public void print(){ FineLoggerFactory.getLogger().info("我是AAA"); }}里面的print方法我想在执行打印出我是AAA之前拦截一下,输出我是BBB,这时我们利用上面连接里的jar包来实现方法拦截。看一下拦截类的写法:@VersionChecker原创 2022-04-28 14:05:44 · 305 阅读 · 0 评论 -
帆软报表模板加密
现在实现一个功能,在设计器中打开报表时解密,保存报表时对报表文件内容AES加密后再保存。这里需要用到TemplateEncryptProvider扩展。这里特别注意的一个类就com.fr.io.FineEncryptUtils,设计器打开报表时会调用该类的decode方法,保存报表时调用encode方法,这两个方法都会调用我们的扩展类TemplateEncryptProvider的实现,看下FineEncryptUtils源码:package com.fr.io;import com.fr.原创 2022-04-28 00:43:11 · 1024 阅读 · 0 评论 -
帆软报表二次开发报表界面引入自己的js文件。
这里所说的引入自己的js文件,这里有多个地方可以隐去自己的js代码:第一:在决策系统登录界面引入:在这里引入自己的js文件可能需要修改默认的登录界面相关逻辑。第二;在决策系统里引入JS文件,这里分为两种情况,一种是相对与整个系统引入js文件,另外一种就是扩展菜单所引入的js文件。第三种就是在我们的报表引入js文件。这里专门针对第三种说说。第三种我们一般在开发报表的时候会根据报表的相关事件来写一些js片段。比如:在填报提交成功后调用一些js逻辑。...原创 2022-04-26 00:29:29 · 3283 阅读 · 0 评论 -
帆软报表二次开发之读取.properties配置文件
先看图:配置文件中的值。代码运行时读取的值。帆软报表中我们使用PropertiesUtils.getProperties("conf").getProperty("write_report")的形式来读取,这里的conf是我们的properties文件的名字,write_report是文件中某个配置项的名字。帆软报表中要求我们的properties文件必须放在\webroot\WEB-INF\resources目录下就可以使用PropertiesUtils工具类。...原创 2022-04-03 18:23:57 · 1083 阅读 · 0 评论 -
帆软报表二次开发之读取XML配置文件
在插件开发中,有时需要将配置信息存储在一个xml文件中,当插件启动时读取这个xml文件,一般xml文件是放在/webroot下的某个文件夹下。比如在webroot下的sxka下写了一个role.xml 的配置文件,内容为:<root> <roleType type="企业管理员" roleCode="111" selected="true" disabled="true" owner="1" isTab="false" audit="false" name="企业管理员"原创 2022-04-03 17:22:23 · 948 阅读 · 0 评论