公司内部现在想从飞书转为用企业微信,然后内部所有数据都以SAP的数据为准。
所以需要写一个定时任务,定时从SAP(可理解为数据库)拉取所有部门和人员数据进行同步(部门变动、人员入离职),与企微现有的部门人员作一个比对,对企微进行部门人员异动的更新。
像这种两颗树多叉树型的结构比对和更新,不知怎么去写这个算法..
还是说利用数据库两张表,新数据表和旧数据表进行比对更快?
求一个实现方法,谢谢各位!
企业微信部门人员同步
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
8条回答 默认 最新
- qq_34370249 2022-05-17 10:59关注
以树形结构进行处理,树形结构设计,根节点为部门,最左侧的叶子节点为根节点部门下的人员,其他叶子节点为根节点部门下的子部门。 如果不存在隶属关系,可以虚构一个隶属关系。
采用先序遍历,根左右形式同时遍历两个二叉树。 进行对比。- 先判断叶子节点的数量,sap数量大于QW(企业微信),将多余的节点全部拷贝进QW中,将该节点从sap中剔除;sap数量小于QW,将QW中多余的节点全部剔除,将该节点从QW中剔除。处理过后,sap 与 QW的叶子节点数相同。
- 同时进入最左侧节点,遍历人员节点。比对人员信息,选择更新或者新增。(一般来说,比对的字段不是很多的话,比对几万次是很快的,几十秒就完成了)更新时,可以使用多线程,增加一点点的速度。
- 重复步骤 1.2 直到遍历完所有的节点。
步骤中的难点,应该是比对的部分,这里有很多实现的方法,看你自己要怎么处理,耗时的部分,应该是步骤1,新增对象和删除对象是很慢的,你可以处理好了以后,在更新QW的内容。
我看你上面的回答,部门3k+,人员8k+,数据量比较少,不是很多。目测,你执行下来,时间大概是 5-10分钟左右。
方法不是很巧妙,但是应该可以完成你的任务。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog