基本信息
源码名称:U8测试实例
源码大小:0.45M
文件格式:.zip
开发语言:C#
更新时间:2018-08-16
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559

本次赞助数额为: 2 元 
   源码介绍

//[新增或修改]调用示例

//如果是非门户的独立进程,请将U8SOFT\ufcomsql目录中的U8Login.dll替换为Debug版的Login。

//添加对Interop.U8Login.dll引用(在U8SOFT\Interop目录)
//添加对Interop.MSXML2.dll引用(在U8SOFT\Interop目录)

//添加对U8API框架三个类库引用(在U8SOFT\UFMOM\U8APIFramework目录):
//UFIDA.U8.U8APIFramework.dll
//UFIDA.U8.MomServiceCommon.dll
//UFIDA.U8.U8MOMAPIFramework.dll

//声明命名空间
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

//需要添加以下命名空间
using UFIDA.U8.MomServiceCommon;
using UFIDA.U8.U8MOMAPIFramework;
using UFIDA.U8.U8APIFramework;
using UFIDA.U8.U8APIFramework.Meta;
using UFIDA.U8.U8APIFramework.Parameter;
using MSXML2;

namespace U8APITest
{
    class Program
    {
        static void Main(string[] args)
        {
            //第一步:构造u8login对象并登陆(引用U8API类库中的Interop.U8Login.dll)
            //如果当前环境中有login对象则可以省去第一步
            U8Login.clsLogin u8Login = new U8Login.clsLogin();
            String sSubId = "DP";
            String sAccID = "(default)@999";
            String sYear = "2015";
            String sUserID = "demo";
            String sPassword = "DEMO";
            String sDate = "2015-01-11";
            String sServer = "localhost";
            String sSerial = "";
            if (!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial))
            {
                Console.WriteLine("登陆失败,原因:"   u8Login.ShareString);
                Marshal.FinalReleaseComObject(u8Login);
                return;
            }

            //第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
            U8EnvContext envContext = new U8EnvContext();
            envContext.U8Login = u8Login;

            string connectionString = u8Login.UfDbName;
            ADODB.Connection conn = new ADODB.Connection();
            conn.Open(connectionString);
            conn.BeginTrans();

            //采购所有接口均支持内部独立事务和外部事务,默认内部事务
            //如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false
            envContext.BizDbConnection = conn;
            envContext.IsIndependenceTransaction = false;

            //设置上下文参数
            envContext.SetApiContext("VoucherType", 1); //上下文数据类型:int,含义:单据类型,采购订单 1 
            envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝字
            envContext.SetApiContext("sBillType", ""); //上下文数据类型:string,含义:为空串
            envContext.SetApiContext("sBusType", "普通采购"); //上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销

            //第三步:设置API地址标识(Url)
            //当前API:新增或修改的地址标识为:U8API/PurchaseOrder/VoucherSave
            U8ApiAddress myApiAddress = new U8ApiAddress("U8API/PurchaseOrder/VoucherSave");

            //第四步:构造APIBroker
            U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);

            //第五步:API参数赋值

            //给BO表头参数DomHead赋值,此BO参数的业务类型为采购订单,属表头参数。BO参数均按引用传递
            //提示:给BO表头参数DomHead赋值有两种方法

            //方法一是直接传入MSXML2.DOMDocumentClass对象
            MSXML2.DOMDocument domHead = new MSXML2.DOMDocument();
            domHead.load(@"c:\h.xml");
            broker.AssignNormalValue("DomHead", domHead);


            //给BO表体参数domBody赋值,此BO参数的业务类型为采购订单,属表体参数。BO参数均按引用传递
            //提示:给BO表体参数domBody赋值有两种方法

            //方法一是直接传入MSXML2.DOMDocumentClass对象
            MSXML2.DOMDocument domBody = new MSXML2.DOMDocument();
            domBody.load(@"c:\b.xml");
            broker.AssignNormalValue("domBody", domBody);


            //给普通参数VoucherState赋值。此参数的数据类型为int,此参数按值传递,表示单据状态:2新增,1修改,0非编辑
            broker.AssignNormalValue("VoucherState", 2);

            //该参数curID为OUT型参数,由于其数据类型为string,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult("curID")获取其值

            //该参数CurDom为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数
            MSXML2.IXMLDOMDocument2 CurDom = new MSXML2.DOMDocument();
            broker.AssignNormalValue("CurDom", CurDom);

            //给普通参数UserMode赋值。此参数的数据类型为int,此参数按值传递,表示模式,0:CS;1:BS
            broker.AssignNormalValue("UserMode", 0);

            //第六步:调用API
            if (!broker.Invoke())
            {
                //错误处理
                Exception apiEx = broker.GetException();
                if (apiEx != null)
                {
                    if (apiEx is MomSysException)
                    {
                        MomSysException sysEx = apiEx as MomSysException;
                        Console.WriteLine("系统异常:"   sysEx.Message);
                        //todo:异常处理
                    }
                    else if (apiEx is MomBizException)
                    {
                        MomBizException bizEx = apiEx as MomBizException;
                        Console.WriteLine("API异常:"   bizEx.Message);
                        //todo:异常处理
                    }
                    //异常原因
                    String exReason = broker.GetExceptionString();
                    if (exReason.Length != 0)
                    {
                        Console.WriteLine("异常原因:"   exReason);
                    }
                }
                //结束本次调用,释放API资源
                broker.Release();
                return;
            }

            //第七步:获取返回结果

            //获取返回值
            //获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示错误描述:空,正确;非空,错误
            System.String result = broker.GetReturnValue() as System.String;

            //获取out/inout参数值

            //获取普通OUT参数curID。此返回值数据类型为string,在使用该参数之前,请判断是否为空
            string curIDRet = broker.GetResult("curID") as string;

            //获取普通OUT参数CurDom。此返回值数据类型为MSXML2.IXMLDOMDocument2,在使用该参数之前,请判断是否为空
            //MSXML2.IXMLDOMDocument2 CurDomRet = Convert.ToObject(broker.GetResult("CurDom"));

            //结束本次调用,释放API资源
            broker.Release();

            Audit(u8Login, conn, curIDRet);

            conn.CommitTrans();

