CCCCCCCYYY_ 2022-05-17 09:21 采纳率: 50%
浏览 225
已结题

企业微信部门人员同步

公司内部现在想从飞书转为用企业微信,然后内部所有数据都以SAP的数据为准。
所以需要写一个定时任务,定时从SAP(可理解为数据库)拉取所有部门和人员数据进行同步(部门变动、人员入离职),与企微现有的部门人员作一个比对,对企微进行部门人员异动的更新。
像这种两颗树多叉树型的结构比对和更新,不知怎么去写这个算法..
还是说利用数据库两张表,新数据表和旧数据表进行比对更快?
求一个实现方法,谢谢各位!

  • 写回答

8条回答 默认 最新

  • qq_34370249 2022-05-17 10:59
    关注

    以树形结构进行处理,树形结构设计,根节点为部门,最左侧的叶子节点为根节点部门下的人员,其他叶子节点为根节点部门下的子部门。 如果不存在隶属关系,可以虚构一个隶属关系。
    采用先序遍历,根左右形式同时遍历两个二叉树。 进行对比。

    1. 先判断叶子节点的数量,sap数量大于QW(企业微信),将多余的节点全部拷贝进QW中,将该节点从sap中剔除;sap数量小于QW,将QW中多余的节点全部剔除,将该节点从QW中剔除。处理过后,sap 与 QW的叶子节点数相同。
    2. 同时进入最左侧节点,遍历人员节点。比对人员信息,选择更新或者新增。(一般来说,比对的字段不是很多的话,比对几万次是很快的,几十秒就完成了)更新时,可以使用多线程,增加一点点的速度。
    3. 重复步骤 1.2 直到遍历完所有的节点。
      步骤中的难点,应该是比对的部分,这里有很多实现的方法,看你自己要怎么处理,耗时的部分,应该是步骤1,新增对象和删除对象是很慢的,你可以处理好了以后,在更新QW的内容。
      我看你上面的回答,部门3k+,人员8k+,数据量比较少,不是很多。目测,你执行下来,时间大概是 5-10分钟左右。
      方法不是很巧妙,但是应该可以完成你的任务。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 5月31日
  • 已采纳回答 5月23日
  • 创建了问题 5月17日

悬赏问题

  • ¥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