1. 概述
  • 在于浙政钉-企业微信-钉钉进行组织结构同步的代码步骤.
  • 首先需要理解ccbpm的部门、人员、以及部门于人员对应关系的表结构.
  • 理解OrgNo的组织编号概念.
  • 理解集团模式,SAAS模式的概念.
    1. 同步步骤.
  1. 创建空白的表结构, Port_Dept_TB, Port_Emp_TB,Port_DeptEmp_TB, 表结构与现有的表结构一致。
  2. 把数据同步到这几个临时表里.
  3. 执行如下代码逻辑进行同步到ccbpm的组织结构里.
    1. 代码同步逻辑.
  • 每个表都涉及到,新增部分,删除部分,变更部分三个操作.
  • 因为部门与人员对应关系都是外键,所以不涉及到修改部分.
  • c#代码结构.
 string orgNo = BP.Web.WebUser.OrgNo;
            //1. 删除全部的数据.
            string sql = "DELETE FROM Port_Dept_TB WHERE OrgNo='"+orgNo+"'";
            DBAccess.RunSQL(sql);
            sql = "DELETE FROM Port_Emp_TB WHERE OrgNo='" + orgNo + "'";
            DBAccess.RunSQL(sql);
            sql = "DELETE FROM Port_DeptEmp_TB WHERE OrgNo='" + orgNo + "'";
            DBAccess.RunSQL(sql);
            //2. 把获得数据写入到这三个表.
            //3. 开始写入人员数据表.
            //3.1 更新部门,查询出来新增部分.
            sql = "SELECT * FROM Port_Dept_TB WHERE No Not IN (SELECT No from Port_Dept where OrgNo='" + orgNo+"') AND OrgNo='"+orgNo+"'";
            DataTable dtDept = DBAccess.RunSQLReturnTable(sql);
            foreach (DataRow dr in dtDept.Rows)
            {
                Dept dept = new Dept();
                dept.No = dr[0].ToString();
                dept.Name = dr[1].ToString();
                dept.ParentNo = dr[2].ToString();
                dept.Insert();
            }
            //3.2 查询出来删除的.
            sql = "SELECT * FROM Port_Dept WHERE No Not IN ( SELECT No from Port_Dept_TB where OrgNo='" + orgNo + "') AND OrgNo='" + orgNo + "'";
            dtDept = DBAccess.RunSQLReturnTable(sql);
            foreach (DataRow dr in dtDept.Rows)
            {
                Dept dept = new Dept();
                dept.No = dr[0].ToString();
                dept.Delete();
            }
            //3.3 查询出来名称变化的.
            sql = "SELECT A.No,A.Name FROM Port_Dept_TB A, Port_Dept B WHERE A.No=B.No AND A.Name!=B.Name ";
            dtDept = DBAccess.RunSQLReturnTable(sql);
            foreach (DataRow dr in dtDept.Rows)
            {
                Dept dept = new Dept();
                dept.No = dr[0].ToString();
                dept.Retrieve();
                dept.Name = dr[1].ToString();
                dept.Update();
            }
            //4. 同步人员数据.
            //4.1 更新部门,查询出来新增部分.
            sql = "SELECT * FROM Port_Emp_TB WHERE No Not IN (SELECT No from Port_Emp where OrgNo='" + orgNo + "') AND OrgNo='" + orgNo + "'";
            DataTable dtEmp = DBAccess.RunSQLReturnTable(sql);
            foreach (DataRow dr in dtEmp.Rows)
            {
                Emp emp = new Emp();
                emp.No = dr[0].ToString();
                emp.Name = dr[1].ToString(); 
                emp.OrgNo = dr[2].ToString();
                emp.Pass = "";
                emp.Insert();
            }
            //4.2 查询出来删除的.
            sql = "SELECT * FROM Port_Emp WHERE No Not IN ( SELECT No from Port_Emp_TB where OrgNo='" + orgNo + "') AND OrgNo='" + orgNo + "'";
            dtEmp = DBAccess.RunSQLReturnTable(sql);
            foreach (DataRow dr in dtEmp.Rows)
            {
                Emp emp = new Emp();
                emp.No = dr[0].ToString();
                emp.Delete();
            }
            //4.3 查询出来名称变化的.
            sql = "SELECT A.No,A.Name FROM Port_Emp_TB A, Port_Emp B WHERE A.No=B.No AND A.Name!=B.Name ";
            dtEmp = DBAccess.RunSQLReturnTable(sql);
            foreach (DataRow dr in dtEmp.Rows)
            {
                Emp emp = new Emp();
                emp.No = dr[0].ToString();
                emp.Retrieve();
                emp.Name = dr[1].ToString();
                emp.Update();
            }
            //5. 同步人员部门数据.
            //5.1 更新部门,查询出来新增部分.
            sql = "SELECT * FROM Port_DeptEmp_TB WHERE MyPK Not IN (SELECT MyPK from Port_DeptEmp WHERE OrgNo='" + orgNo + "') AND OrgNo='" + orgNo + "'";
            DataTable dtDeptEmp = DBAccess.RunSQLReturnTable(sql);
            foreach (DataRow dr in dtDeptEmp.Rows)
            {
                DeptEmp de = new DeptEmp();
                de.MyPK = dr[0].ToString();
                de.FK_Emp = dr[1].ToString();
                de.FK_Dept = dr[2].ToString();
                de.OrgNo = dr[3].ToString();
                de.Insert();
            }
            //5.2 查询出来删除的.
            sql = "SELECT * FROM Port_DeptEmp WHERE No Not IN ( SELECT No from Port_DeptEmp_TB where OrgNo='" + orgNo + "') AND OrgNo='" + orgNo + "'";
            dtDeptEmp = DBAccess.RunSQLReturnTable(sql);
            foreach (DataRow dr in dtDeptEmp.Rows)
            {
                DeptEmp de = new DeptEmp();
                de.MyPK = dr[0].ToString();
                de.Delete();
            }

