• rtx 二次开发,查找所有部门


    1>rtx二次开发操作类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web;
    
    using System.Xml;
    using System.Xml.Linq;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using System.Configuration;
    using RTXServerApi;
    
    namespace RTXHelper
    {
        public class RTX
        {
    
            private RTXSAPILib.IRTXSAPIRootObj rootObj;
    
            /// <summary>
            /// 默认的RTX服务器的地址和端口是本机,如果夸服务器则从配置文件中读取
            /// 默认值:IP(127.0.0.1) port(8006)
            /// </summary>
            public RTX()
            {
                rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
                WebConfigHelper webConfig = new WebConfigHelper();
                rootObj.ServerIP = webConfig.RTXServerIP;
                rootObj.ServerPort = webConfig.RTXServerPort;
            }
    
            public RTX(String rtxServerIP, Int16 rtxServerPort)
            {
                rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
                rootObj.ServerIP = rtxServerIP;
                rootObj.ServerPort = rtxServerPort;
            }
    
            public bool SignatureAuth(string bstrUserName, string bstrSign)
            {
                RTXSAPILib.IRTXSAPIUserAuthObj2 AuthObj2 = (RTXSAPILib.IRTXSAPIUserAuthObj2)rootObj.UserAuthObj;
                return AuthObj2.SignatureAuth(bstrUserName, bstrSign);
            }
    
            public void SendIM(string bstrSender, string bstrPwd, string bstrReceivers, string bstrMsg, string bstrSessionID)
            {
                rootObj.SendIM(bstrSender, bstrPwd, bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", bstrSessionID, "}"));
            }
    
            public void SendIM(string bstrSender, string bstrReceivers, string bstrMsg)
            {
                rootObj.SendIM(bstrSender, "", bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", Guid.NewGuid().ToString(), "}"));
            }
    
            public void SendNotify(string bstrReceiver, string bstrTitle, int lDelayTime, string bstrMsg)
            {
                rootObj.SendNotify(bstrReceiver, bstrTitle, lDelayTime, bstrMsg);
            }
    
            public string GetDepartment(string userId)
            {
                short d = rootObj.Login("124065", "2");
    
                rootObj.UserManager.SetUserPwd("124065", "2");
                rootObj.UserManager.SetUserMd5Pwd("060637", "2");
                return rootObj.GetBUinPwd();
            }
    
            public short Login(string userId, string pwd)
            {
                return rootObj.Login(userId, pwd);
            }
    
            public void SendDisGroupIM(string bstrSender, string bstrpwd, int lDisGroupId, string bstrtitle, string bstrMsg, string bstrSessionId)
            {
                rootObj.SendDisGroupIM(bstrSender, bstrpwd, lDisGroupId, bstrtitle, bstrMsg, string.Format("{0}{1}{2}", "{", Guid.NewGuid().ToString(), "}"));
            }
    
            public void SendRCAIM(string bstrSender, string bstrpwd, string bstrReceivers, string bstrMsg, string bstrSessionId)
            {
                rootObj.SendRCAIM(bstrSender, bstrpwd, bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", bstrSessionId, "}"));
            }
    
            public string GetAllUsers()
            {
                XDocument xDoc = XDocument.Parse(rootObj.DeptManager.GetChildDepts(""));
    
    
                return rootObj.DisGroupManager.GetAllDisGroupIds();
            }
    
            /// <summary>
            /// 查找部门下的所有用户
            /// </summary>
            /// <param name="deptName">部门路径,比如:"生产技术部\信息中心"</param>
            /// <returns>返回部门下所有用户的账户,不包含子部门下的用户</returns>
            public string[] GetDeptUsers(string deptName)
            {
                List<string> result = new List<string>();
                string users = rootObj.DeptManager.GetDeptUsers(deptName);
                XDocument xdoc = XDocument.Parse(users);
                foreach (var userItem in xdoc.Root.Elements("User"))
                {
                    result.Add(userItem.Attribute("Name").Value);
                }
                return result.ToArray();
            }
    
            /// <summary>
            /// 查找部门下的所有用户
            /// </summary>
            /// <param name="deptName">部门路径,比如:"生产技术部\信息中心"</param>
            /// <returns>返回部门下所有用户的账户,不包含子部门下的用户</returns>
            public string GetDeptUsersJson(string deptName)
            {
                JArray jArray = new JArray();
    
                string users = rootObj.DeptManager.GetDeptUsers(deptName);
                XDocument xdoc = XDocument.Parse(users);
    
                foreach (var userItem in xdoc.Root.Elements("User"))
                {
                    string staffId = userItem.Attribute("Name").Value;
                    string pbstrName = "";
                    int plGender = 0;
                    string pbstrMobile = "";
                    string pbstrEMail = "";
                    string pbstrPhone = "";
                    int plAuthType = 0;
                    try
                    {
                        rootObj.UserManager.GetUserBasicInfo(staffId,
                            out  pbstrName,
                            out plGender,
                            out  pbstrMobile,
                            out  pbstrEMail,
                            out  pbstrPhone,
                            out plAuthType);
                    }
                    catch (Exception)
                    {
                        pbstrName = "获取用户失败";
                    }
                    finally
                    {
                        jArray.Add(new JObject(
                            new JProperty("UserName", staffId),
                            new JProperty("Name", pbstrName),
                            new JProperty("Gender", plGender),
                            new JProperty("Mobile", pbstrMobile),
                            new JProperty("EMail", pbstrEMail),
                            new JProperty("Phone", pbstrPhone),
                            new JProperty("AuthType", plAuthType)));
                    }
                }
    
                return jArray.ToString();
            }
    
            /// <summary>
            /// 从rtx中获取所有部门和用户
            /// </summary>
            /// <param name="serverIp">rtx服务器ip</param>
            /// <param name="serverPort">SDKServerPort,默认6000</param>
            public string GetALLDeptAndUserXml(string serverIp, int sdkServerPort)
            {
                JArray jArray = new JArray();
                RTXServerApi.RTXObject RTXObj = new RTXServerApi.RTXObject();
                RTXServerApi.RTXCollection RTXParams = new RTXServerApi.RTXCollection();
                RTXObj.ServerIP = serverIp;
                RTXObj.ServerPort = sdkServerPort;
                RTXObj.Name = "USERSYNC";
                RTXParams.Add("MODIFYMODE", 1);
                RTXParams.Add("XMLENCODE", @"<?xml version=" + """ + "1.0" + """ + " encoding=" + """ + "gb2312" + """ + " ?>");
                string deptUsersXml = RTXObj.Call2(
                      enumCommand_.PRO_SYNC_FROM_RTX, RTXParams).ToString();
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(deptUsersXml);
                return xmlDoc.OuterXml;
            }
    
            /// <summary>
            /// 从rtx中获取所有部门和用户
            /// </summary>
            /// <param name="serverIp">rtx服务器ip</param>
            /// <param name="serverPort">SDKServerPort,默认6000</param>
            /// <param name="deptName">部门路径,比如:"生产技术部\信息中心"</param>
            public string GetDeptAndUserXml(string serverIp, int sdkServerPort, string deptName)
            {
                JArray jArray = new JArray();
                RTXServerApi.RTXObject RTXObj = new RTXServerApi.RTXObject();
                RTXServerApi.RTXCollection RTXParams = new RTXServerApi.RTXCollection();
                RTXObj.ServerIP = serverIp;
                RTXObj.ServerPort = sdkServerPort;
                RTXObj.Name = "USERSYNC";
                RTXParams.Add("MODIFYMODE", 1);
                RTXParams.Add("XMLENCODE", @"<?xml version=" + """ + "1.0" + """ + " encoding=" + """ + "gb2312" + """ + " ?>");
                string deptUsersXml = RTXObj.Call2(
                      enumCommand_.PRO_SYNC_FROM_RTX, RTXParams).ToString();
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(deptUsersXml);
                XmlNode xmlNode =
                        xmlDoc.SelectSingleNode(GetXpath(deptName));
                foreach (XmlNode item in xmlNode.SelectNodes("department"))
                {
                    xmlNode.RemoveChild(item);
                }
                return xmlNode.OuterXml;
            }
    
            private string GetXpath(string pathName)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("//departments");
                string[] paths = pathName.Split(
                    new string[] { "\" },
                    StringSplitOptions.RemoveEmptyEntries);
                foreach (var item in paths)
                {
                    sb.AppendFormat("/department[@name='{0}']", item);
                }
                return sb.ToString();
            }
        }
    }
    

      程序员的基础教程:菜鸟程序员

  • 相关阅读:
    aws-lambda之异步实现文件的下载上传
    aws实例部署flask报错script-timed-out-before-returning-headers-application-py
    aws上部署scrapy,出现 Out of Memory,内存溢出
    在线UserAgent,爬虫UA
    ubuntu10.24 下安装 unixODBC coreseek4.1 手记
    ubuntu12.04 安装 python2.6
    coreseek/sphinx CentOS6.4下安装
    Elasticsearch 6.2.3 崩溃经历
    (转)梳理在线教育的几大金矿
    kangaroo-open 开源在线公开课平台
  • 原文地址:https://www.cnblogs.com/guohu/p/4920237.html
Copyright © 2020-2023  润新知