暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

帆软报表开发规范

万物可述 2021-06-29
2559



这是万物可述的第5篇原创文章





报表样式规范

01

标题

微软雅黑,16,加粗,居中,白色背景,黑色字体,行高:12

02

表头

微软雅黑,10,加粗,居中,背景 : RGB(67, 118, 201),白色字体。

行高:6.02

03

表内容

文本类型:微软雅黑,9,字数少于5个字居中设置,多余5字的靠左设置,表样有特殊要求的按照要求处理

日期类型:微软雅黑,9,居中

整数类型:微软雅黑,9,靠右,加千分符,去除小数位

小数类型:微软雅黑,9,靠右,加千分符,加两位小数精度,另外注意表样的小数类型单位设置

百分比类型:宋体,9,靠右,格式设置为百分比,精度为两位小数。

合计:微软雅黑,9,加粗,居中,背景:RGB(255, 240, 207)

行高:5.02(默认)

参数:微软雅黑,9,无边框。

所有样式都加到预定义样式中,可以直接使用。

04

隔行显示不同背景色

背景颜色:#eeeeee

右击数据列第一个单元格,选择条件属性,添加一个条件属性,选择改变的属性为背景。

满足条件row()%2==0时,给这一行加上背景色。row()为获取当前行号,被2整除即偶数行有背景,奇数行没有背景。

05

报表边框

标题行边框为白色

表头和数据列颜色配置:#cacaca

已在预定义样式中设置好,无需设置。

06

模板自适应

字体和表格使用全局设置,都为不适应。已设置好。

07

横向纵向不分页

当报表内容行高列宽超过纸张大小时,分页预览超出的行和列部分都会到下一页显示,但是您可能希望所有的列都在一页显示,如下图所示:

在预览模板的URL后增加&__bypagesize__=false,即可实现横向纵向不分页。参数在后台拼接,不需要自己增加。

08

每页固定行数

选择条件属性,行后分页,添加公式,&A5 % 50 = 0          说明:A5为第一个数据单元格,50为一页的条目数,按50条一页展示。

报表会50行自动分页,现在报表系统后台拼接了横向纵向不分页,需要在数据列第一个单元格增加强制分页。

09

重复和冻结报表

选择模板,重复与冻结设置,选择需要冻结列数或行数。

报表标题和表头设置为重复行,并冻结。

10

浏览单元格内容

浏览报表的时候不需要显示,导出报表需要内容。其他属性中,把浏览单元格内容选项去掉。

11

自动调整宽度

选中其他参数中的自动调整列宽,根据字段值的长度自动调整。大数据报表尽量不使用。

12

转换规则

实际值为代码,显示值为中文,等类似的转换形式。可以自定义转换规则,也可以根据数据库来转换。

13

命名规范

报表使用pg数据库所对应


的编号命名cpt文件,没有的进行增加。保存后选择模板-模板web属性,把报表的中文名字填写在标题栏。


数据查询,服务器控件命名需要在名字之前加上系统简称。如EDW_起始时间。




报表控件规范

01

控件内容

必选控件:必选控件去掉允许为空,并在错误信息里填入,“请输入***”

可选控件:在数据集定义可选控件,

日期控件:默认设置当前日期前一天。公式:TODAY()-1。

月份默认上月,公式:MONTHDELTA(TODAY(),-1)。

返回值类型为日期型:即无论你设置的日期格式是什么格式的,返回的格式都是日期型的即:yyyy-MM-dd

返回值类型为字符串型:即你将日期格式定义成什么格式,返回的日期就是什么格式的,如定义成MM/d/yy,那么返回的格式也是MM/d/yy

查询控件:把默认的查询按钮删除,点击预定义按钮选择查询按钮。

下拉树控件:(gs003—币种)下拉树需要先定义数据集,再定义树数据集,最后在选择控件,自动构建。数据集都写在服器数据集中。

多选下拉树:(gs003—贷款科目)定义方式同下拉树,选择多选,只返回叶子节点,结果返回完整层次路劲。在数据集中使用treelayer函数处理多选参数。


${if(len(业务品种)==0,""," and substr(A.biz_name,1,5) in ("+"'"+treelayer(业务品种,true,"\',\'")+"'"+")")}

假设$tree勾选的值为中国-江苏-南京,中国-浙江-杭州

treelayer($tree, true, "\',\'")返回”','”分割的所选中节点字符串”南京','杭州”。

treelayer($tree, 2)以数组形式返回第二层[“江苏”,”浙江”]。

treelayer($tree, 2, true, "\',\'")返回”','”分割的字符串”江苏','浙江“。

02

控件位置

全部添加后,第一个默认,控件长度根据控件值长度,自行拖拉,上下对齐,控件间隔为5像素。控件上下间隔为默认4像素。控件和查询按钮为30像素。

日期宽度:120

上下宽度手动拖拉,目测保持一样。

03

控件管理

所有控件都加入到服务器中,控件管理。

使用的时候把原来的一键添加的控件删除,使用定义好的控件。把控件名字改成和标签名称一样就匹配上了。

04

展示表头

进入报表需要展现表头,点击查询前展现报表内容。

05

权限管理

帆软admin用户用于服务器配置,配置服务器数据集,控件等。开发使用非admin用户。避免服务器数据集,控件等因更新不同时而消失。

06

大数据量报表开发(gs003)

此类报表多为明细表,设计时尽量简洁。不要做

过多操作以免影响性能。

数据量1万/天,可以选择区间,或者10万/年,

可以选择区间,这些报表就可以考虑做成大数据

