...
4.参考数据权限设置中,在报表的数据集、业务主题过滤器等相关资源中,使用该参数即可。以数据集为例,使用该参数如下:
...
方式三:使用下拉树参数实现
通过将机构信息构成树的形式,并控制根节点为用户所属即可,可以实现数据权限的控制。
优点:机构层级选择清晰,接受度高
缺点:实现较复杂缺点:数据需要能够构造父子结构,实现较复杂
设置步骤如下:
1.新建用户属性
在资源定制->公共设置->用户属性节点下,新建用户属性“用户机构层级”,通过当前登录用户的默认所属组,从业务库的机构表中,获取该用户组(也即用户的所属机构)的层级。定义如下:
...
根据用户所属机构信息,从机构表中查询该字段,返回的结果包含0,1,2
2.创建下拉树参数
(1)在创建下拉树参数之前,请先参考演示下拉树参数示例,了解下拉树参数控件设置
(1)创建下拉树参数,名称为“选择机构(2)创建下拉树参数,名称为“选择机构_下拉树”,控件类型为“下拉树”
(2)勾选“允许多选”
(3)(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到一起,查询出用户的所有机构,并找到其父机构。以构造成父子