跳转至

创建部门

本文档内容来源于 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): 设置域ID
  • department.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设置部门层级关系
  • 建议添加输入验证和错误处理

使用场景

  • 初始化组织架构
  • 批量创建部门
  • 部门数据迁移
  • 自动化部门管理
  • 组织架构同步

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