公司内部现在想从飞书转为用企业微信,然后内部所有数据都以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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)
- ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。