跳转至

默认部门

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

脚本说明

该脚本用于设置和获取用户的默认部门。在MyApps平台中,用户可以有默认部门,用于在创建文档、流程等场景中自动填充部门信息。

获取默认部门

方式1:获取当前用户的默认部门

(function(){
    var currentUser = getWebUser();
    var defaultDepartment = currentUser.getDefaultDepartment();

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

    // 如果没有默认部门,返回用户的主部门
    var department = currentUser.getDepartment();
    if(department != null){
        return department.getId();
    }

    return "";
})();

方式2:获取指定用户的默认部门

(function(){
    var userId = "用户ID";
    var user = getUserById(userId);

    if(user != null){
        var defaultDepartment = user.getDefaultDepartment();
        if(defaultDepartment != null){
            return defaultDepartment.getId();
        }

        // 如果没有默认部门,返回用户的主部门
        var department = user.getDepartment();
        if(department != null){
            return department.getId();
        }
    }

    return "";
})();

方式3:获取默认部门并返回详细信息

(function(){
    var currentUser = getWebUser();
    var defaultDepartment = currentUser.getDefaultDepartment();

    if(defaultDepartment != null){
        var deptInfo = {
            id: defaultDepartment.getId(),
            name: defaultDepartment.getName(),
            code: defaultDepartment.getCode()
        };
        return JSON.stringify(deptInfo);
    }

    // 如果没有默认部门,返回用户的主部门
    var department = currentUser.getDepartment();
    if(department != null){
        var deptInfo = {
            id: department.getId(),
            name: department.getName(),
            code: department.getCode()
        };
        return JSON.stringify(deptInfo);
    }

    return "{}";
})();

方式4:通过SQL查询获取默认部门

(function(){
    var userId = "用户ID";
    var domainId = getWebUser().getDomainid();

    // 假设默认部门存储在t_user表的defaultdepartmentid字段中
    var sql = "SELECT defaultdepartmentid FROM t_user WHERE id = '" + userId + "' AND domainid = '" + domainId + "'";
    var result = findBySQL(sql);

    if(result != null){
        var defaultDeptId = result.getItemValueAsString("defaultdepartmentid");
        if(defaultDeptId != null && defaultDeptId.trim().length > 0){
            return defaultDeptId;
        }
    }

    // 如果没有默认部门,返回用户的主部门
    var sql2 = "SELECT departmentid FROM t_user WHERE id = '" + userId + "' AND domainid = '" + domainId + "'";
    var result2 = findBySQL(sql2);

    if(result2 != null){
        return result2.getItemValueAsString("departmentid");
    }

    return "";
})();

设置默认部门

方式1:设置当前用户的默认部门

(function(){
    var departmentId = "部门ID";
    var currentUser = getWebUser();

    // 验证部门是否存在
    var department = getDepartmentById(departmentId);
    if(department == null){
        return "错误: 部门不存在";
    }

    // 设置默认部门
    currentUser.setDefaultDepartment(department);
    // 保存用户(假设有保存方法)
    // userProcess.doUpdate(currentUser);

    return "默认部门设置成功: " + department.getName();
})();

方式2:设置指定用户的默认部门

(function(){
    var userId = "用户ID";
    var departmentId = "部门ID";

    var user = getUserById(userId);
    if(user == null){
        return "错误: 用户不存在";
    }

    var department = getDepartmentById(departmentId);
    if(department == null){
        return "错误: 部门不存在";
    }

    // 设置默认部门
    user.setDefaultDepartment(department);
    // 保存用户
    // userProcess.doUpdate(user);

    return "默认部门设置成功: " + department.getName();
})();

方式3:通过SQL更新默认部门

(function(){
    var userId = "用户ID";
    var departmentId = "部门ID";
    var domainId = getWebUser().getDomainid();

    // 验证部门是否存在
    var deptSql = "SELECT id FROM t_department WHERE id = '" + departmentId + "' AND domainid = '" + domainId + "'";
    var dept = findBySQL(deptSql);

    if(dept == null){
        return "错误: 部门不存在";
    }

    // 更新用户的默认部门
    var updateSql = "UPDATE t_user SET defaultdepartmentid = '" + departmentId + "' WHERE id = '" + userId + "' AND domainid = '" + domainId + "'";
    updateByDSName("数据源名称", updateSql);

    return "默认部门设置成功";
})();

方式4:根据部门名称设置默认部门

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

    // 根据部门名称查找部门
    var department = getDepartmentByName(departmentName);
    if(department == null){
        return "错误: 部门不存在: " + departmentName;
    }

    var user = getUserById(userId);
    if(user == null){
        return "错误: 用户不存在";
    }

    // 设置默认部门
    user.setDefaultDepartment(department);
    // 保存用户
    // userProcess.doUpdate(user);

    return "默认部门设置成功: " + departmentName;
})();

扩展示例

示例1:获取默认部门,如果没有则使用主部门

(function(){
    var currentUser = getWebUser();
    var defaultDepartment = currentUser.getDefaultDepartment();

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

    // 如果没有默认部门,使用主部门
    var department = currentUser.getDepartment();
    if(department != null){
        return department.getId();
    }

    return "";
})();

示例2:批量设置多个用户的默认部门

(function(){
    var userIds = ["用户ID1", "用户ID2", "用户ID3"];
    var departmentId = "部门ID";

    var department = getDepartmentById(departmentId);
    if(department == null){
        return "错误: 部门不存在";
    }

    var successCount = 0;
    var failCount = 0;
    var messages = [];

    for(var i = 0; i < userIds.length; i++){
        var userId = userIds[i];
        try{
            var user = getUserById(userId);
            if(user != null){
                user.setDefaultDepartment(department);
                // userProcess.doUpdate(user);
                messages.push("成功: " + user.getName());
                successCount++;
            }else{
                messages.push("失败: 用户不存在 - " + userId);
                failCount++;
            }
        }catch(e){
            messages.push("失败: " + userId + " - " + e.getMessage());
            failCount++;
        }
    }

    return "成功: " + successCount + ", 失败: " + failCount + "\n" + messages.join("\n");
})();

示例3:根据条件设置默认部门

(function(){
    var userId = "用户ID";
    var user = getUserById(userId);

    if(user != null){
        var userRole = "";
        var roles = user.getRoles();
        if(roles != null && roles.size() > 0){
            userRole = roles.get(0).getName();
        }

        var departmentId = "";

        // 根据角色设置默认部门
        if(userRole === "管理员"){
            departmentId = "管理员部门ID";
        }else if(userRole === "普通用户"){
            departmentId = "普通用户部门ID";
        }else{
            // 使用用户的主部门
            var department = user.getDepartment();
            if(department != null){
                departmentId = department.getId();
            }
        }

        if(departmentId != null && departmentId.trim().length > 0){
            var department = getDepartmentById(departmentId);
            if(department != null){
                user.setDefaultDepartment(department);
                // userProcess.doUpdate(user);
                return "默认部门设置成功: " + department.getName();
            }
        }
    }

    return "设置失败";
})();

示例4:获取默认部门并格式化输出

(function(){
    var currentUser = getWebUser();
    var defaultDepartment = currentUser.getDefaultDepartment();

    var output = "当前用户: " + currentUser.getName() + "\n";

    if(defaultDepartment != null){
        output += "默认部门: " + defaultDepartment.getName() + " (" + defaultDepartment.getCode() + ")";
    }else{
        var department = currentUser.getDepartment();
        if(department != null){
            output += "主部门: " + department.getName() + " (" + department.getCode() + ")";
        }else{
            output += "未设置部门";
        }
    }

    return output;
})();

示例5:验证默认部门是否有效

