 
                    
                
         
    
    
    
	
	
		
	
		
		
		
			
 using System;
using System;
 using System.Collections;
using System.Collections;
 using System.ComponentModel;
using System.ComponentModel;
 using System.Data;
using System.Data;
 using System.Diagnostics;
using System.Diagnostics;
 using System.Web;
using System.Web;
 using System.Web.Services;
using System.Web.Services;
 using BX.Interface;
using BX.Interface;

 namespace WebService
namespace WebService


 {
{

 /**//// <summary>
    /**//// <summary>
 /// Service1 的摘要说明。
    /// Service1 的摘要说明。
 /// </summary>
    /// </summary>
 public class doService : System.Web.Services.WebService
    public class doService : System.Web.Services.WebService

 
     {
{


 /**//// <summary>
/**//// <summary>
 /// 网上报销系统WebService服务通用调用方法
        /// 网上报销系统WebService服务通用调用方法
 /// </summary>
        /// </summary>
 /// <param name="ifCode">接口标识</param>
        /// <param name="ifCode">接口标识</param>
 /// <param name="ifPass">校验码</param>
        /// <param name="ifPass">校验码</param>
 /// <param name="ifEvent">操作方式(可空)</param>
        /// <param name="ifEvent">操作方式(可空)</param>
 /// <param name="ifInfo">传入的XML信息</param>
        /// <param name="ifInfo">传入的XML信息</param>
 /// <returns></returns>
        /// <returns></returns>
 [WebMethod]
        [WebMethod]
 public string IfService(string ifCode,string ifPass,string ifEvent,string ifInfo)
        public string IfService(string ifCode,string ifPass,string ifEvent,string ifInfo)

 
         {
{
 ifCode = ifCode.Trim();
            ifCode = ifCode.Trim();
 ifPass = ifPass.Trim();
            ifPass = ifPass.Trim();
 ifEvent = ifEvent.Trim();
            ifEvent = ifEvent.Trim();
 ifInfo = ifInfo.Trim();
            ifInfo = ifInfo.Trim();

 string IReceiveContract_Id = System.Configuration.ConfigurationSettings.AppSettings["IReceiveContract_Id"].Trim();
            string IReceiveContract_Id = System.Configuration.ConfigurationSettings.AppSettings["IReceiveContract_Id"].Trim();
 string IReceiveContract_PSW = System.Configuration.ConfigurationSettings.AppSettings["IReceiveContract_PSW"].Trim();
            string IReceiveContract_PSW = System.Configuration.ConfigurationSettings.AppSettings["IReceiveContract_PSW"].Trim();
 string IReceiveNoContract_Id = System.Configuration.ConfigurationSettings.AppSettings["IReceiveNoContract_Id"].Trim();
            string IReceiveNoContract_Id = System.Configuration.ConfigurationSettings.AppSettings["IReceiveNoContract_Id"].Trim();
 string IReceiveNoContract_PSW = System.Configuration.ConfigurationSettings.AppSettings["IReceiveNoContract_PSW"].Trim();
            string IReceiveNoContract_PSW = System.Configuration.ConfigurationSettings.AppSettings["IReceiveNoContract_PSW"].Trim();

 if(ifCode.Equals(IReceiveContract_Id))
            if(ifCode.Equals(IReceiveContract_Id))

 
             {
{
 if(!ifPass.Equals(IReceiveContract_PSW))
                if(!ifPass.Equals(IReceiveContract_PSW))
 return ICommon.createResultXML(2,"","");
                    return ICommon.createResultXML(2,"","");
 return IApplyContract.ReceiveApply(ifCode,ifInfo);
                return IApplyContract.ReceiveApply(ifCode,ifInfo);
 }
            }
 else if(ifCode.Equals(IReceiveNoContract_Id))
            else if(ifCode.Equals(IReceiveNoContract_Id))

 
             {
{
 if(!ifPass.Equals(IReceiveNoContract_PSW))
                if(!ifPass.Equals(IReceiveNoContract_PSW))
 return ICommon.createResultXML(2,"","");
                    return ICommon.createResultXML(2,"","");
 return IApplyNoContract.ReceiveApply(ifCode,ifInfo);
                return IApplyNoContract.ReceiveApply(ifCode,ifInfo);
 }
            }
 else
            else

 
             {
{            
 return ICommon.createResultXML(1,"","");
                return ICommon.createResultXML(1,"","");                    
 }
            }        
 } //-- end IfSerive
        } //-- end IfSerive
 }
    }
 }
}


 通用处理类ICommon.cs
通用处理类ICommon.cs
 // ****************************************************
// ****************************************************
 //    功    能:SOAP XML WebService接口通用处理类
//    功    能:SOAP XML WebService接口通用处理类
 //    说    明:
//    说    明:
 //    创 建 者:dingzh@jstrd.com
//    创 建 者:dingzh@jstrd.com
 //    创建时间:2007-07-04
//    创建时间:2007-07-04
 //    修改信息:
//    修改信息:
 // ****************************************************
// ****************************************************
 using System;
using System;
 using System.Xml;
using System.Xml;
 using System.Web.Services.Description;
using System.Web.Services.Description;
 using System.CodeDom;
using System.CodeDom;
 using System.CodeDom.Compiler;
using System.CodeDom.Compiler;
 using System.Data;
using System.Data;

 namespace BX.Interface
namespace BX.Interface


 {
{

 /**//// <summary>
    /**//// <summary>
 /// SOAP XML WebService接口通用处理类
    /// SOAP XML WebService接口通用处理类
 /// </summary>
    /// </summary>
 public class ICommon
    public class ICommon

 
     {
{
 public ICommon()
        public ICommon()

 
         {
{
 //
            //
 // TODO: 在此处添加构造函数逻辑
            // TODO: 在此处添加构造函数逻辑
 //
            //
 }
        }        
 
            

 /**//// <summary>
        /**//// <summary>
 /// 动态引用一个XML Web Service
        /// 动态引用一个XML Web Service        
 /// IfSerive(string ifCode,string ifPass,string ifEvent,string ifInfo)
        /// IfSerive(string ifCode,string ifPass,string ifEvent,string ifInfo)
 /// </summary>
        /// </summary>
 /// <param name="v_WSDL">WSDL路径</param>
        /// <param name="v_WSDL">WSDL路径</param>
 /// <param name="SvClsName">接口服务真实类名</param>
        /// <param name="SvClsName">接口服务真实类名</param>
 /// <param name="v_WebMethod">接口函数方法名</param>
        /// <param name="v_WebMethod">接口函数方法名</param>
 /// <param name="v_ifCode">接口标识</param>
        /// <param name="v_ifCode">接口标识</param>
 /// <param name="v_args">接口函数参数列表数组</param>
        /// <param name="v_args">接口函数参数列表数组</param>
 /// <returns>string</returns>
        /// <returns>string</returns>
 public static string getSoapService(string v_WSDL, string SvClsName, string v_WebMethod, string v_ifCode,ref object[] v_args)//不需安装SOAP ToolKit 3.0 !
        public static string getSoapService(string v_WSDL, string SvClsName, string v_WebMethod, string v_ifCode,ref object[] v_args)//不需安装SOAP ToolKit 3.0 !   

 
         {
{   
 string v_NameSpace = "DSv_"+v_ifCode;
            string v_NameSpace = "DSv_"+v_ifCode;
 string v_ClassName = v_NameSpace + "." + SvClsName;
            string v_ClassName = v_NameSpace + "." + SvClsName;

 //1)用XML阅读器从一个文件路径或者是网络路径中读入WSDL文件:
            //1)用XML阅读器从一个文件路径或者是网络路径中读入WSDL文件:   
 XmlTextReader reader = new XmlTextReader(v_WSDL);//加入 using System.Xml;
            XmlTextReader reader = new XmlTextReader(v_WSDL);//加入 using System.Xml;   
 //2〉把读到的内容用ServiceDescription来描述:
            //2〉把读到的内容用ServiceDescription来描述:   
 ServiceDescription sd = ServiceDescription.Read(reader);   //加入using System.Web.Services.Description;
            ServiceDescription sd = ServiceDescription.Read(reader);   //加入using System.Web.Services.Description;   
 //3)用服务导入器把得到的描述导入服务描述中:
            //3)用服务导入器把得到的描述导入服务描述中:   
 ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
            ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();   
 sdi.AddServiceDescription(sd,null,null);
            sdi.AddServiceDescription(sd,null,null);   
 //4)指定要动态编译的代码的命名空间:
            //4)指定要动态编译的代码的命名空间:   
 CodeNamespace cn = new CodeNamespace(v_NameSpace);   //"DynamicServices"
            CodeNamespace cn = new CodeNamespace(v_NameSpace);   //"DynamicServices"
 //5)指定要动态编译的代码单元:
            //5)指定要动态编译的代码单元:   
 CodeCompileUnit ccu = new CodeCompileUnit();
            CodeCompileUnit ccu = new CodeCompileUnit();   
 //6)把命名空间添加到动态编译的代码单元的命名空间组中去:
            //6)把命名空间添加到动态编译的代码单元的命名空间组中去:   
 ccu.Namespaces.Add(cn);
            ccu.Namespaces.Add(cn);   
 //7)指示服务导入器把该动态编译单元内该命名空间的代码导进去,作为新的动态服务描述:
            //7)指示服务导入器把该动态编译单元内该命名空间的代码导进去,作为新的动态服务描述:   
 sdi.Import(cn,ccu);
            sdi.Import(cn,ccu);   
 //8)新建一个C#编译器来编译:
            //8)新建一个C#编译器来编译:   
 ICodeCompiler icc = new Microsoft.CSharp.CSharpCodeProvider().CreateCompiler();
            ICodeCompiler icc = new Microsoft.CSharp.CSharpCodeProvider().CreateCompiler();  
 //9)新建一个编译参数对象(在这里我们设置它为空的编译参数):
            //9)新建一个编译参数对象(在这里我们设置它为空的编译参数):   
 CompilerParameters cp=new CompilerParameters();
            CompilerParameters cp=new CompilerParameters();    
 //10)指示C#编译器,按照 CP 编译参数对象提供的参数来进行 CCU 单元的编译。并把编译结果传给 编译结果对象 cr:
            //10)指示C#编译器,按照 CP 编译参数对象提供的参数来进行 CCU 单元的编译。并把编译结果传给 编译结果对象 cr:   
 CompilerResults cr = icc.CompileAssemblyFromDom(cp, ccu);
            CompilerResults cr = icc.CompileAssemblyFromDom(cp, ccu);   
 //11)从动态编译结果中获取 某个 字符串(通常是该类型名字)所表示的真实类:
            //11)从动态编译结果中获取 某个 字符串(通常是该类型名字)所表示的真实类:   
 Type t = cr.CompiledAssembly.GetType(v_ClassName);   //其中的DynamicServices必须和CodeNamespace cn = new   CodeNamespace("DynamicServices");定义的同名
            Type t = cr.CompiledAssembly.GetType(v_ClassName);   //其中的DynamicServices必须和CodeNamespace cn = new   CodeNamespace("DynamicServices");定义的同名  
 //12)创建该类的实例:
            //12)创建该类的实例:   
 Object obj = Activator.CreateInstance(t);
            Object obj = Activator.CreateInstance(t);           
 //13)根据方法名称字符串 反射到该方法的实体:
            //13)根据方法名称字符串 反射到该方法的实体:   
 System.Reflection.MethodInfo mi = obj.GetType().GetMethod(v_WebMethod);
            System.Reflection.MethodInfo mi = obj.GetType().GetMethod(v_WebMethod);              
 //14)用该方法实体的.Invoke()来调用该方法:
            //14)用该方法实体的.Invoke()来调用该方法:   
 string ret = System.Convert.ToString(mi.Invoke(obj, v_args));  //,new object[]{"传给方法的参数1","传给方法的参数2"}));
            string ret = System.Convert.ToString(mi.Invoke(obj, v_args));  //,new object[]{"传给方法的参数1","传给方法的参数2"}));    
 return ret;
            return ret;
 
            
 //            添加Web 引用,在WSDL一栏中把刚才得到的WSDL地址复制过来,Web 引用的名称输入JavaService
            //            添加Web 引用,在WSDL一栏中把刚才得到的WSDL地址复制过来,Web 引用的名称输入JavaService
 //            JavaService.ServiceService bean = new JavaService.ServiceService();
            //            JavaService.ServiceService bean = new JavaService.ServiceService();
 //            string aa = bean.IfService("ifUser","ifPass","ifCode","ifEvent","info");
            //            string aa = bean.IfService("ifUser","ifPass","ifCode","ifEvent","info");
 }  //-- End getSoapService/
        }  //-- End getSoapService/




 /**//// <summary>
        /**//// <summary>
 /// 创建返回结果XML
        /// 创建返回结果XML
 /// </summary>
        /// </summary>
 /// <param name="v_ifResult">接口结果代码</param>
        /// <param name="v_ifResult">接口结果代码</param>
 /// <param name="v_ifStack">错误信息堆栈</param>
        /// <param name="v_ifStack">错误信息堆栈</param>
 /// <param name="v_ifResultInfo">接口结果信息</param>
        /// <param name="v_ifResultInfo">接口结果信息</param>
 /// <returns>string</returns>
        /// <returns>string</returns>        
 public static string createResultXML(int v_ifResult,string v_ifErrStack,string v_ifResultInfo)
        public static string createResultXML(int v_ifResult,string v_ifErrStack,string v_ifResultInfo)

 
         {
{
 string v_ifError = "";
            string v_ifError = "";
 switch(v_ifResult)
            switch(v_ifResult)

 
             {
{
 case 1:
                case 1:
 v_ifError = "无此接口标识ifCode";
                    v_ifError = "无此接口标识ifCode";
 break;
                    break;
 case 2:
                case 2:
 v_ifError = "调用系统校验未通过";
                    v_ifError = "调用系统校验未通过";
 break;
                    break;
 case 3:
                case 3:
 v_ifError = "传入的不是一个正确的xml格式";
                    v_ifError = "传入的不是一个正确的xml格式";
 break;
                    break;
 case 4:
                case 4:
 v_ifError = "info参数中的字段不符合规约中的要求";
                    v_ifError = "info参数中的字段不符合规约中的要求";
 break;
                    break;
 case 5:
                case 5:
 v_ifError = "该条数据已重复发送";
                    v_ifError = "该条数据已重复发送";
 break;
                    break;
 case 9:
                case 9:
 v_ifError = "本系统处理时发生异常";
                    v_ifError = "本系统处理时发生异常";
 break;
                    break;
 default:
                default:
 break;
                    break;
 }
            }

 XmlDocument xmldoc;
            XmlDocument xmldoc;
 //XmlNode xmlnode;
            //XmlNode xmlnode;
 XmlElement xmlelem;
            XmlElement xmlelem;

 xmldoc = new XmlDocument();
            xmldoc = new XmlDocument();
 //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
            //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
 XmlDeclaration xmldecl;
            XmlDeclaration xmldecl;
 xmldecl = xmldoc.CreateXmlDeclaration("1.0","gb2312",null);
            xmldecl = xmldoc.CreateXmlDeclaration("1.0","gb2312",null);
 xmldoc.AppendChild (xmldecl);
            xmldoc.AppendChild (xmldecl);

 //加入一个根元素
            //加入一个根元素
 xmlelem = xmldoc.CreateElement ("","IfResponse","");
            xmlelem = xmldoc.CreateElement ("","IfResponse","");
 xmldoc.AppendChild (xmlelem) ;
            xmldoc.AppendChild (xmlelem) ;
 //加入另外一个元素
            //加入另外一个元素
 //for(int i=1;i<3;i++)
            //for(int i=1;i<3;i++)
 //{
            //{

 XmlNode root = xmldoc.SelectSingleNode("IfResponse");//查找<IfResponse>
            XmlNode root = xmldoc.SelectSingleNode("IfResponse");//查找<IfResponse> 

 XmlElement eIfResult = xmldoc.CreateElement("IfResult");//创建一个<IfResult>节点
            XmlElement eIfResult = xmldoc.CreateElement("IfResult");//创建一个<IfResult>节点                 
 eIfResult.SetAttribute("Note","接口结果代码"); //设置该节点Note属性
            eIfResult.SetAttribute("Note","接口结果代码"); //设置该节点Note属性 
 eIfResult.InnerText = v_ifResult.ToString(); //设置节点文本值
            eIfResult.InnerText = v_ifResult.ToString(); //设置节点文本值
 root.AppendChild(eIfResult);  //添加到<IfResponse>节点中
            root.AppendChild(eIfResult);  //添加到<IfResponse>节点中 

 XmlElement eIfError = xmldoc.CreateElement("IfError");
            XmlElement eIfError = xmldoc.CreateElement("IfError");        
 eIfError.SetAttribute("Note","错误信息");
            eIfError.SetAttribute("Note","错误信息"); 
 eIfError.InnerText = v_ifError;
            eIfError.InnerText = v_ifError;
 root.AppendChild(eIfError);
            root.AppendChild(eIfError);  

 XmlElement eIfErrorStack = xmldoc.CreateElement("IfErrorStack");
            XmlElement eIfErrorStack = xmldoc.CreateElement("IfErrorStack");            
 eIfErrorStack.SetAttribute("Note","错误信息堆栈");
            eIfErrorStack.SetAttribute("Note","错误信息堆栈");
 eIfErrorStack.InnerText = v_ifErrStack;
            eIfErrorStack.InnerText = v_ifErrStack;
 root.AppendChild(eIfErrorStack);
            root.AppendChild(eIfErrorStack);

 XmlElement eIfResultInfo = xmldoc.CreateElement("IfResultInfo");
            XmlElement eIfResultInfo = xmldoc.CreateElement("IfResultInfo");                
 eIfResultInfo.SetAttribute("Note","接口结果信息");
            eIfResultInfo.SetAttribute("Note","接口结果信息");
 eIfResultInfo.InnerText = v_ifResultInfo;
            eIfResultInfo.InnerText = v_ifResultInfo;
 root.AppendChild(eIfResultInfo);
            root.AppendChild(eIfResultInfo);
 //}
            //}
 //保存创建好的XML文档
            //保存创建好的XML文档
 //xmldoc.Save ( Server.MapPath("data.xml") ) ;
            //xmldoc.Save ( Server.MapPath("data.xml") ) ; 

 return xmldoc.InnerXml;
            return xmldoc.InnerXml;
 //xmldoc.OuterXml;
            //xmldoc.OuterXml;

 //        <?xml version="1.0" encoding="GB2312"?>
//        <?xml version="1.0" encoding="GB2312"?>
 //        <IfResponse>
//        <IfResponse>
 //        <IfResult>接口结果代码</IfResult>
//        <IfResult>接口结果代码</IfResult>
 //        <IfError>错误信息</IfError>
//        <IfError>错误信息</IfError>
 //        <IfErrorStack>错误信息堆栈</IfErrorStack>
//        <IfErrorStack>错误信息堆栈</IfErrorStack>
 //        <IfResultInfo>接口结果信息</IfResultInfo>
//        <IfResultInfo>接口结果信息</IfResultInfo>
 //        </IfResponse>
//        </IfResponse>
 //
//
 //        <IfResult/>依照下述约定:
//        <IfResult/>依照下述约定:
 //        成功:0 —仅表示接口调用成功,并不代表业务调用成功,业务返回结果信息存放于<IfResultInfo/>节点中
//        成功:0 —仅表示接口调用成功,并不代表业务调用成功,业务返回结果信息存放于<IfResultInfo/>节点中
 //        失败:非零整数值
//        失败:非零整数值    
 //            1:无此接口标识ifCode
//            1:无此接口标识ifCode
 //            2:调用系统校验未通过
//            2:调用系统校验未通过    
 //            3:传入的不是一个正确的xml格式
//            3:传入的不是一个正确的xml格式
 //            4:info参数中的字段不符合规约中的要求
//            4:info参数中的字段不符合规约中的要求
 //            5:该条数据已重复发送
//            5:该条数据已重复发送
 //            9:本系统处理时发生异常
//            9:本系统处理时发生异常
 } //-- End createResultXML/
        } //-- End createResultXML/

 
        


 /**//// <summary>
        /**//// <summary>
 /// 将XML格式字符串转化成DataSet
        /// 将XML格式字符串转化成DataSet
 /// </summary>
        /// </summary>
 /// <param name="xml">xml字符串</param>
        /// <param name="xml">xml字符串</param>
 /// <returns>DataSet</returns>
        /// <returns>DataSet</returns>
 public static DataSet parseResultXML2DataSet(string xml)
        public static DataSet parseResultXML2DataSet(string xml)

 
         {
{
 DataSet ds = new DataSet();
            DataSet ds = new DataSet();    
 
        
 //方法一
            //方法一
 using(System.IO.StringReader sr = new System.IO.StringReader(xml))
            using(System.IO.StringReader sr = new System.IO.StringReader(xml))

 
             {
{            
 ds.ReadXml(sr);
                ds.ReadXml(sr);
 }
            }

 //            //方法二
//            //方法二
 //            using(System.Xml.XmlReader xr = System.Xml.XmlReader.Create(new System.IO.StringReader(xml)))
//            using(System.Xml.XmlReader xr = System.Xml.XmlReader.Create(new System.IO.StringReader(xml)))
 //            {
//            {
 //                ds.ReadXml(xr);
//                ds.ReadXml(xr);
 //            }
//            }

 //            //方法三
//            //方法三
 //            using(System.IO.Stream st = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(xml)))
//            using(System.IO.Stream st = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(xml)))
 //            {
//            {
 //                ds.ReadXml(st);
//                ds.ReadXml(st);
 //            }
//            }

 return ds;
            return ds;
 }
        }


 /**//// <summary>
        /**//// <summary>
 /// 将XML格式字符串转化成IStructResult
        /// 将XML格式字符串转化成IStructResult
 /// </summary>
        /// </summary>
 /// <param name="xml">xml字符串</param>
        /// <param name="xml">xml字符串</param>
 /// <returns>IStructResult</returns>
        /// <returns>IStructResult</returns>
 public static IStructResult parseResultXML2Struct(string xml)
        public static IStructResult parseResultXML2Struct(string xml)

 
         {
{
 IStructResult structResult = new IStructResult();
            IStructResult structResult = new IStructResult();
 structResult.Clear();
            structResult.Clear();

 XmlDocument xmldoc = new XmlDocument();
            XmlDocument xmldoc = new XmlDocument();
 try
            try 

 
             {
{
 xmldoc.LoadXml(xml);
                xmldoc.LoadXml(xml);
 }
            } 
 catch(XmlException ex)
            catch(XmlException ex)

 
             {
{
 structResult.IfResult = -1;
                structResult.IfResult = -1;
 structResult.IfError = "未能处理的异常返回结果";
                structResult.IfError = "未能处理的异常返回结果";
 structResult.IfErrorStack = ex.Message;
                structResult.IfErrorStack = ex.Message;
 return structResult;
                return structResult;
 //throw ex;
                //throw ex;                        
 }
            }
 
            
 try
            try

 
             {
{
 string strResult = xmldoc.GetElementsByTagName("IfResult").Item(0).InnerText.Trim();
                string strResult = xmldoc.GetElementsByTagName("IfResult").Item(0).InnerText.Trim();
 structResult.IfResult        = strResult.Equals(string.Empty)?-1:int.Parse(strResult);
                structResult.IfResult        = strResult.Equals(string.Empty)?-1:int.Parse(strResult);
 structResult.IfError        = xmldoc.GetElementsByTagName("IfError").Item(0).InnerText.Trim();
                structResult.IfError        = xmldoc.GetElementsByTagName("IfError").Item(0).InnerText.Trim();
 structResult.IfErrorStack    = xmldoc.GetElementsByTagName("IfErrorStack").Item(0).InnerText.Trim();
                structResult.IfErrorStack    = xmldoc.GetElementsByTagName("IfErrorStack").Item(0).InnerText.Trim();
 structResult.IfResultInfo    = xmldoc.GetElementsByTagName("IfResultInfo").Item(0).InnerText.Trim();
                structResult.IfResultInfo    = xmldoc.GetElementsByTagName("IfResultInfo").Item(0).InnerText.Trim();
 }
            }
 catch(Exception e)
            catch(Exception e)

 
             {
{
 structResult.IfResult = -1;
                structResult.IfResult = -1;
 structResult.IfError = "未能处理的异常返回结果";
                structResult.IfError = "未能处理的异常返回结果";
 structResult.IfErrorStack = e.Message;
                structResult.IfErrorStack = e.Message;
 return structResult;
                return structResult;
 //throw e;
                //throw e;                            
 }
            }
 return structResult;
            return structResult;
 }
        }
 }
    }



 /**//// <summary>
    /**//// <summary>
 /// 接口返回结果结构体
    /// 接口返回结果结构体
 /// </summary>
    /// </summary>
 public struct IStructResult
    public struct IStructResult

 
     {
{
 public int        IfResult;
        public int        IfResult;
 public string    IfError;
        public string    IfError;
 public string    IfErrorStack;
        public string    IfErrorStack;
 public string    IfResultInfo;
        public string    IfResultInfo;

 public void Clear()
        public void Clear()

 
         {
{
 IfResult        = -1;
            IfResult        = -1;
 IfError            = "";
            IfError            = "";
 IfErrorStack    = "";
            IfErrorStack    = "";
 IfResultInfo    = "";
            IfResultInfo    = "";
 }
        }
 }
    }
 }
}


 接收外部数据
