跳转至

生成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): 设置域ID
  • department.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必须为空
  • 建议在创建前检查部门是否已存在,避免重复创建

使用场景

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

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