(function(){
    var userId = "用户ID";
    var user = getUserById(userId);

    if(user != null){
        var defaultDepartment = user.getDefaultDepartment();

        if(defaultDepartment != null){
            // 验证部门是否仍然存在
            var dept = getDepartmentById(defaultDepartment.getId());
            if(dept != null){
                return "默认部门有效: " + defaultDepartment.getName();
            }else{
                return "警告: 默认部门已不存在,请重新设置";
            }
        }else{
            return "未设置默认部门";
        }
    }

    return "用户不存在";
})();

示例6:清除默认部门

(function(){
    var userId = "用户ID";
    var user = getUserById(userId);

    if(user != null){
        user.setDefaultDepartment(null);
        // userProcess.doUpdate(user);
        return "默认部门已清除";
    }

    return "用户不存在";
})();

示例7:获取默认部门并用于文档创建

(function(){
    var currentUser = getWebUser();
    var defaultDepartment = currentUser.getDefaultDepartment();

    var departmentId = "";
    var departmentName = "";

    if(defaultDepartment != null){
        departmentId = defaultDepartment.getId();
        departmentName = defaultDepartment.getName();
    }else{
        // 如果没有默认部门,使用主部门
        var department = currentUser.getDepartment();
        if(department != null){
            departmentId = department.getId();
            departmentName = department.getName();
        }
    }

    // 在创建文档时使用默认部门
    var doc = getCurrentDocument();
    if(doc != null && departmentId != null && departmentId.trim().length > 0){
        doc.findItem("部门").setValue(departmentId);
        doc.findItem("部门名称").setValue(departmentName);
    }

    return "已设置部门: " + departmentName;
})();

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

(function(){
    var userId = "用户ID";
    var departmentId = "部门ID";

    try{
        var user = getUserById(userId);
        if(user == null){
            throw new Error("用户不存在: " + userId);
        }

        var department = getDepartmentById(departmentId);
        if(department == null){
            throw new Error("部门不存在: " + departmentId);
        }

        user.setDefaultDepartment(department);
        // userProcess.doUpdate(user);

        println("默认部门设置成功: 用户=" + user.getName() + ", 部门=" + department.getName());
        return "默认部门设置成功: " + department.getName();
    }catch(e){
        println("错误: " + e.getMessage());
        return "错误: " + e.getMessage();
    }
})();

关键函数说明

  • getWebUser(): 获取当前登录用户对象
  • getUserById(userId): 根据用户ID获取用户对象
  • user.getDefaultDepartment(): 获取用户的默认部门对象
  • user.getDepartment(): 获取用户的主部门对象
  • user.setDefaultDepartment(department): 设置用户的默认部门
  • getDepartmentById(departmentId): 根据部门ID获取部门对象
  • getDepartmentByName(departmentName): 根据部门名称获取部门对象
  • findBySQL(sql): 执行SQL查询并返回单条记录
  • updateByDSName(dsName, sql): 执行SQL更新语句

默认部门说明

在MyApps平台中: - 默认部门: 用户可以有默认部门,用于自动填充部门信息 - 主部门: 用户的主部门(department)是用户所属的部门 - 默认部门与主部门: 默认部门可能与主部门不同,用于特定场景 - 使用场景: 在创建文档、流程等场景中,可以自动使用默认部门

注意事项

  • ⚠️ 部门存在性: 设置默认部门前需要验证部门是否存在
  • ⚠️ 用户存在性: 设置默认部门前需要验证用户是否存在
  • ⚠️ 空值处理: 默认部门可能为空,需要判断
  • ⚠️ 主部门回退: 如果没有默认部门,通常使用主部门作为回退
  • ⚠️ 数据一致性: 确保默认部门ID有效,避免引用不存在的部门
  • 默认部门可能与用户的主部门不同
  • 如果没有设置默认部门,通常使用主部门
  • 建议在设置默认部门前验证部门和用户是否存在

使用场景

  • 创建文档时自动填充部门信息
  • 流程审批时使用默认部门
  • 数据权限过滤
  • 用户信息管理
  • 组织架构展示

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