历史版本11 :不规范组织树报表 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

在实际应用中,除了规范的组织结构外还有不规范的组织结构。如下图用2个示例来展示这两种组织树的区别:
1)规范的组织结构:除了最后一层外,所有其他层的结构都是子层。比如,自带数据连接FRDemo中的“公司部门”表数据;
2)不规范的组织结构:有的层级结构下面有子层,有的层级结构下面则没有子层,即层级结构不确定。比如,一个公司的公司结构,有总部、人力资源部、市场部等,人力资源部下面还有人力一部,人力二部,人力一部下面才是具体员工,而市场部下面直接就是具体员工。
图一:规范的组织结构
222
图二:不规范的组织结构
222
使用不规范的组织结构构建组织树报表,如果还是通过组织树报表这种方式来实现就会出现上图所示的状况,即没有子层数据的层级的子层会显示空白。
那么如何让没有子层数据的层级数据合并其下面所有层级单元格显示呢?如下图效果:
222

2. 思路编辑

要实现没有子层数据的层级数据合并其下面所有层级单元格显示,则将没有子层数据的结构所在层级单元格向下(横向扩展向下,纵向扩展向右)合并至最后一层;将该层级数据列拖曳进来,使该单元格扩展出相应层级的所有数据;同时添加过滤条件,如果其有子层,数据就过滤掉,显示为空白,再将空白行或列隐藏。以横向组织树为例,如果组织结构总共三层,具体思路步骤:
1)实现规范组织树:按规范组织结构设计三行,并实现三行分别代表三层;通过条件属性隐藏没有子层的列;
2)合并单元格:增加第二列代表第二层没有子层,第二列的第二行和第三行单元格合并,合并单元格拖入相应第二层;左侧单元格作为该单元格的上父格;上层单元格第一列和第二列合并;
3)条件属性:合并单元格后得到的是所有第二层,需要对第二列合并后的单元格添加过条件属性,只显示没有子层的第二层。

3. 操作步骤编辑

3.1 数据准备
新建内置数据集ds1,内置数据集中第二层结构中有一个结构没有子层。如下图:
3.2 制作模板实现规范组织树
由于上面准备数据是不规范的组织结构,我们按照组织树报表中的方法来实现组织树,即不使用树数据集,模板效果如下图:
222
A1、A2和A3均横向扩展,单元格设置如下表:
单元格
过滤条件
形态设置
A1parentnode等于空实际值:id 显示值:name  
A2parentnode等于单元格A1实际值:id 显示值:name  
A3parentnode等于单元格A2实际值:id 显示值:name  

注:在添加过滤条件时,需要去掉将父格子作为过滤条件前面的勾选,如下图A2单元格的过滤条件:

单元格形态设置详细请参照数据字典
此时保存模板,可以看到如下图效果,没有子层的层级结构并没有合并单元格,其子层单元格还在,但是没有数据显示:
222
注:如果使用树数据集,请参照树数据集实现组织树报表

通过条件属性隐藏没有子层的列:对A2和A3使用条件属性   ISNULL($$$)   ,如下图
222
效果如下图:
222
3.3 合并单元格
从效果图上可以看到没有下层的层级结构都被条件隐藏了,需要增加列进行显示,并且该层与下层单元格合并。
由于FineReport不支持自动合并单元格,只能手动合并,第二层数据所在单元格为第二行,最后一层在第三行。
所以新增B列,合并A2后面的单元格至第三行,即合并B2和B3单元格,将拖入id列横向扩展;设置上父格A2,过滤只限第二层结构;设置其形态为:实际值为ds1的name字段;A1单元格是第一层数据,故需要将其显示在所有数据上面,需要合并A1和B1单元格。结果如下图:
222

新单元格设置如下表:
单元格
扩展
形态设置
B2横向扩展实际值:id 显示值:name  
预览效果如下图(每个第二层后面均跟着一个合并的单元格,且显示对应层级数据):
222
3.4 条件属性
上面效果图中,增加的列显示的是所有第二层,有子层的也显示了。通对B2单元格设置条件属性,将有子层的列隐藏,REVERSE(ISNULL(A3)):
222
效果如下:
222
3.5 其他设置
上图实现的效果是表格的列表头,再列表头对应的数据(untis数据列)拖曳至第4行单元格中,如下图:

3.6 更多层组织结构
如果组织结构有4层,那么其模板样式如下图。更多层组织结构,类似设计实现。

4. 效果预览编辑

4.1 PC端预览效果
222
4.2 移动端预览效果
1)APP
222
2)H5
222

5. 已完成模板编辑

模板效果在线查看请点击不规范组织树报表.cpt
已完成模板请参照%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\GroupReport\不规范组织树报表.cpt