从EAS向苍穹同步人员,苍穹中已有的分录信息(直接上级信息)被清空
问题描述:
通过‘预置_人员信息(EAS-苍穹)’方案,用户从EAS向苍穹同步人员信息时,如果EAS中缺失部门分录中的直接上级,而在人员信息同步后于苍穹端手工维护了该信息,那么应该如何避免下次同步时手工维护的直接上级被清空?
解决方案:
找到对应的集成方案:预置_人员信息(EAS-苍穹)
特别说明:所有修改需要结合现场的需求来评估是否满足现场的业务需求,并且经过测试环境验证后更新正式环境。
修改
查看/编辑 转换脚本
处理逻辑
EAS推送数据到苍穹时,先查询苍穹是否存在该数据,存在的话,取出当前苍穹的直接上级字段,根据分录的候选键重新塞到目标数据分录中。
注意点:目标数据中可能不存在当前单据的id,需要重新查询id,由于标准产品已经存在查询用户类型的查询脚本,为保证性能,可以直接在该脚本加一个fid字段,如果目标对象存在id字段,则可以忽略该逻辑。
加入处理脚本(其中红色部分为需要加入的部分)
if(tar.number== null){return null;}
var sql = "SELECT top 1 fusertype as type,fid from t_SEC_User@basedata where fnumber = ?";
var list = query_list($tar, sql, [tar.number], [VARCHAR]);
// 如果存在该用户,且用户类型不为1,忽略
if(list && list[0].type != '1') {
tar.#_IGNORE_TAG = true;
}
if(list && list[0].fid != null){
//eas同步苍穹,部门分录不覆盖直接上级字段,其中fsuperiorid为苍穹直接上级字段,fposition,fdptid为候选键字段,用来做确定需要更新的时那行数据
var entrySql = "SELECT fsuperiorid,fposition,fdptid as fdpt FROM T_SEC_USERPOSITION@SYS where fid=?";
//查询目标分录结果
var entrylist = query_list($tar,entrySql, [list[0].fid], [BIGINT]);
if(entrylist){
for(row:entrylist) {
if(row.fsuperiorid != null){
for(var i = 0; i < tar.entryentity.length; i++) {
if(tar.entryentity[i].position.zh_CN == row.fposition && tar.entryentity[i].dpt == row.fdpt ){
tar.entryentity[i].superior = row.fsuperiorid;
}
}
}
}
}
}
查看部门信息分录候选键
附:如需保留目标系统中额外新增的分录信息
在转换脚本中根据部门分录中的部门id作为候选键进行判断,当目标系统中的分录信息不包含该id时,则将该条分录重新添加到写入的分录信息中。
加入处理脚本(其中红色部分为需要加入的部分)
if(tar.number== null){return null;}
var sql = "SELECT top 1 fusertype as type,fid from t_SEC_User@basedata where fnumber = ?";
var list = query_list($tar, sql, [tar.number], [VARCHAR]);
// 如果存在该用户,且用户类型不为1,忽略
if(list && list[0].type != '1') {
tar.#_IGNORE_TAG = true;
}
//查询苍穹中存在但不是eas的部门分录,并保留该分录信息
if(list && list[0].fid != null){
var entrySql = "SELECT fsuperiorid,fposition,fdptid,fispartjob,fisincharge FROM T_SEC_USERPOSITION@SYS where fid=?";
var entrylist = query_list($tar,entrySql, [list[0].fid], [BIGINT]);
var entry={};
var max_seq=max(tar.entryentity.seq);
if(entrylist){
for(var e : entrylist){
entry={};
//当eas取数的分录不包含该部门信息时,在写入数据中添加苍穹的分录信息
if(!tar.entryentity[$.dpt==#.e.fdptid]){
max_seq+=1;
entry.ispartjob=e.fispartjob;
entry.dpt=e.fdptid;
entry.isincharge=e.fisincharge;
entry.superior =e.fsuperiorid;
entry.seq=max_seq;
tar.entryentity+=entry;
}
}
}
}
集成服务云使用指南:https://club.kdcloud.com/article/45312
集成服务云新特性发布汇总:https://club.kdcloud.com/article/146134
集成云常见问题处理合集: https://vip.kingdee.com/article/45556
从EAS向苍穹同步人员,苍穹中已有的分录信息(直接上级信息)被清空
本文2024-09-23 00:47:49发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-141794.html