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);
}
}
}

浙公网安备 33010602011771号