报表。

此方法针对greenplum数据库,其他数据库略有

区别。

1.新建数据集

SELECT * FROM 订单明细

2.添加分页查询SQL语句

SELECT *

  FROM (SELECT *

          FROM (SELECT *

                  FROM 订单明细

                 ORDER BY 订单ID ASC limit

${fr_pagesize * fr_pagenumber}) AS e1

         ORDER BY 订单ID DESC limit ${

if (fr_pagenumber == int((((fr_rowcount -

1) fr_pagesize) + 1)), fr_rowcount -

(fr_pagesize * (fr_pagenumber - 1)),

fr_pagesize) }) AS e2

 ORDER BY 订单ID ASC

注:其中红色字体必须一样,修改order by字

段即可。


限制时间区间范围:

给查询按钮增加点击事件,具体的JS代码如下:

(jr001)

varstart= this.options.form.getWidgetBy

Name("start

time").getValue();

var end = this.options.form.getWidgetByName("endti

me").getValue();

if( start == "" || start==null){ 判断开始日期是否为空

         alert("错误,开始时间不能为空"); 开始日期参数为空时提示

         return false;

         };

if(end == "" || end==null){ 判断结束日期是否为空

         alert("错误,结束时间不能为空"); 结束日期参数为空时提示

         return false;

         };

if( start > end){ 判断开始日期是否大于结束日期

         alert("错误,开始时间不能大于结束时间"); 开始日期大于结束日期时提示

         return false;

};

var startdate = new Date(start); 将开始日期转化为Date型

var enddate = new Date(end); //将结束日期转化成Date型

var subdate = (enddate-startdate)/ (1000 *60 *60 *24); //将两个日期相减得出的毫秒数转化为天数

if(subdate>15){ //判断结束日期是否超过开始日期后15天

         alert("错误,结束日期必须在开始日期15天之内"); //结束日期超过开始日期后的十五天时提示

         return false;

};

07

新增数据连接

选择服务器>定义数据连接,点击+>jdbc,选择所对应的数据库。填入数据,测试连接。如果失败需要把新增连接删除,否则帆软会自动测试连接,数据库有可能会被锁。

根据数据库信息,修改配置:Ip:端口:sid

增加用户名密码,点击测试连接。




帆软信息配置

01

开启分级权限管理

打开帆软决策平台,用管理员账号登录系统,点击管理系统>权限管理,可以看到管理界面分配报表权限面板中只可以分配报表的查看权限,没有授权权限,点击设置按钮,在分级权限管理标签后面开启分级授权,点击确定,页面回到权限管理主界面,此时,可以看到权限项面板后面多了一个授权的勾选项,如下图:

注:开启了分级授权选项,如果需要给某个用户分配授权权限,那么必须给该用户分配平台管理标签项中的权限管理的查看权限。

另:如果次级管理员需要将报表和平台管理的使用权限分配给其他人,首先该用户必须要有该报表和平台管理的授权权限。

02

权限分配

为技术支持部长职位进行分配权限,如上描述,在权限配置>部门职位选项中选中技术支持>部长职位,在右侧的权限项中选择报表,勾选参数查询和填报录入后面的授权复选框,此时查看复选框也会自动勾选上,以及平台管理选项里面的定时调度和权限配置的查看和授权复选框,如下图:

注:开启了分级授权选项,如果需要给某个用户分配授权权限,那么必须给该用户分配平台管理标签项中的权限管理的查看权限。

另:如果次级管理员需要将报表和平台管理的使用权限分配给其他人,首先该用户必须要有该报表和平台管理的授权权限。

03

选择可管理部门/角色

上面将技术支持部长职位的报表权限和管理平台权限都已经设置好之后,下面设置该用户可以将这些权限分配下去的用户,

在可管理部门/角色面板中选择技术支持整个部门,如下图:

04

授权权限

选择管理系统>权限管理,可看到部门职位列表中只有技术支持部门的三个职位,所以技术支持部长可以为包括自己在内的三个部门职位分配报表展示和平台管理的使用权限,技术支持部长可授权的内容包括参数查询、填报录入和定时调度,下面为技术支持总调度分配填报录入和定时调度的查看权限,如下图:

注:此时的技术支持部长就相当于次级管理员,其对自己部门的人员分配系统的使用权限,由于管理员在给技术支持部长配置授权权限的时候,并没有勾选权限管理授权复选框,即没有把权限管理的授权权限分配给该角色,所以技术支持部长没有将权限管理分配给其下级的权限,只能分配查看权限。

另:除了给部门职位分配权限之外,还可以手动添加角色,并给其分配权限。

05

增加角色

点击管理系统>用户权限,切换到角色列表下,如下图:

下面我们添加一个角色数据架构师,并且该角色下面只有一个用户Anna,表明Anna是数据架构师,如下图:

目前我们使用pactera进行报表开发,dgp_rpt_user用来单点登录预览报表,admin用户归一个人管理,需要增加服务器连接,控件等提给admin来增加。





作者:周卓远,一位目前还未秃顶的工程师
编辑:徐菲




往期推荐:

《分享#最重要的事只有一件》

《项目·沟通·管理》

《浅谈资金业务》




中国有句古语叫「金无足赤,人无完人」,但如果谁真的想打起灯笼寻找完人,最终令他感到的可能不是一种失望,而是一种意外:完人可能就是那些终日为「善」而奔走,而又在不知不觉中实现了「美」的「真」实不虚的普通人。

追求完美是正常而有缺憾的人性。

--尼采

文章转载自万物可述,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论