需要将报表与决策系统用户权限联动,如何写数据集?

首先存在一张有关合同的报表。

当决策系统的用户角色为a(归属于A部门),可以查看报表中A部门的合同信息;当用户角色为b(归属于B部门),可以查看B部门的合同信息;当用户角色为c(管理层),可以查看报表的全部合同信息。

如何在报表中用sql联动决策系统用户权限?

想过写case when 但是在脑子说这样写,手说你不会。

不知道对不对,是否需要写参数?

image.png

如果A部门与B部门同属于执行部门角色,A部门只可以看A负责的合同数据,B部门可以看执行部门的全部合同,这种要怎么写?

FineReport 森森森森森 发布于 2021-5-8 09:56 (编辑于 2021-5-8 11:23)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
李先生你好Lv2见习互助
发布于2021-5-8 10:28

①首先确定角色的归属部门是不是唯一,如果是,帆软10.0用

GETUSERDEPARTMENTS(1)    公式获取当前用户所在部门名称,

报表的数据集 select * from table_a where  dept_name='${GETUSERDEPARTMENTS(1)}'

②如果有的部门能看所有内容:

select * from table_a where 1=1 and ${if(GETUSERDEPARTMENTS(1)='管理部门',"1=1","dept_name='"+GETUSERDEPARTMENTS(1)+"'")}

如果按详细角色来区分,把部门GETUSERDEPARTMENTS(1)换成角色fine_role或者根据姓名fine_username

  • 森森森森森 森森森森森(提问者) a部和b部同属于A部门,a部只能看A中a部的合同,b部可以看A全部的合同,这种情况呢?
    2021-05-08 10:59 
  • 李先生你好 李先生你好 回复 森森森森森(提问者) 这得打印一下GETUSERDEPARTMENTS(1)获取的是a还是A,如果是a: select * from table_a where 1=1 and ${if(GETUSERDEPARTMENTS(1)=\'b部门,\"1=1\",\"dept_name=\'\"+GETUSERDEPARTMENTS(1)+\"\'\")}
    2021-05-08 11:16 
最佳回答
0
flyingsnakeLv6资深互助
发布于2021-5-8 10:12

case when '${fr_authority}'='a' then select * from 表....

  • 森森森森森 森森森森森(提问者) 如果需要写明a归属于A部门,是 case when $fr_userposition={\"departments\":\"A\"} and $fr_authority=\'a\' then select * from 表... 这样写吗?
    2021-05-08 10:30 
最佳回答
0
luojian0323Lv7资深互助
发布于2021-5-8 10:13

角色 不是:$fine_role

吗?

  • 4关注人数
  • 489浏览人数
  • 最后回答于:2021-5-8 11:23
    请选择关闭问题的原因
    确定 取消
    返回顶部