跳转至

部门名称获取部门id.或者部门名称获取部门id

本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a464fvp2n0

脚本说明

该脚本用于根据部门名称获取部门ID,或者根据部门ID获取部门名称。在MyApps平台中,部门信息存储在部门表中,可以通过名称或ID进行查询。

部门名称获取部门ID

方式1:通过部门对象获取部门ID

(function(){
    var departmentName = "部门名称";
    var department = getDepartmentByName(departmentName);

    if(department != null){
        return department.getId();
    }

    return "";
})();

方式2:通过SQL查询获取部门ID

(function(){
    var departmentName = "部门名称";
    var domainId = getWebUser().getDomainid();
    var sql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
    var result = findBySQL(sql);

    if(result != null){
        return result.getId();
    }

    return "";
})();

方式3:获取部门ID并验证

(function(){
    var departmentName = "部门名称";
    var department = getDepartmentByName(departmentName);

    if(department != null){
        var departmentId = department.getId();
        println("部门名称: " + departmentName);
        println("部门ID: " + departmentId);
        return departmentId;
    }

    println("未找到部门: " + departmentName);
    return "";
})();

方式4:根据部门代码获取部门ID

(function(){
    var departmentCode = "部门代码";
    var domainId = getWebUser().getDomainid();
    var sql = "SELECT id FROM t_department WHERE code = '" + departmentCode + "' AND domainid = '" + domainId + "'";
    var result = findBySQL(sql);

    if(result != null){
        return result.getId();
    }

    return "";
})();

部门ID获取部门名称

方式1:通过部门对象获取部门名称

(function(){
    var departmentId = "部门ID";
    var department = getDepartmentById(departmentId);

    if(department != null){
        return department.getName();
    }

    return "";
})();

方式2:通过SQL查询获取部门名称

(function(){
    var departmentId = "部门ID";
    var sql = "SELECT name FROM t_department WHERE id = '" + departmentId + "'";
    var result = findBySQL(sql);

    if(result != null){
        return result.getItemValueAsString("name");
    }

    return "";
})();

方式3:获取部门名称及详细信息

(function(){
    var departmentId = "部门ID";
    var department = getDepartmentById(departmentId);

    if(department != null){
        var info = {
            id: department.getId(),
            name: department.getName(),
            code: department.getCode(),
            parentId: department.getParentid()
        };
        return JSON.stringify(info);
    }

    return "{}";
})();

方式4:根据部门ID获取部门代码

(function(){
    var departmentId = "部门ID";
    var department = getDepartmentById(departmentId);

    if(department != null){
        return department.getCode();
    }

    return "";
})();

扩展示例

示例1:批量获取部门ID

(function(){
    var departmentNames = ["部门1", "部门2", "部门3"];
    var departmentIds = {};

    for(var i = 0; i < departmentNames.length; i++){
        var departmentName = departmentNames[i];
        var department = getDepartmentByName(departmentName);

        if(department != null){
            departmentIds[departmentName] = department.getId();
            println(departmentName + " -> " + department.getId());
        }else{
            println("未找到部门: " + departmentName);
        }
    }

    return JSON.stringify(departmentIds);
})();

示例2:批量获取部门名称

(function(){
    var departmentIds = ["部门ID1", "部门ID2", "部门ID3"];
    var departmentNames = {};

    for(var i = 0; i < departmentIds.length; i++){
        var departmentId = departmentIds[i];
        var department = getDepartmentById(departmentId);

        if(department != null){
            departmentNames[departmentId] = department.getName();
            println(departmentId + " -> " + department.getName());
        }else{
            println("未找到部门ID: " + departmentId);
        }
    }

    return JSON.stringify(departmentNames);
})();

示例3:获取部门ID和名称的映射表

(function(){
    var domainId = getWebUser().getDomainid();
    var sql = "SELECT id, name FROM t_department WHERE domainid = '" + domainId + "'";
    var departments = queryBySQL(sql);

    var departmentMap = {};
    if(departments != null && departments.size() > 0){
        for(var it = departments.iterator(); it.hasNext();){
            var dept = it.next();
            var deptId = dept.getId();
            var deptName = dept.getItemValueAsString("name");
            departmentMap[deptName] = deptId;
            departmentMap[deptId] = deptName;  // 双向映射
        }
    }

    // 根据名称获取ID
    var targetName = "目标部门名称";
    var targetId = departmentMap[targetName];

    // 根据ID获取名称
    var targetId2 = "目标部门ID";
    var targetName2 = departmentMap[targetId2];

    return JSON.stringify(departmentMap);
})();

示例4:根据参数动态获取

(function(){
    var type = getParameter("type");  // "name" 或 "id"
    var value = getParameter("value");

    if(type == null || value == null){
        return "参数错误";
    }

    if(type === "name"){
        // 根据名称获取ID
        var department = getDepartmentByName(value);
        if(department != null){
            return department.getId();
        }
    }else if(type === "id"){
        // 根据ID获取名称
        var department = getDepartmentById(value);
        if(department != null){
            return department.getName();
        }
    }

    return "";
})();

示例5:获取部门完整路径

(function(){
    var departmentId = "部门ID";
    var department = getDepartmentById(departmentId);

    if(department != null){
        var path = [];
        var current = department;

        // 向上遍历获取所有上级部门
        while(current != null){
            path.unshift(current.getName());
            var parentId = current.getParentid();
            if(parentId != null && parentId.trim().length > 0){
                current = getDepartmentById(parentId);
            }else{
                current = null;
            }
        }

        return path.join(" / ");
    }

    return "";
})();

示例6:获取部门及其子部门

(function(){
    var departmentName = "部门名称";
    var department = getDepartmentByName(departmentName);

    if(department != null){
        var departmentId = department.getId();
        var domainId = getWebUser().getDomainid();

        // 获取所有子部门
        var sql = "SELECT id, name FROM t_department WHERE parentid = '" + departmentId + "' AND domainid = '" + domainId + "'";
        var subDepartments = queryBySQL(sql);

        var result = {
            id: departmentId,
            name: departmentName,
            children: []
        };

        if(subDepartments != null && subDepartments.size() > 0){
            for(var it = subDepartments.iterator(); it.hasNext();){
                var subDept = it.next();
                result.children.push({
                    id: subDept.getId(),
                    name: subDept.getItemValueAsString("name")
                });
            }
        }

        return JSON.stringify(result);
    }

    return "{}";
})();

示例7:错误处理和日志记录

(function(){
    var departmentName = "部门名称";
    var domainId = getWebUser().getDomainid();

    try{
        var department = getDepartmentByName(departmentName);

        if(department != null){
            var departmentId = department.getId();
            println("成功获取部门ID: " + departmentId + " (部门名称: " + departmentName + ")");
            return departmentId;
        }else{
            println("警告: 未找到部门 '" + departmentName + "' (域ID: " + domainId + ")");
            return "";
        }
    }catch(e){
        println("错误: 获取部门ID失败 - " + e.getMessage());
        return "";
    }
})();

示例8:获取当前用户的部门ID

(function(){
    var currentUser = getWebUser();
    var department = currentUser.getDepartment();

    if(department != null){
        return department.getId();
    }

    return "";
})();

示例9:获取当前用户的部门名称

(function(){
    var currentUser = getWebUser();
    var department = currentUser.getDepartment();

    if(department != null){
        return department.getName();
    }

    return "";
})();

关键函数说明

  • getDepartmentByName(departmentName): 根据部门名称获取部门对象
  • getDepartmentById(departmentId): 根据部门ID获取部门对象
  • department.getId(): 获取部门ID
  • department.getName(): 获取部门名称
  • department.getCode(): 获取部门代码
  • department.getParentid(): 获取上级部门ID
  • getWebUser().getDepartment(): 获取当前用户的部门对象
  • findBySQL(sql): 执行SQL查询并返回单条记录
  • queryBySQL(sql): 执行SQL查询并返回多条记录
  • getWebUser().getDomainid(): 获取当前用户的域ID

部门表结构说明

部门信息通常存储在 t_department 表中,主要字段包括: - id: 部门ID - name: 部门名称 - code: 部门代码 - parentid: 上级部门ID - domainid: 域ID

注意事项

  • ⚠️ 部门名称: 确保部门名称准确,区分大小写
  • ⚠️ 部门ID: 确保部门ID正确
  • ⚠️ 域ID: 查询时建议加上域ID条件,避免跨域数据
  • ⚠️ 空值处理: 部门可能不存在,需要判断
  • ⚠️ 部门代码: 部门代码通常是唯一的,也可以用于查询
  • ⚠️ 上级部门: 部门可能有上级部门,形成树形结构
  • 可以通过部门对象获取ID或名称
  • 也可以直接通过SQL查询部门表获取数据
  • 建议使用部门对象的方式,更安全可靠

使用场景

  • 根据部门名称获取部门ID,用于数据关联
  • 根据部门ID获取部门名称,用于显示
  • 部门信息查询和管理
  • 数据权限过滤
  • 组织架构展示

如需查看完整脚本代码,请访问源文档链接。