找回密码
 注册成为天翎用户
查看: 2467|回复: 8

视图过滤设计转SQL脚本(视图列表数据只能上级查看)

[复制链接]
fzzsh 发表于 2016-7-24 20:55:39 | 显示全部楼层 |阅读模式
本帖最后由 andy1 于 2016-8-29 09:02 编辑


这个上级权限字段,如果现在该用SQL來写过滤条件要怎么实现

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册成为天翎用户

×
karrman 发表于 2016-7-25 12:04:36 | 显示全部楼层
//获取当前用户ID
var webuserid=getWebUser().getId();
//单据只能是创建人的上级才能查看
var sql="select * from tlk_表单 where author=(select id from obpm.t_user where superior='"+webuserid+"')";
println("sql======"+sql);
sql;
回复

使用道具 举报

 楼主| fzzsh 发表于 2016-7-25 15:12:55 | 显示全部楼层
上级的上级也能看么?按需求是可以的,这个SQL可以么?
回复

使用道具 举报

 楼主| fzzsh 发表于 2016-7-25 21:08:07 | 显示全部楼层
本帖最后由 fzzsh 于 2016-7-25 21:14 编辑


发现和需求实现还有差距,我这的权限字段针对的是部门,而不是人员。需要要求省级人员可以看省市县三级数据,市级人员可以看市级数据,县级人员只能看本县数据

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册成为天翎用户

×
回复

使用道具 举报

 楼主| fzzsh 发表于 2016-8-5 08:30:59 | 显示全部楼层

我该怎么写这个sql



auth_form_expert数据怎么来的,都是空的?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册成为天翎用户

×
回复

使用道具 举报

wander 发表于 2016-8-6 14:04:04 | 显示全部楼层
数据既然有省、市、县的区别,首先你要有一个标志字段来区别你的数据。设置了标识字段后,通过getWebUser()获取当前登录用户,然后获取当前默认部门。如果默认部门是省级,就显示所有数据。市、县
就加过滤条件,通过标识字段过滤。
回复

使用道具 举报

 楼主| fzzsh 发表于 2016-8-9 00:00:13 | 显示全部楼层
简化一下问题:求当前登陆人所在部门的所有上级部门(可能超过3层),请用iscript写出脚本
回复

使用道具 举报

andy1 发表于 2016-8-9 11:39:08 | 显示全部楼层
可以参考一下以下脚本
  1. var user=getWebUser();
  2. var depid=user.gerDefaultDepartment();
  3. var depproc=getDeparmentProcess();
  4. var odeps =depproc.getSuperiorLis( depid);
  5. var sudep=odeps.iterator().next();
  6. sudep.gerUsers();
  7. 这个是获取用户的上级部门。
复制代码


  1. /**
  2. * 获取指定部门的下级部门
  3. *
  4. * @param parent
  5. *            部门ID
  6. * @return 返回指定部门的下级部门对象的集合
  7. */
  8. function getDepartmentsByParent(parent) { // parent部门ID
  9.         var process = createProcess("cn.myapps.core.department.ejb.DepartmentProcess");
  10.         return process.getDatasByParent(parent);
  11. }
复制代码
回复

使用道具 举报

 楼主| fzzsh 发表于 2016-8-28 22:07:45 | 显示全部楼层
andy1 发表于 2016-8-9 11:39
可以参考一下以下脚本

已解决,代码如下(省略了 var sql=一行)
var user = getWebUser();
var userid=user.getId();
var doc = getCurrentDocument();
var curdept = user.getDepartments();
var depid ="";
for(var im = curdept .iterator();curdept !=null && im.hasNext();){
depid = im.next().getId();
}
println("depid :==============" + depid );

var depNameList = depid +",";
if (depid != null) {
    var deptProcess = createProcess("cn.myapps.core.department.ejb.DepartmentProcess");
    var dept = deptProcess.doView(depid); //doView的参数是部门的id
    //var odeps = deptProcess.getSuperiorDeptList(depid); //当前部门上级的id集合
    var odeps= deptProcess.getUnderDeptList(depid);//当前部门下级的id集合
    if (odeps != null && odeps.size() > 0) {
        for (var j = 0; j < odeps.size(); j++) {
            for (var it = odeps.iterator(); it.hasNext();) {
                var department = it.next();
                depNameList += department.getId() +","; //取得各级部门名称并合并
            }
        }
    }
        println("depNameList :==============" + depNameList  );
        if(depid!=null){
              sql += " and charindex( b.DEPARTMENTID ,'" + depNameList + "')>0" ;
        }
}
println("sql :==============" + sql );
sql;
回复

使用道具 举报

本版积分规则

手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-14 00:23

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表