...
4.参考数据权限设置中,在报表的数据集、业务主题过滤器等相关资源中,使用该参数即可。以数据集为例,使用该参数如下:
...
方式三:使用下拉树参数实现
通过将机构信息构成树的形式,并控制根节点为用户所属即可,可以实现数据权限的控制。
优点:机构层级选择清晰,接受度高
...
缺点:数据需要能够构造父子结构,实现较复杂
设置步骤如下:
几种情况:
1.参数中直接包含所有的机构
2.先选择层级,再下拉选择对应层级的机构
3.下拉树参数
...
1.新建用户属性
在资源定制->公共设置->用户属性节点下,新建用户属性“用户机构层级”,通过当前登录用户的默认所属组,从业务库的机构表中,获取该用户组(也即用户的所属机构)的层级。定义如下:
根据用户所属机构信息,从机构表中查询该字段,返回的结果包含0,1,2
2.创建下拉树参数
(1)在创建下拉树参数之前,请先参考演示下拉树参数示例,了解下拉树参数控件设置
(2)创建下拉树参数,名称为“选择机构_下拉树”,控件类型为“下拉树”
(3)勾选“允许多选”
(4)结合perm_inst表,先设置根节点为:
select distinct INST_NAME from perm_inst where INST_NAME= CurrentUserDefaultDepartmentName()
使用该sql,查询出用户的机构
(5)再设置默认值为:
select inst_name ,'0' as inst_name_P from perm_inst where inst_name= CurrentUserDefaultDepartmentName()
该sql语句,查询出用户的机构。由于下拉树参数需要构成父子结构,并且不可以存在子节点和父节点值相同(会造成死循环)的情况,所以需要增加'0' 作为父节点数据
(6)设置备选值为:
select inst_name ,'0' as inst_name_P from perm_inst where inst_name= CurrentUserDefaultDepartmentName()
union
select inst_name,inst_name1 as inst_name_P from perm_inst where 用户机构层级(用户属性)=0 and inst_level=1 and inst_name1= CurrentUserDefaultDepartmentName()
union
select inst_name,inst_name2 as inst_name_P from perm_inst where ( 用户机构层级(用户属性) =0 and inst_level=2 and inst_name1= CurrentUserDefaultDepartmentName()) or ( 用户机构层级 =1 and inst_level=2 and inst_name2=CurrentUserDefaultDepartmentName())
(此SQL仅供示例参考,实际sql需要根据自己的机构逻辑进行设置)
该sql通过3个select语句 union到一起,查询出用户的所有机构,并找到其父机构。以构造成父子关系,形成下拉树
其中,
select inst_name ,'0' as inst_name_P from perm_inst where inst_name= CurrentUserDefaultDepartmentName(),获取当前机构,并为了不造成死循环,设置'0'为父机构
select inst_name,inst_name1 as inst_name_P from perm_inst where 用户机构层级(用户属性)=0 and inst_level=1 and inst_name1= CurrentUserDefaultDepartmentName(),当用户机构所属层级为0(即省联社)时,获取下级机构
select inst_name,inst_name2 as inst_name_P from perm_inst where ( 用户机构层级(用户属性) =0 and inst_level=2 and inst_name1= CurrentUserDefaultDepartmentName()) or ( 用户机构层级 =1 and inst_level=2 and inst_name2=CurrentUserDefaultDepartmentName()),当用户机构所属机构为1(即市联社)时,获取下级机构
由于第三级机构为区机构,没有下级机构,并且通过第一个select语句已经能够查询出区机构,因此不必再设置
(7)设置备选值、默认值、根节点等设置如下:
3.参考数据权限设置中,在报表的数据集、业务主题过滤器等相关资源中,使用该参数即可。以数据集为例,使用该参数如下: