天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
楼主: 网络菜菜

[已解决] 提交默认全部角色入选,而无法手动选人

[复制链接]
 楼主| 网络菜菜 发表于 2024-3-19 15:08:50 | 显示全部楼层
yaya 发表于 2024-3-18 13:52
审批人脚本那里要返回用户对象哦。
http://www.teemlink.com/bbs/forum.php?mod=viewthread&tid=245591& ...

工程师,您好!谢谢您的代码参照,以下是我的抄写代码,感觉有些绕。不知能否指出优化的地方。我现在是找到主管领导后,重新用主管领导的USERID去寻部门默认ID和角色ID,而且这样寻出来的有多条数据,我不会优化代码找出第一条值就跳出for循环,用了个笨方法存数组,再抽第一个值。从这里obpm5.`t_user_department_role_set`查出多值是可能打开自动归档(触发了知识库),或者其他原因多了很多角色。

(function(){
    var loginNo = "";
    var loginName = "";
    var dptid = "";
    var curDoc = getCurrentDocument();
    loginNo = curDoc.getAuthor().getLoginno();
    loginName = curDoc.getAuthor().getName();
    dptid = curDoc.getAuthor().getDefaultDepartment();
    println(loginNo);
    println(loginName);
    println(dptid);
    var dsName = "售后管理系统库";
    var id = COUNTER.genUUID();
    var sql = "SELECT ITEM_USERID FROM oa5.`tlk_主管领导导入` WHERE ITEM_DEFAULTDEPARTMENT = '" + dptid + "'";
    var list = queryByDSName(dsName, sql);
    var USERID = "";
    for(var itor = list.iterator();itor.hasNext();){
        var item = itor.next();
//        USERID += "<p>主管领导:" + item.get('ITEM_USERID') + "</p>";
        USERID += item.get('ITEM_USERID');
    }   
    println(USERID);
    var userlist = createObject("java.util.ArrayList");
    var dsName2 = "OA办公";
    var  sql2 = "SELECT ROLEID, DEPARTMENTID FROM obpm5.`t_user_department_role_set` WHERE USERID = '" + USERID + "'";
    var list2 = queryByDSName(dsName2, sql2);
    var roleid2 = "";
    var dptid2 = "";
    for(var itor2 = list2.iterator();itor2.hasNext();){
        var item2 = itor2.next();
        dptid2 += item2.get('DEPARTMENTID') + "$$";
        roleid2 += item2.get('ROLEID') + "$$";
    }
    var dptid22 = dptid2.split( "$$");
    var roleid22 = roleid2.split( "$$");
    println(dptid22[0]);
    println(roleid22[0]);
    userlist.addAll(getUsersByDptIdAndRoleId(dptid22[0],roleid22[0]));
  
    var executiveLeader = curDoc.getItemValueAsString("executiveLeader");
    var userVO = getUserById(executiveLeader);
    userlist.add(userVO);
    return userlist;
})()

补充内容 (2024-3-19 21:59):
发觉还是有多位领导入选

本帖子中包含更多资源

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

x
yaya 发表于 2024-3-19 15:27:36 | 显示全部楼层
网络菜菜 发表于 2024-3-19 15:08
工程师,您好!谢谢您的代码参照,以下是我的抄写代码,感觉有些绕。不知能否指出优化的地方。我现在是找 ...

单位领导审批这个节点希望给到哪个用户审批。
 楼主| 网络菜菜 发表于 2024-3-19 16:01:11 | 显示全部楼层
yaya 发表于 2024-3-19 15:27
单位领导审批这个节点希望给到哪个用户审批。

每个单位领导对应几个部门,表单发起者就一人从属一个部门,所以匹配出来的领导只有一个。见下图。

本帖子中包含更多资源

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

x
 楼主| 网络菜菜 发表于 2024-3-19 16:22:18 | 显示全部楼层
网络菜菜 发表于 2024-3-19 16:01
每个单位领导对应几个部门,表单发起者就一人从属一个部门,所以匹配出来的领导只有一个。见下图。

突然发觉,还有个方式,可以利用后台对obpm5.t_user表的SUPERVISOR字段写入上级领导人,那样就可以通过组织的方式来选人了,只不过这样每次变更主管领导都要对影响的人更新上级。

补充内容 (2024-3-19 16:46):
如果在管理域里,部门列表,不只是设置上级,而是有多一个上级领导人,该多好!那样才适合企业主管领导的变化。

补充内容 (2024-3-21 11:35):
可以利用后台统一更新

本帖子中包含更多资源

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

x
 楼主| 网络菜菜 发表于 2024-3-20 09:46:53 | 显示全部楼层
yaya 发表于 2024-3-19 15:27
单位领导审批这个节点希望给到哪个用户审批。

脚本现在筛选的主管领导是少了,但不是出现唯一选,还是通过部门和角色选择,就变成了部门:公司领导,角色:副总经理,都可以入选。和我初衷只想直选其中一位公司领导违背。
yaya 发表于 2024-3-20 13:50:02 | 显示全部楼层
网络菜菜 发表于 2024-3-20 09:46
脚本现在筛选的主管领导是少了,但不是出现唯一选,还是通过部门和角色选择,就变成了部门:公司领导,角 ...

是申请人所在部门的领导审批??
每个部门的领导是角色是否都是统一的一个“副总经理”角色呢。
 楼主| 网络菜菜 发表于 2024-3-20 14:22:25 | 显示全部楼层
yaya 发表于 2024-3-20 13:50
是申请人所在部门的领导审批??
每个部门的领导是角色是否都是统一的一个“副总经理”角色呢。

这个是最后环节的的审批人,不是部门领导,是单位领导。单位领导的角色取值是取【公司领导】的【董事长】【党委书记】【总经理】【副总经理】【副党委书记】【纪委书记】【总工程师】
每个部门的领导,一般有两个角色,取【部门名(如信息部)】的【总经理】【副总经理】
yaya 发表于 2024-3-20 15:33:41 | 显示全部楼层
网络菜菜 发表于 2024-3-20 14:22
这个是最后环节的的审批人,不是部门领导,是单位领导。单位领导的角色取值是取【公司领导】的【董事长】 ...

领导审批节点的审批人是【公司领导】的【党委书记】【总经理】【副总经理】【副党委书记】【纪委书记】【总工程师】这些角色??
 楼主| 网络菜菜 发表于 2024-3-20 15:54:16 | 显示全部楼层
yaya 发表于 2024-3-20 15:33
领导审批节点的审批人是【公司领导】的【党委书记】【总经理】【副总经理】【副党委书记】【纪委书记】【 ...

是的,就是这些角色

本帖子中包含更多资源

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

x
yaya 发表于 2024-3-20 16:57:22 | 显示全部楼层
网络菜菜 发表于 2024-3-20 15:54
是的,就是这些角色

试一下这个脚本能否实现最终效果。
(function(){
        var userId = getWebUser().getId();
        var process = getDepartmentProcess();
        var rolename="总经理;配置管理员";//角色名称
        var rolenames = rolename.split(";");
        var deptname = "测试3部";
        var userlist = createObject("java.util.ArrayList");
        var deptlist = process.getDepartmentByName(deptname,getDomainid());
        for(var iter = deptlist.iterator();iter.hasNext();){
                var dept = iter.next();
                var deptid = dept.getId();
                        for (var i = 0; i < rolenames.length; i++) {
                                var roleid=getRoleIdByName(rolenames);    //根据角色名称获取角色id
                                var users = getUsersByDptIdAndRoleId(deptid,roleid);
                                for (var it=users.iterator(); it.hasNext();) {
                var user = it.next();
                if(user!=null){
                    userlist.add(user);              
                }
                        }
                }
        }
        return userlist;
})()

本版积分规则

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

GMT+8, 2026-8-12 15:54

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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