查看: 400|回复: 1

自定义接口配置组织架构及人员同步问题

升级   0.08%

5

主题

6

回帖

8

积分

注册会员

Rank: 2

积分
8
发表于 2025-11-28 14:36:37 | 显示全部楼层 |阅读模式
这个代码不能同步上下级关系能帮我改一下吗
var result = {
    success: true,
    message: "平级组织同步完成",
    createdUnits: [],
    updatedUnits: []
};

// 工具函数:延迟等待(解决系统写入延迟)
function sleep(ms) {
    var start = new Date().getTime();
    while (new Date().getTime() - start < ms) {}
}

try {
    // 1. 读取请求数据(仅取units,忽略parentCode)
    var requestBody = this.requestText || "{}";
    var input = JSON.parse(requestBody);
    var units = input.units || [];

    if (units.length === 0) {
        result.message = "未传入任何组织数据";
        return result;
    }

    // 2. 加载组织操作模块
    var orgModule = this.Actions.load("x_organization_assemble_control");
    var unitAction = orgModule.UnitAction;

    // 3. 循环创建/更新平级组织(无上级关联)
    units.forEach(unit => {
        // 校验必填字段
        if (!unit.code || !unit.name) {
            result.message += ` [警告:跳过缺少code/name的组织]`;
            return;
        }

        // 查找组织是否已存在(按code匹配)
        var existingId = null;
        var allUnits = unitAction.list();
        for (var i = 0; i < allUnits.length; i++) {
            if (allUnits.attributeMap?.code === unit.code) {
                existingId = allUnits.id;
                break;
            }
        }

        if (existingId) {
            // 更新组织(仅更新名称,保持平级)
            unitAction.edit(existingId, {
                name: unit.name,
                attributeMap: { code: unit.code },
                parentId: null // 强制设为顶级
            });
            result.updatedUnits.push(unit.code);
        } else {
            // 创建平级组织(parentId设为null,无上级)
            var createData = {
                name: unit.name,
                unique: unit.code, // 唯一标识(API必填)
                distinguishName: unit.name, // 显示名称(API必填)
                typeList: ["department"], // 组织类型(API规范)
                attributeMap: { code: unit.code },
                parentId: null // 核心:所有组织均为顶级
            };

            // 执行创建,延迟确保系统写入
            unitAction.create(createData);
            sleep(100);
            result.createdUnits.push(unit.code);
        }
    });

} catch (e) {
    result.success = false;
    result.message = "同步失败: " + e.toString();
}

return result;

还有同步人员的代码,这个不能写入人员信息我应该怎么改一下
      if (existingPerson) {            // 更新人员            var editPersonData = {                name: person.name || existingPerson.name,                telephone: person.telephone || existingPerson.telephone,                email: person.email || existingPerson.email,                status: person.status || "enable",                employeeNumber: person.workNumber || existingPerson.employeeNumber            };            if (unitId) editPersonData.unitId = unitId;            orgControlAction.PersonAction.edit(existingPerson.id, editPersonData);            result.updatedPersons.push(person.workNumber || person.name);        } else {            // 创建人员            if (!person.name) continue;            var createPersonData = {                name: person.name,                unique: person.workNumber || person.telephone || person.name,                distinguishName: person.name,                genderType: person.gender || "male",                identity: "normal",                telephone: person.telephone || "",                email: person.email || "",                status: person.status || "enable",                employeeNumber: person.workNumber || ""            };            if (unitId) createPersonData.unitId = unitId;            orgControlAction.PersonAction.create(createPersonData);            result.createdPersons.push(person.workNumber || person.name);        }    }    return result;



回复

使用道具 举报

升级   0.08%

5

主题

6

回帖

8

积分

注册会员

Rank: 2

积分
8
发表于 2025-11-28 16:47:31 | 显示全部楼层
同步人员的代码,不能写入系统怎么修改一下
    for (var j = 0; j < persons.length; j++) {
        var person = persons[j];
        var existingPerson = findPerson(person.workNumber, person.telephone);

        var unitId = null;
        if (person.unitCode) {
            var belongUnit = findUnitByCode(person.unitCode);
            if (belongUnit) unitId = belongUnit.id;
        }

        if (existingPerson) {
            // 更新人员
            var editPersonData = {
                name: person.name || existingPerson.name,
                telephone: person.telephone || existingPerson.telephone,
                email: person.email || existingPerson.email,
                status: person.status || "enable",
                employeeNumber: person.workNumber || existingPerson.employeeNumber
            };
            if (unitId) editPersonData.unitId = unitId;
            orgControlAction.PersonAction.edit(existingPerson.id, editPersonData);
            result.updatedPersons.push(person.workNumber || person.name);
        } else {
            // 创建人员
            if (!person.name) continue;
            var createPersonData = {
                name: person.name,
                unique: person.workNumber || person.telephone || person.name,
                distinguishName: person.name,
                genderType: person.gender || "male",
                identity: "normal",
                telephone: person.telephone || "",
                email: person.email || "",
                status: person.status || "enable",
                employeeNumber: person.workNumber || ""
            };
            if (unitId) createPersonData.unitId = unitId;
            orgControlAction.PersonAction.create(createPersonData);
            result.createdPersons.push(person.workNumber || person.name);
        }
    }
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread