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