帆软爱好者
编程爱好者
展开
-
FineUI分页表格组件,支持勾选
【代码】FineUI分页表格组件,支持勾选。原创 2024-09-05 14:45:03 · 338 阅读 · 0 评论 -
finebi或者finereport发邮件
我们二次开发中,如果想利用产品自带的发邮件的功能,来发送自己的邮件内容。这里配好了发件人,以及默认发件人后,原创 2024-06-02 09:21:52 · 353 阅读 · 0 评论 -
FineBi导出Excel后台版实现
我这里是将这个帮助文档中导出的excel文件写到服务器某个地方后,对excel进行其他操作后再下载。由于原有接口耦合了HttpServletRequest req, HttpServletResponse res对象,所以想要再后台运行需要改造原有代码。需要将DirectExcelExportServiceImpl改造,参考他的实现,改造类有两个:MyAbstractDirectExportService,MyDirectExcelExportServiceImpl。就是不通过浏览器,在后台运行的导出。原创 2024-06-01 18:16:07 · 319 阅读 · 2 评论 -
Fr目录挂载第三方连接后,在目录里打开的时候是直接弹出一个新窗口打开,而不是在决策系统打开,并且菜单上不要有选中状态,
如果有选中状态,如果想点击其他的,需要先取消这个的选中状态。原创 2024-04-22 07:24:40 · 72 阅读 · 0 评论 -
FineBi中创建自定义的图表
这里会发送方几个消息。4 在bi.plugin.client.min.js中定义了window.BIPlugin对象,我们的自定义组表组件的js就是通过BIPlugin对象来将我们自己的逻辑注入进去。从init方法中可以看到,他会监听iframe的外部的消息,init可以有两个参数,第一个是render函数,第二个是refresh函数。3 自定义图表组件是用conf.min.js中的 bi.custom.chartdisplay 组件来渲染的。-- 下面的js代码是我们代码中要求引入的 -->原创 2024-04-22 06:54:09 · 575 阅读 · 0 评论 -
finereport11远程设计器保存模板时源码分析
相关的类有:ServerTplOperator,RemoteDesignHelper,FileLockHelper,TplOperator。5 下一步ServerWorkResource的save方法。它实现了接口WorkResource,里面就是对文件的基本操作。messageListener的默认实现类是WorkspaceServerInvoker,可以修改它来做自己的事。2 远程设计器收到本地保存消息是在RemoteDesignResource的onMessage方法。原创 2024-04-16 08:41:40 · 98 阅读 · 0 评论 -
fr中如果要调整FVS中的图表类组件的相关属性的研究摘要
resource=/com/fr/plugin/wysiwyg/web/static/js/preview.f8c6df67.chunk.js中。用svg画的,vancharts-all.js中搜索_svgRender方法,他内部是遍历this.series来绘制每条path。对dom元素inner-widget-container就行管理的类是:27085行, function A(t) ,加了一些事件的监听。搜索 t.ctx.fillText(r, u, h),// 这里可以执行你需要的操作。原创 2024-04-09 07:02:20 · 168 阅读 · 0 评论 -
完美解决Iframe嵌入帆软报表出现跨域cookie写不进去的问题
那报表后续的请求如何加上这个fine_auth_token,通过观察,我们发现,如果给报表url上加上fine_auth_token,后续的请求中的Refer也会有这个fine_auth_token。我们可以这样想,如果帆软内部获取token,如果从cookie中获取不到,就从url上获取,如果url上也获取不到,那么就从请求Refer请求头中获取也可以拿到这个token了。从上面看到,如果从cookie中没有获取到,就从请求头中获取,还是没有就从paramter中获取。原创 2024-02-29 15:45:22 · 1204 阅读 · 0 评论 -
FCRP第一题详解一
所以这里不能通过SQL语句来过滤,SQL语句中中只能全部查询出来,这样保证了下拉框的数据是全部,单元格里的数据只能通过数据列过滤来实现。公式里这样写:if(len($productName)==0,nofilter,$productName)整个模板只能出现一个数据集,下拉复选框与报表主体共用一个数据集,且不影响互相显示。然后运行模板,初步做到了下拉框里是所有的商品名,选中商品,查询出来的结果就是谁。下拉框的控件名字改为 productName,绑定模板参数。返回值为数组,返回值里放的是产品名。原创 2024-01-09 20:41:48 · 743 阅读 · 0 评论 -
如何将ElementUI组件库中的时间控件迁移到帆软报表中
appearanceForWidget:返回组件属性的实现类,这里面就是设计器右边属性面板上的属性,实现当修改了属性面板的值会传递到 classForWidget对应的类中来保存。classForWidget:返回组件的定义类,里面定义组件的属性,运行时需要向前端传递哪些属性,序列化保存,读出配置的属性。需求:需要将ElementUI组件库中的时间控件迁移到帆软报表中,具体为普通报表的参数面板中,填报报表的组件中,决策报表的组件与参数面板中。iconPathForWidget:设计器上该组件的图标。原创 2024-01-05 11:59:39 · 867 阅读 · 0 评论 -
帆软报表如何灵活控制水印的显示
经过分析发现报表预览时,这个属性是在MemXPageWorkBookExecutor类的dealWithExecutedAttr方法中来做的,填报是在WriteWorkBookExecutor类的dealWithExecutedAttr类中实现的。在他的newAppExporter方法中使用自己的exporter,在自己的exporter的exportFor2007方法中提前去处理ResultWorkBook的WatermarkAttr属性。这时产品的功能就实现不了了。原创 2023-12-30 20:58:37 · 747 阅读 · 0 评论 -
帆软报表中定时调度中的最后一步如何增加新的处理方式
2 后端改造,首先定义一个com.fr.plugin.xxxx.bean的类,来封装这些属性,他需要实现BaseOutputAction类,他的runType需要返回RunType.SEND_FILE。在定时调度中,到调度执行完之后,我们可能想做一些别的事情,当自带的处理方式不满足时,可以自定义自己的处理方式。可以从bean里拿到页面配置的信息,从Map中拿到调度里配置的其他信息,就可以完成你想做的事了。前端需要处理新的处理方式的界面,后端需要读出前端的配置信息来做实际的处理。原创 2023-12-29 21:11:12 · 1059 阅读 · 0 评论 -
帆软报表中定时调度中使用自己的短信平台,并且不使用官方商城里的模板
首先我们观察 这里获取短信模板信息的请求是v10/config/sms,我们可以将他返回的内容更改,就能达到读取我们自己的模板信息。限制太多,使用起来非常不方便,如果我们想要使用自己的短信签名,并且使用自己的短信发送平台。其次,通过官方的开放接口SMSServiceProvider可以调用自己的短信平台来发送短信。此时需要帆软市场,并且短信模板只能使用帆软市场里配置的短信模板。调用自己的短信平台来发送。原创 2023-12-29 11:31:37 · 527 阅读 · 0 评论 -
帆软报表初始化时关于SessionPoolManager的过程
首先看到这里有个开放接口 RequestParameterCollector,如果我们想要收集一些特殊参数,可以通过他来实现。Weblet的dealWeblet方法中,不同的报表类型返回的是不同的Weblet,比如cpt返回的就是StreamReportlet。最后,如果我们想要获取,怎么获取呢,在每个报表访问的时候有个sessionId,我们可以跟他他来获取。这里是他的创建过程,这里首先是收集相关参数到一个Map中。可以看到我们平常用的一些变量比如fine_username是在这里收集到的。原创 2023-12-15 12:46:55 · 511 阅读 · 0 评论 -
帆软报表分页预览如何增加一种新的导出类型。
首先该页面的内容是通过MemXPageActor的flushHtml方法产生的。所以我们需要继承MemXPageActor来重载flushHtml。在里面加入自己的新的菜单项以及调用的js。通过分析源码,发现这个菜单的定义是再报表预览加载的html页面里面。如图,这里要在 导出下拉菜单中新增一个签章PDF的导出。咋们如何再这里面插入我们新加的菜单项呢。原创 2023-07-14 20:20:20 · 553 阅读 · 0 评论 -
帆软报表分页预览打印,如果列数过多,打印时会将多余的列放到第二页来打印,现在需要把所有的列都放在一页来打印。并且填满整个区域
但是我现在想要的效果是所有的列都在一页里,列不分页。并且要填满整个区域。当我们的报表列数过多时,打印的时候多余的列会分页。可以看到27列都显示在一页里了。原创 2023-05-30 20:57:14 · 1669 阅读 · 0 评论 -
帆软报表决策系统定时调度后台代码知识点
1 添加定时调度的控制器是com.fr.web.controller.schedule.web.api.ScheduleTaskResource,里面有对任务的添加,执行,删除,更新等操作。2 定时调度的执行是在com.fr.schedule.extension.report.job.execute.ExecutePageJob的doJob方法,2 定时任务执行是在com.fr.schedule.feature.job.result.ExecuteResultJobdoJob方法中。原创 2023-03-31 17:08:17 · 908 阅读 · 1 评论 -
帆软报表设计器 数据集之数据库查询
然后调用TableDataFactory的creatTableDataPane。当点击数据库查询时,调用TableDataTreePane的。看到他会从map中来获取。原创 2023-03-21 23:05:36 · 440 阅读 · 0 评论 -
帆软报表中使用悦享版文件上传下载插件UUID问题
这里只说上传,当我们使用悦享版文件上传下载插件做上传填报时,按照插件说明,如果文件名配置为uuid,通过函数FILENAME获取到的其实是文件的原始名称,并不是uuid名称.那么如果我想拿到这个uuid,并且保存到数据库中时,如何做呢?这里做上传有两种方案,第一种是根据插件说明中的使用事件,就是另外放一个按钮,点击按钮先上传文件后拿到uuid,再点报表的提交,将uuid拿到后与其他填报字段一起入库。原创 2023-03-21 16:37:21 · 796 阅读 · 0 评论 -
帆软报表设计器零碎知识点
var10.getRoleType() == RoleType.CUSTOM 表示是角色,远程设计权限分为按用户,按角色来配置,RoleType.CUSTOM表示这条数据是按角色来配置的。设计器中获取模板目录树有个组件叫 com.fr.design.remote.ui.tree.FileAuthorityTree。1 设计器上的远程设计权限管理菜单类是RemoteDesignAuthManagerAction。选择了用户或者角色最后保存时,是通过下面存的。当设计器连接的是远程时。原创 2023-03-21 06:01:06 · 220 阅读 · 0 评论 -
分析帆软填报报表点提交的逻辑
比如op=fr_write这个服务中定义的动作处理不仅包括submit_w_report,还包括cal_write_cell,read_w_contentappend_w_data,delete_w_data等。这些都在FbtfrGtjocxa类中定义的,submit_w_report.对应的是类FbtfrGjrdamLwiimpXasipp。2 我们知道当点提交时,发送的请求中的参数为 op=fr_write,cmd=submit_w_report.他里面的dealWithConn方法是来创建连接的。原创 2023-03-01 13:17:47 · 1078 阅读 · 5 评论 -
分析finebi5.x仪表板组件获取数据过程(数据是数据集或者sql的)
当我们访问这个连接时,会来到FineLinkAction的getShareReport方法。这里面会加载一个show.min.js。原创 2023-02-12 10:36:03 · 461 阅读 · 0 评论 -
帆软报表二次开发将单元格列名转为索引并获取值
比如我的报表的单元格上有一个单元格是AE1这个单元格,我向获得他的值。原创 2023-02-03 23:05:04 · 445 阅读 · 0 评论 -
帆软报表设计器中如何获取单元格中的widget以及当前选中的widget
【代码】帆软报表设计器中如何获取单元格中的widget以及当前选中的widget。原创 2023-01-24 18:02:24 · 418 阅读 · 0 评论 -
帆软报表图表组件开发记录
1 图表组件的开发也跟其他组件开发是一样的,这里有两个东西,一个是组件本身,一个是组件的属性面板。当编辑组件时候,组件的属性值会传递到属性面板上,当在属性面板上修改了属性值,会传递到组件中去,当点击保存报表时,组件会将属性值存到报表的xml文件里,当预览的时候,组件会将他的属性通过json传递到前端js中,js端就可以通过这些属性来构建界面了。3 当设计器启动时,会注册一些图表相关的东西,这是com.fr.design.chart.ChartDesignerActivator的start方法中定义的,原创 2023-01-12 17:17:59 · 905 阅读 · 0 评论 -
帆软报表决策报表开发自定义组件分析
自己定义的组件名字到前端时系统默认加上report.main.parameter_container.controller.比如你定义的组件名字是paramButton,到前端时,系统将以report.main.parameter_container.controller.paramButton来创建。前端有两套注册组件的代码,一套使用$.shortcut,一套使用 BI.shortcut。1 后台写法与开发参数面板组件一样的写法。原创 2023-01-12 07:40:50 · 505 阅读 · 0 评论 -
帆软报表设计器参数面板相关类
1 参数面板最外层的类是:com.fr.design.parameter.ParameterDefinitePane。原创 2023-01-09 10:45:16 · 434 阅读 · 0 评论 -
finereport设计器中点击单元格的时候控件属性面板是怎么出来的以及如何开发填报下的组件
classForWidget(),一个是appearanceForWidget(),前者就是我们的Widget类,后者就是Widget对应的属性面板的类。Widget代表单元格上对应的组件类,appearanceForWidget就是这个组件类对应的属性再属性面板的展示,这两者之前是怎么联系起来的呢?这里widget与appearance就可以交互了,比如属性面板上的值写到Widget里,widget里存放的属性放到appearance上。系统自带的组件的映射关系是放在defineMap里的。原创 2022-12-31 17:36:00 · 911 阅读 · 0 评论 -
FineReport公共服务接口插件说明
插件下载地址:链接:https://pan.baidu.com/s/1K6GsA9PECoc1lC9-ErGnkA。1 获取设计器中模板文件的树结构数据。该插件提供了一些公共服务接口,HTTP调用。2 修改某个用户的密码。3 修改所有用户的密码。1 获取所有用户名字。原创 2022-12-27 09:01:59 · 1224 阅读 · 0 评论 -
说一说Fine BI中的数据权限是如何实现的。
再FineBi的决策系统中,我们可以把我们的数据集赋查看权限给某个员工,查看权限还包括数据集的某些列,某些行只能哪些人看到。这个决策系统里也已经实现了,当我们的需求需要结合这些与自己的系统向结合的时候就需要知道他是怎么实现的。我需要把这些数据集展示出来都给所有的员工看到,员工自己来申请需要查看某个数据集的哪些字段,哪些行数据,当员工申请之后可能需要别的系统来审核,审核通过后才会把这些权限真正赋给某个员工。1 首先是需要读出这些数据集,抽取数据与实时数据的读取是不一样的。上面是读取分组-业务包的数据。原创 2022-12-20 23:07:41 · 1851 阅读 · 0 评论 -
帆软FCP第一题,finereport报表制作总结:每页既有页内合计,又有总合计,包含解决页合计,总合计最后一页重复的问题
1 首先分页,分页有多种实现,这里要考虑页合计,所以这里应该采用分组分页,就是将每页数据进行分组,分页合计跟随组扩展,这样就可以把组内的某个列值相加得到页合计,总合计不要扩展,就能将整个数据的某列加起来得到总合计。1. 概述1.1 版本报表服务器版本11.01.2 功能简介当对模板进行分页预览时,若模板的页面设置超过了浏览器的大小,在进行向下或者向左滚动时标题也会滚动,此时就很难分清当前单元格对应的是哪一列了,为。表格分页: 如果有表格头,要求每页都显示,可以用冻结,页可以用设置重复标题行。原创 2022-12-01 10:15:34 · 2635 阅读 · 1 评论 -
帆软报表决策系统 上传excel文件
这个属于二次开发的,比如我要在决策系统中开发一个功能,上传excel文件或者其他文件,原创 2022-11-14 17:06:17 · 1152 阅读 · 0 评论 -
帆软报表决策系统用户管理中添加用户,对手机号,emali添加自己的校验逻辑
系统自带的不满足,有自己的校验逻辑,实现原理,修改原有添加用户的相关逻辑。1 将原有添加弹框源码拿来修改。原创 2022-11-14 08:55:53 · 386 阅读 · 0 评论 -
帆软报表决策系统用户管理中的导入用户,需要对数据集中的数据进行验证,不符合要求的数据要么导入失败,要么过滤掉。
这里不想覆盖原有的导入方法,所以是新写一个js方法newImportUsers,由由于确定按钮于确定按钮调用的是store中的方法,所以我们需要将弹框组件的model改成自己的。这里面大部分是原有导入的逻辑,将原来TableDataSyncAction的逻辑又搬到自己写的TableDataSyncAction中。这样将原有弹框的model换成自己的,再自己的model里调用自己新写的导入方法newImportUsers。1 第一步 修改前端,将确定按钮原有的调用方法,改成自己写的方法。原创 2022-11-14 08:46:13 · 515 阅读 · 0 评论 -
帆软报表程序数据集获取参数面板上的参数值
比如我们想在程序数据集中想根据tableName参数的值来动态创建数据集的列。那么如何获取该参数的值呢?原创 2022-11-04 10:44:46 · 2465 阅读 · 0 评论 -
帆软报表DSModifyProvider扩展
DSModifyProvider扩展可以让我们当平台使用数据集的时候,我们能修改其sql,数据连接等相关属性。原创 2022-11-03 09:50:01 · 204 阅读 · 0 评论 -
自己写代码调用服务器数据集的执行。
比如我在服务器数据集里创建一个SQL语句为:select * from decision_log_conf where operatorUser ='${userName}',名字为ds123的数据库数据集.在这段代码的执行过程中,有一个TableDataProvider的扩展可以对我们的SQL语句的参数以及SQL语句进行操作。有时候我们再设计器创建了一个服务器数据集,因为某种原因需要在代码里来调用这个数据集从而获取这个数据集的结果。原创 2022-09-29 10:33:49 · 605 阅读 · 0 评论 -
帆软二次开发中如果判断所有的插件已经运行了。
【代码】帆软二次开发中如果判断所有的插件已经运行了。原创 2022-09-27 12:10:50 · 274 阅读 · 0 评论 -
帆软报表调用存储过程
根据帆软报表的相关源码,自己来实现直接用代码来调用存储过程。首先我们要调用的村粗过程存在于帆软报表配置的某个连接中。原创 2022-09-24 08:55:20 · 2719 阅读 · 0 评论 -
帆软报表设计器常用代码知识
9.获取当前设计器被选中的组件(仅限决策报表或参数界面):XCreator xCreator = designer.getSelectionModel().getSelection().getSelectedCreator();7.获取当前编辑的模板对象 BaseBook target = DesignerContext.getDesignerFrame().getSelectedJTemplate().getTarget();这部分方法比较零散,会根据接口文档和专题的需要逐渐补充。原创 2022-09-09 14:52:56 · 690 阅读 · 0 评论