OA集成腾讯通<二>:刷新组织架构

   客户端软件安装好了以后,去下载许可文件,同时需要开启本机的8010端口,所有我们还需要注意防火墙,客户端首次登录服务器需要拉取组织架构信息(其中不包含人员信息,只包含部门列表),客户端默认的以每2秒向服务器拉取部门下的人员列表,所以部门下的人员不能太多,这些人员信息保存在UserList.xml中

   第一步:RTX与OA进行信息同步,从下面的图中可以看出,同步信息分为组织架构信息同步和人员信息同步

    

    按照思路需要将OA中部门人员的信息都取出来,然后加入到RTX中,我们先建立一个RTX工具方法的类RTXUtil.cs,包含一些配置信息和方法,首先看看配置信息,主要包括:是否信息同步,服务端IP,端口,可客户端端口

   /// <summary>
        /// 是否在操作OA账号与单位部门时同步至Rtx中
        /// </summary>
        public static bool RtxSyncToOa
        {
            get { return ParameterFilter.GetBool(ConfigurationManager.AppSettings["rtxUserSync"]); }
        }

        public static string ServerIp = ParameterFilter.GetString(ConfigurationManager.AppSettings["rtxServerIP"]); 
        public static int LoginServerPort = ParameterFilter.GetInt(ConfigurationManager.AppSettings["rtxConnPort"]);
        public static int AppServerPort = ParameterFilter.GetInt(ConfigurationManager.AppSettings["rtxServerAppPort"]);

组织架构同步的时候,需要一个新增部门的方法,

   /// <summary>
        /// 利用部门实体新增部门
        /// </summary>
        /// <param name="deptInfo"></param>
        /// <returns></returns>
        public static bool AddDept(DepartmentInfo deptInfo)
        {
            try
            {
                // 创建一个业务逻辑对象
                var rtxObj = new RTXObject();
                // 创建一个集合对象
                var rtxParams = new RTXCollectionClass();
                rtxObj.Name = "USERMANAGER";
                int deptId = Convert.ToInt32(deptInfo.UnitId.ToString() + deptInfo.DeptId.ToString());
                rtxParams.Add("PDEPTID", deptInfo.UnitId);
                rtxParams.Add("DEPTID", deptId);
                rtxParams.Add("NAME", deptInfo.DeptName);
                rtxParams.Add("INFO", deptInfo.DeptName);

                if (IsExistsDept(deptId))
                {
                    rtxObj.Call2(enumCommand_.PRO_SETDEPT, rtxParams);
                }
                else
                {
                    rtxObj.Call2(enumCommand_.PRO_ADDDEPT, rtxParams);
                }

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

 这个方法的是往RTX中添加组织架构信息,有个这个方法,我们就可以将OA中的部门信息导入到RTX中

  /// <summary>
        /// 同步组织架构
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnOrgSync_Click(object sender, EventArgs e)
        {
            UnitsManager unitsManager = new UnitsManager();
            IList<UnitInfo> unitInfos = unitsManager.GetUnits();
            foreach (var unitInfo in unitInfos)
            {
                RtxUtil.AddDept(unitInfo);

                var deptManager = new DepartmentsManager();
                IList<DepartmentInfo> deptInfos = deptManager.GetDepartmentsInUnit(unitInfo.UnitId.ToString());

                foreach (var deptInfo in deptInfos)
                {
                    RtxUtil.AddDept(deptInfo);
                }
            }
        }
posted @ 2011-03-17 14:30  marr  阅读(816)  评论(0编辑  收藏  举报