            return;
        }

        static string Audit(U8Login.clsLogin u8Login, ADODB.Connection conn, string id)
        {


            //////////////////////////////////////////

            //第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
            U8EnvContext  envContext = new U8EnvContext();
            envContext.U8Login = u8Login;

            //采购所有接口均支持内部独立事务和外部事务,默认内部事务
            //如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false
            envContext.BizDbConnection = conn;
            envContext.IsIndependenceTransaction = false;

            //设置上下文参数
            envContext.SetApiContext("VoucherType", 1); //上下文数据类型:int,含义:单据类型,采购订单 1 
            envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝字
            envContext.SetApiContext("sBillType", ""); //上下文数据类型:string,含义:为空串
            envContext.SetApiContext("sBusType", "普通采购"); //上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销

            //第三步:设置API地址标识(Url)
            //当前API:审核订单的地址标识为:U8API/PurchaseOrder/ConfirmPO
            U8ApiAddress myApiAddress = new U8ApiAddress("U8API/PurchaseOrder/ConfirmPO");

            //第四步:构造APIBroker
            U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);

            //第五步:API参数赋值

            //给BO表头参数DomHead赋值,此BO参数的业务类型为采购订单,属表头参数。BO参数均按引用传递
            //提示:给BO表头参数DomHead赋值有两种方法

            MSXML2.DOMDocument domHead = GetDomHeadXml(u8Login, id);

            //方法一是直接传入MSXML2.DOMDocumentClass对象
            broker.AssignNormalValue("DomHead", domHead);

            //第六步:调用API
            if (!broker.Invoke())
            {
                //错误处理
                Exception apiEx = broker.GetException();
                if (apiEx != null)
                {
                    if (apiEx is MomSysException)
                    {
                        MomSysException sysEx = apiEx as MomSysException;
                        Console.WriteLine("系统异常:"   sysEx.Message);
                        //todo:异常处理
                    }
                    else if (apiEx is MomBizException)
                    {
                        MomBizException bizEx = apiEx as MomBizException;
                        Console.WriteLine("API异常:"   bizEx.Message);
                        //todo:异常处理
                    }
                    //异常原因
                    String exReason = broker.GetExceptionString();
                    if (exReason.Length != 0)
                    {
                        Console.WriteLine("异常原因:"   exReason);
                    }
                }
                //结束本次调用,释放API资源
                broker.Release();
                return "error";
            }

            //第七步:获取返回结果

            //获取返回值
            //获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示错误描述:空,正确;非空,错误
            string result = broker.GetReturnValue() as System.String;

            //结束本次调用,释放API资源
            broker.Release();

            return result;

        }

        static MSXML2.DOMDocument GetDomHeadXml(U8Login.clsLogin login, string id)
        {
            
            //第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数
            U8EnvContext envContext = new U8EnvContext();
            envContext.U8Login = login;

            //采购所有接口均支持内部独立事务和外部事务,默认内部事务
            //如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false
            //envContext.BizDbConnection = new ADO.Connection();
            //envContext.IsIndependenceTransaction = false;

            //设置上下文参数
            envContext.SetApiContext("VoucherType", 1); //上下文数据类型:int,含义:单据类型,采购订单 1 
            envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝
            envContext.SetApiContext("sBillType", ""); //上下文数据类型:string,含义:为空串
            envContext.SetApiContext("sBusType", "普通采购"); //上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销

            //第三步:设置API地址标识(Url)
            //当前API:装载单据的地址标识为:U8API/PurchaseOrder/GetVoucherData
            U8ApiAddress myApiAddress = new U8ApiAddress("U8API/PurchaseOrder/GetVoucherData");

            //第四步:构造APIBroker
            U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);

            //第五步:API参数赋值

            //给普通参数strWhere赋值。此参数的数据类型为System.String,此参数按值传递,表示过滤条件串
            broker.AssignNormalValue("strWhere", "poid = "   id);

            //给普通参数varVoucherID赋值。此参数的数据类型为System.String,此参数按值传递,表示单据主表ID
            broker.AssignNormalValue("varVoucherID", "");

            //给普通参数strLocateWhere赋值。此参数的数据类型为System.String,此参数按值传递,表示定位条件串
            broker.AssignNormalValue("strLocateWhere", "");

            //第六步:调用API
            if (!broker.Invoke())
            {
                //错误处理
                Exception apiEx = broker.GetException();
                if (apiEx != null)
                {
                    if (apiEx is MomSysException)
                    {
                        MomSysException sysEx = apiEx as MomSysException;
                        Console.WriteLine("系统异常:"   sysEx.Message);
                        //todo:异常处理
                    }
                    else if (apiEx is MomBizException)
                    {
                        MomBizException bizEx = apiEx as MomBizException;
                        Console.WriteLine("API异常:"   bizEx.Message);
                        //todo:异常处理
                    }
                    //异常原因
                    String exReason = broker.GetExceptionString();
                    if (exReason.Length != 0)
                    {
                        Console.WriteLine("异常原因:"   exReason);
                    }
                }
                //结束本次调用,释放API资源
                broker.Release();
                return null;
            }

            //第七步:获取返回结果

            //获取返回值
            //获取普通返回值。此参数的数据类型为System.String,此参数按引用传递,表示错误描述:空,正确;非空,错误
            System.String result = broker.GetReturnValue() as System.String;

            //获取out/inout参数值

            //out参数DomHead为BO对象(表头),此BO对象的业务类型为采购订单。BO参数均按引用传递,具体请参考服务接口定义
            //如果要取原始的XMLDOM对象结果,请使用GetResult("DomHead") as MSXML2.DOMDocument
            MSXML2.DOMDocument DomHeadRet = broker.GetResult("DomHead") as MSXML2.DOMDocument;

            //结束本次调用,释放API资源
            broker.Release();
            
            return DomHeadRet;
        }

    }
}