部门名称获取部门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(): 获取部门IDdepartment.getName(): 获取部门名称department.getCode(): 获取部门代码department.getParentid(): 获取上级部门IDgetWebUser().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获取部门名称,用于显示
- 部门信息查询和管理
- 数据权限过滤
- 组织架构展示
如需查看完整脚本代码,请访问源文档链接。