创建部门¶
本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1kd6ro6u9n6
脚本说明¶
该脚本用于创建部门。在MyApps平台中,可以通过脚本自动创建部门,包括设置部门名称、代码、上级部门等属性。
常见实现方式¶
方式1:创建部门(基本方式)¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentId = ""; // 上级部门ID,空字符串表示1级部门
var domainId = getWebUser().getDomainid();
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
return "部门已存在: " + departmentName;
}
// 创建部门对象
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
// 保存部门
DepartmentProcess.doCreate(department);
return "部门创建成功: " + departmentName + " (ID: " + department.getId() + ")";
})();
方式2:创建部门并设置上级部门¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentId = "上级部门ID";
var domainId = getWebUser().getDomainid();
// 验证上级部门是否存在
var parentDept = getDepartmentById(parentId);
if(parentDept == null){
return "错误: 上级部门不存在";
}
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
return "部门已存在: " + departmentName;
}
// 创建部门
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
DepartmentProcess.doCreate(department);
return "部门创建成功: " + departmentName + " (上级: " + parentDept.getName() + ")";
})();
方式3:通过SQL直接插入部门¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentId = ""; // 上级部门ID
var domainId = getWebUser().getDomainid();
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
return "部门已存在: " + departmentName;
}
// 生成部门ID
var departmentId = createUUID(); // 假设有生成UUID的函数
// 插入部门
var insertSql = "INSERT INTO t_department (id, name, code, parentid, domainid) " +
"VALUES ('" + departmentId + "', '" + departmentName + "', '" + departmentCode + "', '" + parentId + "', '" + domainId + "')";
updateByDSName("数据源名称", insertSql);
return "部门创建成功: " + departmentName + " (ID: " + departmentId + ")";
})();
方式4:创建部门并设置完整属性¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentId = "上级部门ID";
var description = "部门描述";
var sortOrder = 0;
var domainId = getWebUser().getDomainid();
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
return "部门已存在: " + departmentName;
}
// 创建部门
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
department.setDescription(description);
department.setSortorder(sortOrder);
DepartmentProcess.doCreate(department);
return "部门创建成功: " + departmentName;
})();
扩展示例¶
示例1:根据参数创建部门¶
(function(){
var departmentName = getParameter("departmentName");
var departmentCode = getParameter("departmentCode");
var parentId = getParameter("parentId");
if(departmentName == null || departmentName.trim().length == 0){
return "错误: 请提供部门名称";
}
if(departmentCode == null || departmentCode.trim().length == 0){
return "错误: 请提供部门代码";
}
if(parentId == null){
parentId = ""; // 默认为1级部门
}
var domainId = getWebUser().getDomainid();
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
return "部门已存在: " + departmentName;
}
// 创建部门
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
DepartmentProcess.doCreate(department);
return "部门创建成功: " + departmentName;
})();
示例2:批量创建多个部门¶
(function(){
var departments = [
{name: "部门1", code: "DEPT001", parentId: ""},
{name: "部门2", code: "DEPT002", parentId: ""},
{name: "部门3", code: "DEPT003", parentId: "部门1的ID"}
];
var domainId = getWebUser().getDomainid();
var DepartmentProcess = getDepartmentProcess();
var successCount = 0;
var failCount = 0;
var messages = [];
for(var i = 0; i < departments.length; i++){
var dept = departments[i];
var departmentName = dept.name;
var departmentCode = dept.code;
var parentId = dept.parentId || "";
try{
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
messages.push("部门已存在: " + departmentName);
failCount++;
continue;
}
// 创建部门
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
DepartmentProcess.doCreate(department);
messages.push("创建成功: " + departmentName + " (ID: " + department.getId() + ")");
successCount++;
}catch(e){
messages.push("创建失败: " + departmentName + " - " + e.getMessage());
failCount++;
}
}
return "成功: " + successCount + ", 失败: " + failCount + "\n" + messages.join("\n");
})();
示例3:创建部门并验证¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentId = "上级部门ID";
var domainId = getWebUser().getDomainid();
// 验证部门名称不能为空
if(departmentName == null || departmentName.trim().length == 0){
return "错误: 部门名称不能为空";
}
// 验证部门代码不能为空
if(departmentCode == null || departmentCode.trim().length == 0){
return "错误: 部门代码不能为空";
}
// 验证部门代码是否已存在
var codeCheckSql = "SELECT id FROM t_department WHERE code = '" + departmentCode + "' AND domainid = '" + domainId + "'";
var existCode = findBySQL(codeCheckSql);
if(existCode != null){
return "错误: 部门代码已存在: " + departmentCode;
}
// 验证部门名称是否已存在
var nameCheckSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existName = findBySQL(nameCheckSql);
if(existName != null){
return "错误: 部门名称已存在: " + departmentName;
}
// 如果有上级部门,验证上级部门是否存在
if(parentId != null && parentId.trim().length > 0){
var parentDept = getDepartmentById(parentId);
if(parentDept == null){
return "错误: 上级部门不存在";
}
}
// 创建部门
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId || "");
department.setDomainid(domainId);
DepartmentProcess.doCreate(department);
return "部门创建成功: " + departmentName + " (ID: " + department.getId() + ")";
})();
示例4:创建部门并返回部门ID¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentId = "";
var domainId = getWebUser().getDomainid();
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
return existDept.getId(); // 返回已存在的部门ID
}
// 创建部门
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
DepartmentProcess.doCreate(department);
return department.getId(); // 返回新创建的部门ID
})();
示例5:创建部门并记录日志¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentId = "";
var domainId = getWebUser().getDomainid();
var currentUser = getWebUser();
println("开始创建部门: " + departmentName);
println("创建人: " + currentUser.getName());
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
println("部门已存在: " + departmentName);
return "部门已存在: " + departmentName;
}
try{
// 创建部门
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
DepartmentProcess.doCreate(department);
println("部门创建成功: " + departmentName + " (ID: " + department.getId() + ")");
return "部门创建成功: " + departmentName;
}catch(e){
println("创建失败: " + e.getMessage());
return "创建失败: " + e.getMessage();
}
})();
示例6:创建部门并返回完整信息¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentId = "";
var domainId = getWebUser().getDomainid();
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
return JSON.stringify({
success: false,
message: "部门已存在",
departmentId: existDept.getId()
});
}
// 创建部门
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
DepartmentProcess.doCreate(department);
var result = {
success: true,
message: "部门创建成功",
departmentId: department.getId(),
departmentName: department.getName(),
departmentCode: department.getCode(),
parentId: department.getParentid()
};
return JSON.stringify(result);
})();
示例7:根据上级部门名称创建部门¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentName = "上级部门名称";
var domainId = getWebUser().getDomainid();
var parentId = "";
// 如果有上级部门名称,查找上级部门ID
if(parentName != null && parentName.trim().length > 0){
var parentDept = getDepartmentByName(parentName);
if(parentDept != null){
parentId = parentDept.getId();
}else{
return "错误: 上级部门不存在: " + parentName;
}
}
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
return "部门已存在: " + departmentName;
}
// 创建部门
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
DepartmentProcess.doCreate(department);
return "部门创建成功: " + departmentName;
})();
示例8:错误处理和异常捕获¶
(function(){
var departmentName = "部门名称";
var departmentCode = "部门代码";
var parentId = "";
var domainId = getWebUser().getDomainid();
try{
// 验证输入
if(departmentName == null || departmentName.trim().length == 0){
throw new Error("部门名称不能为空");
}
if(departmentCode == null || departmentCode.trim().length == 0){
throw new Error("部门代码不能为空");
}
// 检查部门是否已存在
var checkSql = "SELECT id FROM t_department WHERE name = '" + departmentName + "' AND domainid = '" + domainId + "'";
var existDept = findBySQL(checkSql);
if(existDept != null){
throw new Error("部门已存在: " + departmentName);
}
// 验证部门代码是否已存在
var codeCheckSql = "SELECT id FROM t_department WHERE code = '" + departmentCode + "' AND domainid = '" + domainId + "'";
var existCode = findBySQL(codeCheckSql);
if(existCode != null){
throw new Error("部门代码已存在: " + departmentCode);
}
// 创建部门
var DepartmentProcess = getDepartmentProcess();
var department = DepartmentProcess.doNew();
department.setName(departmentName);
department.setCode(departmentCode);
department.setParentid(parentId);
department.setDomainid(domainId);
DepartmentProcess.doCreate(department);
return "部门创建成功: " + departmentName + " (ID: " + department.getId() + ")";
}catch(e){
return "错误: " + e.getMessage();
}
})();
关键函数说明¶
getDepartmentProcess(): 获取部门处理对象DepartmentProcess.doNew(): 创建新的部门对象department.setName(name): 设置部门名称department.setCode(code): 设置部门代码department.setParentid(parentid): 设置上级部门ID(空字符串表示1级部门)department.setDomainid(domainid): 设置域IDdepartment.setDescription(description): 设置部门描述department.setSortorder(order): 设置排序号DepartmentProcess.doCreate(department): 保存部门getDepartmentById(departmentId): 根据部门ID获取部门对象getDepartmentByName(departmentName): 根据部门名称获取部门对象findBySQL(sql): 执行SQL查询并返回单条记录updateByDSName(dsName, sql): 执行SQL更新语句
部门创建说明¶
在MyApps平台中: - 部门层级: 可以通过parentid设置部门层级,空字符串表示1级部门 - 部门代码: 通常要求唯一(在同一域内) - 部门名称: 通常要求唯一(在同一域内) - 域ID: 部门属于特定的域,需要设置domainid - 上级部门: 可以设置上级部门,形成树形结构
注意事项¶
- ⚠️ 部门名称: 确保部门名称唯一(在同一域内)
- ⚠️ 部门代码: 确保部门代码唯一(在同一域内)
- ⚠️ parentid: 1级部门的parentid为空字符串,其他部门需要设置有效的上级部门ID
- ⚠️ 域ID: 必须设置正确的domainid
- ⚠️ 重复检查: 创建前建议检查部门是否已存在
- ⚠️ 异常处理: 建议添加try-catch进行异常处理
- ⚠️ 上级部门验证: 如果设置了上级部门,需要验证上级部门是否存在
- 创建部门前建议检查部门名称和代码是否已存在
- 可以通过parentid设置部门层级关系
- 建议添加输入验证和错误处理
使用场景¶
- 初始化组织架构
- 批量创建部门
- 部门数据迁移
- 自动化部门管理
- 组织架构同步
如需查看完整脚本代码,请访问源文档链接。