如图,在数据集里绑定了角色,当角色为动力厂时可以查看报表中的数据;
韩文的角色为动力厂,可以查看;孙林虽然有动力厂的角色,但是不能查看;
如何在数据集中设置只有一个角色满足就可以查看呢?
${if(len(fine_role)=0," and 1=0","and t1.yjgx in('"+ replace(fine_role,",","','") + "')")}
上面的公式意思。如果在角色中检查有动力厂的关键字就返回动力厂,否则我就返回等于看不了。这个看不了三个字是随便返回的。意思就是没有满足条件的。所以就不会查询出来数据了。
fine_role返回多个角色时其实是个数组。将数组用joinarray进行拼接,然后在SQL语句里拼接一个in语句就可以了
最终效果应该如下:
where 1=1
and t1.ygjgx in ${"('"+joinarray(fine_role,"','")+"')"}