从浙政钉-企业微信-钉钉同步数据步骤相关推荐

  1. 【浙政钉】微信-专有钉钉小程序-开发踩坑实记

    文章目录 ⭐[浙政钉]微信-专有钉钉小程序-开发踩坑实记 ⭐ 创建项目 ⭐ 转化方案 ⭐ 政务钉钉调试 ⭐ 上传发布 ⭐[浙政钉]微信-专有钉钉小程序-开发踩坑实记 最近有个需求,要将微信小程序转为浙 ...

  2. 安装kube-prometheus项目:k8s部署prometheus、监控k8s核心组件、添加告警(微信、钉钉、企业微信)、进行数据持久化

    概述 很多地方提到Prometheus Operator是kubernetes集群监控的终极解决方案,但是目前Prometheus Operator已经不包含完整功能,完整的解决方案已经变为kube- ...

  3. CabloyJS一站式助力微信、企业微信、钉钉开发 - 钉钉篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  4. delphi 企业微信消息机器人_消息通知支持企业微信、钉钉机器人,MeterSphere v1.4.0发布...

    2020年10月27日15:00,MeterSphere v1.4版本发布说明会,现已开启官网报名. 10月27日,MeterSphere开源持续测试平台正式发布v1.4.0版本.在该版本中,Mete ...

  5. zabbix配置步骤、操作及使用个人邮箱、企业微信、钉钉报警的配置

    一.监控端配置 步骤: 1.去官网下载包,从而有zabbix.repo,更新yum源 2.yum安装zabbix-server-mysql zabbix-web-mysql zabbix-agent ...

  6. 华为WeLink钉钉企业微信飞书等,通过竹云IDaaS,访问企业内部应用及SaaS应用

    背景@TOC 钉钉.企业微信.飞书.华为WeLink等,通过竹云IDaaS,访问企业内部应用及SaaS应用 背景 随着移动办公的需求,华为WeLink.钉钉.企业微信.飞书等移动办公App在各行各业中 ...

  7. CabloyJS一站式助力微信、企业微信、钉钉开发 - 企业微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  8. CabloyJS一站式助力微信、企业微信、钉钉开发 - 微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  9. vue从url中获取token并加入到 请求头里_轻流amp;amp;企业微信——获取打卡数据...

    企业微信开放了打卡应用的api,功能包括查询打卡数据,能获取到用户.地点.时间.打卡类型等信息,在轻流中可以基于以上数据做一段时间内的迟到/事假等统计,以及更深层数据处理,方便管理. 第一步:获取ac ...

最新文章

  1. 天津科技大学计算机科学与信息工程学院,天津科技大学人工智能学院欢迎您!...
  2. java和python哪个好学-Python和Java,哪个容易学呢?
  3. Spark SQL概述,DataFrames,创建DataFrames的案例,DataFrame常用操作(DSL风格语法),sql风格语法
  4. python计算余弦距离_在Python中计算余弦距离的优化方法
  5. 使用命令行刷新Magento索引管理 Rebuilt Magento Indexes in terminal with php-cli
  6. Flutter之Stepper源码浅析
  7. Nginx伪静态配置和常用Rewrite伪静态规则
  8. Mysql数据库恢复到指定时间点
  9. Erstudio8.0怎么用?Erstudio8.0汉化版详细使用教程
  10. [项目管理]-第三章:需求分析
  11. Chrome浏览器的跨域设置----包含新老版本两种设置
  12. 如何解决硬盘固件区损坏?只要学会这几步
  13. Qt 如何获取本机ip地址
  14. SBC音频编解码算法(转载)
  15. html 不显示undefine,undefined是阴性的意思吗
  16. 2017 ICPCECIC 北方邀请赛 H MJF wants to work (贪心)
  17. 原来动漫中的羞耻表情都是这样出来的,学会以后可以自己慢慢YY了
  18. TeamViewer14检测为商业用途最优解
  19. 评分卡模型(一)评分卡建模实战
  20. 【LeetCode-SQL】196. 删除重复的电子邮箱

热门文章

  1. 力扣789——逃脱阻碍者(贪心)
  2. Fluke Corporation收购工业可靠性领导者普卢福
  3. 如何利用工时表来帮助项目管理做得更完善?
  4. 年底了,骗子们也要冲业绩了
  5. 手机视频监控-手视通
  6. 计算机应用基础简化版,电大宝典1200《计算机应用基础》期末考试题库简化版2020年1月年最新(00808).pdf...
  7. 对象、内置对象、数组对象、字符串对象的使用
  8. 详解:生产车间的作业流程分析与改善方法!
  9. 今天分享一个关于微商的套路。
  10. JS实现Excel导入以及table导出为Excel