默认部门¶
本文档内容来源于 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有效,避免引用不存在的部门
- 默认部门可能与用户的主部门不同
- 如果没有设置默认部门,通常使用主部门
- 建议在设置默认部门前验证部门和用户是否存在
使用场景¶
- 创建文档时自动填充部门信息
- 流程审批时使用默认部门
- 数据权限过滤
- 用户信息管理
- 组织架构展示
如需查看完整脚本代码,请访问源文档链接。