接收外部数据
 using System;
using System;
 using System.Xml;
using System.Xml;
 using System.IO;
using System.IO;

 namespace BX.Interface
namespace BX.Interface


 {
{

 /**//// <summary>
    /**//// <summary>
 /// IApplyContract 的摘要说明。
    /// IApplyContract 的摘要说明。
 /// </summary>
    /// </summary>
 public class IApplyContract
    public class IApplyContract

 
     {
{
 public IApplyContract()
        public IApplyContract()

 
         {
{
 //
            //
 // TODO: 在此处添加构造函数逻辑
            // TODO: 在此处添加构造函数逻辑
 //
            //
 }
        }        


 /**//// <summary>
        /**//// <summary>
 /// 接收合同付款申请信息
        /// 接收合同付款申请信息
 /// </summary>
        /// </summary>
 /// <param name="xml"></param>
        /// <param name="xml"></param>
 /// <returns></returns>
        /// <returns></returns>
 public static string ReceiveApply(string interfaceid, string xml)
        public static string ReceiveApply(string interfaceid, string xml)

 
         {
{            
 XmlDocument xmldoc = new XmlDocument();
            XmlDocument xmldoc = new XmlDocument();
 try
            try 

 
             {
{
 xmldoc.LoadXml(xml);
                xmldoc.LoadXml(xml);
 }
            } 
 catch(XmlException ex)
            catch(XmlException ex)

 
             {
{
 //throw ex;
                //throw ex;
 return ICommon.createResultXML(3,ex.Message,"");
                return ICommon.createResultXML(3,ex.Message,"");                
 }
            }

 try
try

 
             {
{
 action = xmldoc.GetElementsByTagName("action").Item(0).InnerText.Trim();
                action = xmldoc.GetElementsByTagName("action").Item(0).InnerText.Trim();


 .
.


 .
.
 //XML节点解析//
//XML节点解析//


 .
.


 .
.
 }
}
 catch(Exception e)
            catch(Exception e)

 
             {
{
 //throw e;
                //throw e;
 return ICommon.createResultXML(4,e.Message,"");
                return ICommon.createResultXML(4,e.Message,"");                
 }
            }    

 string strSQL = "INSERT INTO dbo.bx_apply_interface () Values()";
string strSQL = "INSERT INTO dbo.bx_apply_interface () Values()";
 try
try

 
             {
{
 //检测是否重复提交
                //检测是否重复提交
 string sqlJudge = "SELECT MAX(receive_time) AS lstTime FROM dbo.bx_apply_interface";
                string sqlJudge = "SELECT MAX(receive_time) AS lstTime FROM dbo.bx_apply_interface";
 sqlJudge += " WHERE prjid='"+contract_prjid+"' AND cttid='"+contract_cttid+"' AND expandid='"+contract_expandid+"'";
                sqlJudge += " WHERE prjid='"+contract_prjid+"' AND cttid='"+contract_cttid+"' AND expandid='"+contract_expandid+"'";
 object objTime = BX.DAL.DBHelper.ExecuteScalar(sqlJudge);
                object objTime = BX.DAL.DBHelper.ExecuteScalar(sqlJudge);
 if(objTime != DBNull.Value)
                if(objTime != DBNull.Value)

 
                 {
{
 string lstTime = Convert.ToString(objTime).Trim();
                    string lstTime = Convert.ToString(objTime).Trim();
 if(!lstTime.Equals(string.Empty))
                    if(!lstTime.Equals(string.Empty))
 return ICommon.createResultXML(0,"该条数据已于"+lstTime+"成功传入网上报销系统!\n操作忽略!","0");
                        return ICommon.createResultXML(0,"该条数据已于"+lstTime+"成功传入网上报销系统!\n操作忽略!","0");
 //return ICommon.createResultXML(5,"该条数据已于"+lstTime+"成功传入网上报销系统!\n不能重复提交!","1");
                        //return ICommon.createResultXML(5,"该条数据已于"+lstTime+"成功传入网上报销系统!\n不能重复提交!","1");
 }
                }

 BX.DAL.DBHelper.ExecuteNonQuery(strSQL);
                BX.DAL.DBHelper.ExecuteNonQuery(strSQL);
 }
            } 
 catch(System.Data.SqlClient.SqlException exSQL)
            catch(System.Data.SqlClient.SqlException exSQL)

 
             {
{
 //throw exSQL;
                //throw exSQL;
 return ICommon.createResultXML(9,exSQL.Message,"1");
                return ICommon.createResultXML(9,exSQL.Message,"1");                
 }
            }

 return ICommon.createResultXML(0,"","0");
            return ICommon.createResultXML(0,"","0");
 }
        }        
 }
    }
 }
}


 调用外部接口发送数据
调用外部接口发送数据
 using System;
using System;
 using System.Xml;
using System.Xml;
 using System.Data;
using System.Data;

 namespace BX.Interface
namespace BX.Interface


 {
{

 /**//// <summary>
    /**//// <summary>
 /// ISendAuditResult 的摘要说明。
    /// ISendAuditResult 的摘要说明。
 /// </summary>
    /// </summary>
 public class ISendAuditResult
    public class ISendAuditResult

 
     {
{


 /**//// <summary>
    /**//// <summary>
 /// 调用网上报销审批系统传递审批结果信息接口
        /// 调用网上报销审批系统传递审批结果信息接口        
 /// </summary>
        /// </summary>
 /// <param name="info"></param>
        /// <param name="info"></param>
 /// <returns>IStructResult</returns>
        /// <returns>IStructResult</returns>
 public static string[] invoke(StructAuditResult v_struct)
        public static string[] invoke(StructAuditResult v_struct)

 
         {
{
 string WSDL = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_WSDL"];
            string WSDL = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_WSDL"];
 string SvClsName = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_SvClsName"];
            string SvClsName = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_SvClsName"];
 string WebMethod = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_WebMethod"];
            string WebMethod = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_WebMethod"];
 string ifCode = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_ifCode"];
            string ifCode = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_ifCode"];
 string ifPass = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_ifPass"];
            string ifPass = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_ifPass"];            
 string ifEvent = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_ifEvent"];
            string ifEvent = System.Configuration.ConfigurationSettings.AppSettings["ISendAuditResult_ifEvent"];    
 
        
 string info = creatXML(v_struct);
            string info = creatXML(v_struct);
 //            object[] args = new object[]{ifCode,ifPass,ifEvent,info};
//            object[] args = new object[]{ifCode,ifPass,ifEvent,info};        
 
            
 //            return ICommon.parseResultXML2Struct(ICommon.getSoapService(WSDL, SvClsName, WebMethod, ifCode, args));
//            return ICommon.parseResultXML2Struct(ICommon.getSoapService(WSDL, SvClsName, WebMethod, ifCode, args));

 //int GetPrjCttPayment(string ValPWD,string xmlContent,ref string ErrorInfo);
            //int GetPrjCttPayment(string ValPWD,string xmlContent,ref string ErrorInfo);            

 object[] args = new object[]
            object[] args = new object[] {ifPass,info,""};
{ifPass,info,""};
 int ret = int.Parse(ICommon.getSoapService(WSDL, SvClsName, WebMethod, ifCode,ref args));
            int ret = int.Parse(ICommon.getSoapService(WSDL, SvClsName, WebMethod, ifCode,ref args));
 
            
 string[] resultInfo = new string[2];
            string[] resultInfo = new string[2];
 resultInfo[0] = ret.ToString();
            resultInfo[0] = ret.ToString();
 resultInfo[1] = Convert.ToString(args[2]).Trim();//返回错误信息
            resultInfo[1] = Convert.ToString(args[2]).Trim();//返回错误信息
 return resultInfo;
            return resultInfo;
 }
        }

 private static string creatXML(StructAuditResult v_struct)
        private static string creatXML(StructAuditResult v_struct)

 
         { return xmldoc.InnerXml;}
{ return xmldoc.InnerXml;}

 }
   }
 }
} 
		 
		posted @ 
2007-07-12 13:28 
blueKnight 
Views(
14198) 
Comments() 
 
收藏 
举报