From d455872aaa3aec9fef582ccef86b75be475e6146 Mon Sep 17 00:00:00 2001 From: luanhui <1029149336@qq.com> Date: Thu, 28 Dec 2017 10:01:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=86=9C=E8=A1=8Cwebservice?= =?UTF-8?q?=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B3QingDaoWanFu/B3QingDaoWanFu.csproj | 5 + B3QingDaoWanFu/Rpc/GatheringRpc.cs | 95 +++++++++++ B3QingDaoWanFu/Utils/WanFuOnlineConfig.cs | 39 +++++ .../B3WanFuSaleWebService.sln | 73 +++++++++ B3WanFuSaleWebService/RpcHelper/Gatherings.cs | 61 +++++++ .../RpcHelper/Properties/AssemblyInfo.cs | 36 +++++ B3WanFuSaleWebService/RpcHelper/Results.cs | 64 ++++++++ .../RpcHelper/RpcHelper.csproj | 62 ++++++++ .../RpcHelper/RpcHelperUtil.cs | 142 +++++++++++++++++ B3WanFuSaleWebService/Test/Program.cs | 39 +++++ .../Test/Properties/AssemblyInfo.cs | 36 +++++ .../Test/Properties/Settings.Designer.cs | 36 +++++ .../Test/Properties/Settings.settings | 9 ++ B3WanFuSaleWebService/Test/Test.csproj | 106 +++++++++++++ .../Web References/webservice/Reference.cs | 150 ++++++++++++++++++ .../Web References/webservice/Reference.map | 7 + .../Web References/webservice/Service.disco | 6 + .../Web References/webservice/Service.wsdl | 65 ++++++++ B3WanFuSaleWebService/Test/app.config | 15 ++ .../WebFolder/App_Code/Service.cs | 27 ++++ B3WanFuSaleWebService/WebFolder/Service.asmx | 1 + B3WanFuSaleWebService/WebFolder/web.config | 49 ++++++ .../用于B3万福收款单接口.txt | 0 23 files changed, 1123 insertions(+) create mode 100644 B3QingDaoWanFu/Rpc/GatheringRpc.cs create mode 100644 B3WanFuSaleWebService/B3WanFuSaleWebService.sln create mode 100644 B3WanFuSaleWebService/RpcHelper/Gatherings.cs create mode 100644 B3WanFuSaleWebService/RpcHelper/Properties/AssemblyInfo.cs create mode 100644 B3WanFuSaleWebService/RpcHelper/Results.cs create mode 100644 B3WanFuSaleWebService/RpcHelper/RpcHelper.csproj create mode 100644 B3WanFuSaleWebService/RpcHelper/RpcHelperUtil.cs create mode 100644 B3WanFuSaleWebService/Test/Program.cs create mode 100644 B3WanFuSaleWebService/Test/Properties/AssemblyInfo.cs create mode 100644 B3WanFuSaleWebService/Test/Properties/Settings.Designer.cs create mode 100644 B3WanFuSaleWebService/Test/Properties/Settings.settings create mode 100644 B3WanFuSaleWebService/Test/Test.csproj create mode 100644 B3WanFuSaleWebService/Test/Web References/webservice/Reference.cs create mode 100644 B3WanFuSaleWebService/Test/Web References/webservice/Reference.map create mode 100644 B3WanFuSaleWebService/Test/Web References/webservice/Service.disco create mode 100644 B3WanFuSaleWebService/Test/Web References/webservice/Service.wsdl create mode 100644 B3WanFuSaleWebService/Test/app.config create mode 100644 B3WanFuSaleWebService/WebFolder/App_Code/Service.cs create mode 100644 B3WanFuSaleWebService/WebFolder/Service.asmx create mode 100644 B3WanFuSaleWebService/WebFolder/web.config create mode 100644 B3WanFuSaleWebService/用于B3万福收款单接口.txt diff --git a/B3QingDaoWanFu/B3QingDaoWanFu.csproj b/B3QingDaoWanFu/B3QingDaoWanFu.csproj index c02aa21..02da20f 100644 --- a/B3QingDaoWanFu/B3QingDaoWanFu.csproj +++ b/B3QingDaoWanFu/B3QingDaoWanFu.csproj @@ -70,6 +70,10 @@ False ..\..\..\tsref\Debug\B3Sale.dll + + False + ..\..\..\tsref\Debug\b3saleinterface.dll + False D:\BwpB3Project\tsref\Debug\B3UnitedInfos.dll @@ -129,6 +133,7 @@ + diff --git a/B3QingDaoWanFu/Rpc/GatheringRpc.cs b/B3QingDaoWanFu/Rpc/GatheringRpc.cs new file mode 100644 index 0000000..6bb2d9e --- /dev/null +++ b/B3QingDaoWanFu/Rpc/GatheringRpc.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using BWP.B3Frameworks.Utils; +using BWP.B3QingDaoWanFu.Utils; +using BWP.B3Sale.BL; +using BWP.B3Sale.BO; +using Forks.EnterpriseServices.BusinessInterfaces; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.JsonRpc; +using TSingSoft.WebPluginFramework; + +namespace BWP.B3QingDaoWanFu.Rpc +{ + [Rpc] + public static class GatheringRpc + { + [Rpc] + public static long Insert(Gathering dmo) + { + using (var context = new TransactionContext()) + { + var bl = BIFactory.Create(context); + bl.InitNewDmo(dmo); + var dom = new DQueryDom(new JoinAlias(typeof(Customer))); + dom.Columns.Add(DQSelectColumn.Field("AccountCustomer_ID")); + dom.Columns.Add(DQSelectColumn.Field("AccountCustomer_Name")); + dom.Where.Conditions.Add(DQCondition.EQ("OuterCode", dmo.AccountCustomer_OuterCode));// + //找到该客户对应的结账客户 + var info = dom.EExecuteScalar(context.Session); + if (info == null) + throw new ApplicationException(string.Format("没有配置外部编码{0}的对应结账客户", dmo.AccountCustomer_OuterCode)); + dmo.AccountCustomer_ID = info.Item1; + dmo.AccountCustomer_Name = info.Item2; + + SetAccountCustomerInfo(dmo, context.Session); + + var conf = new WanFuOnlineConfig(); + if (conf.AccID.Value == 0) + { + throw new ApplicationException("没有配置会计单位"); + } + if (conf.GatheringAccountID.Value == 0) + { + throw new ApplicationException("没有配置帐户"); + } + if (conf.ReceiptTypeID.Value == 0) + { + throw new ApplicationException("没有配置收款类型"); + } + dmo.AccountingUnit_ID = conf.AccID.Value; + dmo.ReceiptType_ID = conf.ReceiptTypeID.Value; + dmo.GatheringAccount_ID = conf.GatheringAccountID.Value; +// DmoUtil.RefreshDependency(dmo, "AccountingUnit_ID", "ReceiptType_ID", "GatheringAccount_ID"); 这里没有必要执行 + + bl.Insert(dmo); + bl.Check(dmo); + context.Commit(); + } + return dmo.ID; + } + + private static void SetAccountCustomerInfo(Gathering dmo, IDmoSessionWithTransaction session) + { + var dom = new DQueryDom(new JoinAlias(typeof(Customer))); + new Customer().Employee_ID = 1; + dom.Columns.Add(DQSelectColumn.Field("Department_ID")); + dom.Columns.Add(DQSelectColumn.Field("Employee_ID")); + dom.Columns.Add(DQSelectColumn.Field("Department_Name")); + dom.Columns.Add(DQSelectColumn.Field("Employee_Name")); + dom.Where.Conditions.Add(DQCondition.EQ("ID", dmo.AccountCustomer_ID)); + var tuple = EExecuteScalar(dom, session); + if (tuple != null) + { + dmo.Department_ID = tuple.Item1; + dmo.Employee_ID = tuple.Item2; + dmo.Department_Name = tuple.Item3; + dmo.Employee_Name = tuple.Item4; + } + else + { + throw new ApplicationException(string.Format("不存在编号为{0}的客户", dmo.AccountCustomer_OuterCode)); + } + } + + static Tuple EExecuteScalar(DQueryDom query, IDmoSessionWithTransaction session) + { + var list = query.EExecuteList(session); + return list.Count == 0 ? null : list[0]; + } + + } +} diff --git a/B3QingDaoWanFu/Utils/WanFuOnlineConfig.cs b/B3QingDaoWanFu/Utils/WanFuOnlineConfig.cs index b3e9bc8..b59b4e6 100644 --- a/B3QingDaoWanFu/Utils/WanFuOnlineConfig.cs +++ b/B3QingDaoWanFu/Utils/WanFuOnlineConfig.cs @@ -17,5 +17,44 @@ namespace BWP.B3QingDaoWanFu.Utils { ConfigurationUtil.Fill(this); } + + + private IntConfigRef _receiptTypeID = new IntConfigRef(0); + + [LogicName("农行接口收款类型ID")] + [ConfigurationItemGroup("青岛万福")] + [ConfigurationItemDescription("农行接口收款类型ID配置")] + [DomainConfigurationItem] + public IntConfigRef ReceiptTypeID + { + get { return _receiptTypeID; } + set { _receiptTypeID = value; } + } + + + private IntConfigRef _gatheringAccountID = new IntConfigRef(0); + + [LogicName("农行接口帐户ID")] + [ConfigurationItemGroup("青岛万福")] + [ConfigurationItemDescription("农行接口帐户ID配置")] + [DomainConfigurationItem] + public IntConfigRef GatheringAccountID + { + get { return _gatheringAccountID; } + set { _gatheringAccountID = value; } + } + + private IntConfigRef _accID = new IntConfigRef(0); + + [LogicName("农行接口会计单位ID")] + [ConfigurationItemGroup("青岛万福")] + [ConfigurationItemDescription("农行接口会计单位ID配置")] + [DomainConfigurationItem] + public IntConfigRef AccID + { + get { return _accID; } + set { _accID = value; } + } + } } diff --git a/B3WanFuSaleWebService/B3WanFuSaleWebService.sln b/B3WanFuSaleWebService/B3WanFuSaleWebService.sln new file mode 100644 index 0000000..e071736 --- /dev/null +++ b/B3WanFuSaleWebService/B3WanFuSaleWebService.sln @@ -0,0 +1,73 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebFolder", "WebFolder\", "{8506D64E-C6F3-4410-93CF-BF3C9327C95B}" + ProjectSection(WebsiteProperties) = preProject + TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0" + ProjectReferences = "{FE9CD25F-773A-4533-98FD-45D7B08254F2}|RpcHelper.dll;" + Debug.AspNetCompiler.VirtualPath = "/WebFolder" + Debug.AspNetCompiler.PhysicalPath = "WebFolder\" + Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebFolder\" + Debug.AspNetCompiler.Updateable = "true" + Debug.AspNetCompiler.ForceOverwrite = "true" + Debug.AspNetCompiler.FixedNames = "false" + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.VirtualPath = "/WebFolder" + Release.AspNetCompiler.PhysicalPath = "WebFolder\" + Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WebFolder\" + Release.AspNetCompiler.Updateable = "true" + Release.AspNetCompiler.ForceOverwrite = "true" + Release.AspNetCompiler.FixedNames = "false" + Release.AspNetCompiler.Debug = "False" + VWDPort = "3491" + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RpcHelper", "RpcHelper\RpcHelper.csproj", "{FE9CD25F-773A-4533-98FD-45D7B08254F2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test\Test.csproj", "{285FA7AE-A051-41A7-8B32-8B77E11E4E17}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Debug|x86.ActiveCfg = Debug|Any CPU + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Release|Any CPU.Build.0 = Debug|Any CPU + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Release|Mixed Platforms.Build.0 = Debug|Any CPU + {8506D64E-C6F3-4410-93CF-BF3C9327C95B}.Release|x86.ActiveCfg = Debug|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Debug|x86.ActiveCfg = Debug|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Release|Any CPU.Build.0 = Release|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {FE9CD25F-773A-4533-98FD-45D7B08254F2}.Release|x86.ActiveCfg = Release|Any CPU + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Debug|Any CPU.ActiveCfg = Debug|x86 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Debug|x86.ActiveCfg = Debug|x86 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Debug|x86.Build.0 = Debug|x86 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Release|Any CPU.ActiveCfg = Release|x86 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Release|Mixed Platforms.Build.0 = Release|x86 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Release|x86.ActiveCfg = Release|x86 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/B3WanFuSaleWebService/RpcHelper/Gatherings.cs b/B3WanFuSaleWebService/RpcHelper/Gatherings.cs new file mode 100644 index 0000000..3c0c576 --- /dev/null +++ b/B3WanFuSaleWebService/RpcHelper/Gatherings.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace RpcHelper { + [XmlRoot(ElementName = "bills")] + public class Gatherings { + + public Gatherings() { + Bills = new List(); + } + + [XmlElement(ElementName = "bill")] + public List Bills { get; set; } + } + + public class Gathering { + + public Gathering() { + Head = new GatheringHead(); + } + + [XmlElement(ElementName = "header")] + public GatheringHead Head; + + } + + public class GatheringHead { + + private string _requestId = string.Empty; + + [XmlElement(ElementName = "RequestId")] + public string RequestId { + get { return _requestId; } + set { _requestId = value; } + } + + private string _customerCode = string.Empty; + + [XmlElement(ElementName = "CustomerCode")] + public string CustomerCode { + get { return _customerCode; } + set { _customerCode = value; } + } + + private string _time = string.Empty; + [XmlElement(ElementName = "Time")] + public string Time { + get { return _time; } + set { _time = value; } + } + + private string _money = string.Empty; + + [XmlElement(ElementName = "Money")] + public string Money { + get { return _money; } + set { _money = value; } + } + + } +} diff --git a/B3WanFuSaleWebService/RpcHelper/Properties/AssemblyInfo.cs b/B3WanFuSaleWebService/RpcHelper/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f651d34 --- /dev/null +++ b/B3WanFuSaleWebService/RpcHelper/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("RpcHelper")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("RpcHelper")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("a551ac88-8c1f-437e-ba0f-ead89212f71e")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/B3WanFuSaleWebService/RpcHelper/Results.cs b/B3WanFuSaleWebService/RpcHelper/Results.cs new file mode 100644 index 0000000..0624cad --- /dev/null +++ b/B3WanFuSaleWebService/RpcHelper/Results.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Serialization; + +namespace RpcHelper { + [XmlRoot(ElementName = "results")] + public class Results { + public Results() { + SendResult = new List(); + } + + private string _resultcode = string.Empty; + [XmlElement(ElementName = "resultcode")] + public string Resultcode { + get { return _resultcode; } + set { _resultcode = value; } + } + + private string _content = string.Empty; + [XmlElement(ElementName = "content")] + public string Content { + get { return _content; } + set { _content = value; } + } + + [XmlElement(ElementName = "result")] + public List SendResult { get; set; } + } + public class Result { + private string _requestId = string.Empty; + + [XmlElement(ElementName = "RequestId")] + public string RequestId { + get { return _requestId; } + set { _requestId = value; } + } + + + private string _resultcode = string.Empty; + [XmlElement(ElementName = "resultcode")] + public string Resultcode { + get { return _resultcode; } + set { _resultcode = value; } + } + + + private string _bwpid = string.Empty; + [XmlElement(ElementName = "BWPID")] + public string Bwpid { + get { return _bwpid; } + set { _bwpid = value; } + } + + private string _content = string.Empty; + [XmlElement(ElementName = "content")] + public string Content { + get { return _content; } + set { _content = value; } + } + + } +} diff --git a/B3WanFuSaleWebService/RpcHelper/RpcHelper.csproj b/B3WanFuSaleWebService/RpcHelper/RpcHelper.csproj new file mode 100644 index 0000000..7521f77 --- /dev/null +++ b/B3WanFuSaleWebService/RpcHelper/RpcHelper.csproj @@ -0,0 +1,62 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {FE9CD25F-773A-4533-98FD-45D7B08254F2} + Library + Properties + RpcHelper + RpcHelper + v4.0 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\..\Projects\tsref\release\Forks.JsonRpc.Client.dll + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/B3WanFuSaleWebService/RpcHelper/RpcHelperUtil.cs b/B3WanFuSaleWebService/RpcHelper/RpcHelperUtil.cs new file mode 100644 index 0000000..dbfd14d --- /dev/null +++ b/B3WanFuSaleWebService/RpcHelper/RpcHelperUtil.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Xml; +using System.Xml.Serialization; +using Forks.JsonRpc.Client; +using Forks.JsonRpc.Client.Data; + +namespace RpcHelper { + public static class RpcHelperUtil { + private static bool _isInit; + + public static string InsertGathering(string data) { + var logName = DateTime.Today.Date.ToString("yyyyMMdd") + "Gatheringlog.txt"; + var results = new Results(); + var path = System.Web.HttpContext.Current.Request.PhysicalApplicationPath; + string resultStr; + using (var textWriter = new StreamWriter(path + "\\log\\" + logName, true, Encoding.UTF8)) { + textWriter.WriteLine("{0} 收款单接口开始接收数据:------------------------------------", DateTime.Now); + textWriter.WriteLine(data); + Console.WriteLine("{0}:开始接受数据:", DateTime.Now); + Console.WriteLine(data); + try { + var dmo = ParseXmlToMsg(data); + + if (!_isInit) { + var url = System.Configuration.ConfigurationManager.AppSettings["url"]; + RpcFacade.Init(url, "QingDaoWanFuRpc"); + _isInit = true; + } + var username = System.Configuration.ConfigurationManager.AppSettings["username"]; + var strPwd = System.Configuration.ConfigurationManager.AppSettings["pwd"]; + + RpcFacade.Login(username, strPwd); + + foreach (var bill in dmo.Bills) { + var r = new Result(); + r.RequestId = bill.Head.RequestId; + textWriter.WriteLine("开始处理单据:" + r.RequestId); + Console.WriteLine("开始处理单据:" + r.RequestId); + results.SendResult.Add(r); + + var gathering = new RpcObject("/MainSystem/B3Sale/BO/Gathering"); + SetString(gathering, "AccountCustomer_OuterCode", bill.Head.CustomerCode);// 客户的外部编码 + SetDateTime(gathering, "GatheringTime", bill.Head.Time); + SetDecimal(gathering, "GatheringMoney", bill.Head.Money); + + try { + var id = RpcFacade.Call("/MainSystem/B3QingDaoWanFu/Rpc/GatheringRpc/Insert", gathering); + + textWriter.WriteLine("成功创建收款单No." + id); + r.Content = "成功创建收款单No." + id; + + r.Resultcode = "0"; + r.Bwpid = id.ToString(); + } catch (Exception e1) { + r.Resultcode = "1"; + r.Content = "调用错误,原因:" + e1.Message; + textWriter.WriteLine("内部错误:" + e1.Message); + Console.WriteLine("内部错误:" + e1.Message); + } + + } + } catch (Exception e) { + results.Resultcode = "1"; + results.Content = "调用错误,原因:" + e.Message; + textWriter.WriteLine("内部错误:" + e.Message); + Console.WriteLine("内部错误:" + e.Message); + } finally { + RpcFacade.Logout(); + } + + if (results.SendResult.Count > 0 && results.SendResult.All(x => x.Resultcode == "0")) { + results.Resultcode = "0"; + } else { + results.Resultcode = "1"; + } + resultStr = ObjToXml(results, Formatting.Indented, Encoding.GetEncoding("gb2312")); + textWriter.WriteLine("返回报文:" + resultStr); + textWriter.WriteLine("{0} 收款单接口处理完毕 ", DateTime.Now); + } + + return resultStr; + } + + public static string ObjToXml(object obj, Formatting formatting, Encoding encoding) { + using (var stream = new MemoryStream()) { + using (var writer = new XmlTextWriter(stream, encoding)) { + writer.Formatting = formatting; + writer.IndentChar = '\t'; + var ns = new XmlSerializerNamespaces(); + ns.Add(string.Empty, string.Empty); + new XmlSerializer(obj.GetType()).Serialize(writer, obj, ns); + } + return encoding.GetString(stream.ToArray()); + } + } + + public static T ParseXmlToMsg(string xml) { + using (TextReader reader = new StringReader(xml)) { + return (T)new XmlSerializer(typeof(T)).Deserialize(reader); + } + } + private static void SetLong(RpcObject rpcObject, string name, string value) { + if (!string.IsNullOrEmpty(value)) { + rpcObject.Set(name, long.Parse(value)); + } + } + + private static void SetDateTime(RpcObject rpcObject, string name, string value) { + if (!string.IsNullOrEmpty(value)) { + rpcObject.Set(name, Convert.ToDateTime(value)); + } + } + + private static void SetDecimal(RpcObject rpcObject, string name, string value) { + if (!string.IsNullOrEmpty(value)) { + rpcObject.Set(name, decimal.Parse(value)); + } + } + + private static void SetInt(RpcObject rpcObject, string name, string value) { + if (!string.IsNullOrEmpty(value)) { + rpcObject.Set(name, int.Parse(value)); + } + } + + private static void SetShort(RpcObject rpcObject, string name, string value) { + if (!string.IsNullOrEmpty(value)) { + rpcObject.Set(name, short.Parse(value)); + } + } + + private static void SetString(RpcObject rpcObject, string name, string value) { + if (!string.IsNullOrEmpty(value)) { + rpcObject.Set(name, value); + } + } + } +} diff --git a/B3WanFuSaleWebService/Test/Program.cs b/B3WanFuSaleWebService/Test/Program.cs new file mode 100644 index 0000000..1a5b846 --- /dev/null +++ b/B3WanFuSaleWebService/Test/Program.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml; +using RpcHelper; +using Test.webservice; + +namespace Test { + class Program { + static void Main(string[] args) { + var web = new Service(); + var r= InsertPlan(web); + Console.WriteLine(r); + Console.Read(); + } + + private static string InsertPlan(Service web) { + var o = new Gatherings(); + var bill = new Gathering(); + bill.Head.CustomerCode = "0036"; + bill.Head.Time = "2016-04-06 12:00"; + bill.Head.RequestId = "201604061200001"; + bill.Head.Money = "100"; + + o.Bills.Add(bill); + var data = RpcHelperUtil.ObjToXml(o, Formatting.Indented, Encoding.GetEncoding("gb2312")); + + //var xx = RpcHelper.ParseXmlToMsg(data); + + Console.WriteLine(data); + //web.Url = "http://203.86.48.90:81/bwprpc/Service.asmx"; + // web.Url = "http://192.168.1.2/bwprpc/Service.asmx"; + web.Url = "http://localhost:2100/WanFuSale/Service.asmx"; + var xml = web.InsertGathering(data); + return xml; + } + } +} diff --git a/B3WanFuSaleWebService/Test/Properties/AssemblyInfo.cs b/B3WanFuSaleWebService/Test/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5d36497 --- /dev/null +++ b/B3WanFuSaleWebService/Test/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("Test")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("c3e1d6d9-85bb-4fd7-a67a-2d2a2ff83f3b")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/B3WanFuSaleWebService/Test/Properties/Settings.Designer.cs b/B3WanFuSaleWebService/Test/Properties/Settings.Designer.cs new file mode 100644 index 0000000..7d908ae --- /dev/null +++ b/B3WanFuSaleWebService/Test/Properties/Settings.Designer.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18063 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace Test.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)] + [global::System.Configuration.DefaultSettingValueAttribute("http://localhost:2100/WanfuSale/Service.asmx")] + public string Test_webservice_Service { + get { + return ((string)(this["Test_webservice_Service"])); + } + } + } +} diff --git a/B3WanFuSaleWebService/Test/Properties/Settings.settings b/B3WanFuSaleWebService/Test/Properties/Settings.settings new file mode 100644 index 0000000..50da550 --- /dev/null +++ b/B3WanFuSaleWebService/Test/Properties/Settings.settings @@ -0,0 +1,9 @@ + + + + + + http://localhost:2100/WanfuSale/Service.asmx + + + \ No newline at end of file diff --git a/B3WanFuSaleWebService/Test/Test.csproj b/B3WanFuSaleWebService/Test/Test.csproj new file mode 100644 index 0000000..cef923d --- /dev/null +++ b/B3WanFuSaleWebService/Test/Test.csproj @@ -0,0 +1,106 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {285FA7AE-A051-41A7-8B32-8B77E11E4E17} + Exe + Properties + Test + Test + v4.0 + 512 + + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + True + True + Settings.settings + + + True + True + Reference.map + + + + + + + + + + + Dynamic + Web References\webservice\ + http://localhost:2100/WanfuSale/Service.asmx + + + + + Settings + Test_webservice_Service + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + MSDiscoCodeGenerator + Reference.cs + + + + + + + {FE9CD25F-773A-4533-98FD-45D7B08254F2} + RpcHelper + + + + + \ No newline at end of file diff --git a/B3WanFuSaleWebService/Test/Web References/webservice/Reference.cs b/B3WanFuSaleWebService/Test/Web References/webservice/Reference.cs new file mode 100644 index 0000000..6f44a0e --- /dev/null +++ b/B3WanFuSaleWebService/Test/Web References/webservice/Reference.cs @@ -0,0 +1,150 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18063 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +// +// 此源代码是由 Microsoft.VSDesigner 4.0.30319.18063 版自动生成。 +// +#pragma warning disable 1591 + +namespace Test.webservice { + using System; + using System.Web.Services; + using System.Diagnostics; + using System.Web.Services.Protocols; + using System.Xml.Serialization; + using System.ComponentModel; + + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.17929")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Web.Services.WebServiceBindingAttribute(Name="ServiceSoap", Namespace="http://tempuri.org/")] + public partial class Service : System.Web.Services.Protocols.SoapHttpClientProtocol { + + private System.Threading.SendOrPostCallback InsertGatheringOperationCompleted; + + private bool useDefaultCredentialsSetExplicitly; + + /// + public Service() { + this.Url = global::Test.Properties.Settings.Default.Test_webservice_Service; + if ((this.IsLocalFileSystemWebService(this.Url) == true)) { + this.UseDefaultCredentials = true; + this.useDefaultCredentialsSetExplicitly = false; + } + else { + this.useDefaultCredentialsSetExplicitly = true; + } + } + + public new string Url { + get { + return base.Url; + } + set { + if ((((this.IsLocalFileSystemWebService(base.Url) == true) + && (this.useDefaultCredentialsSetExplicitly == false)) + && (this.IsLocalFileSystemWebService(value) == false))) { + base.UseDefaultCredentials = false; + } + base.Url = value; + } + } + + public new bool UseDefaultCredentials { + get { + return base.UseDefaultCredentials; + } + set { + base.UseDefaultCredentials = value; + this.useDefaultCredentialsSetExplicitly = true; + } + } + + /// + public event InsertGatheringCompletedEventHandler InsertGatheringCompleted; + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/InsertGathering", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public string InsertGathering(string data) { + object[] results = this.Invoke("InsertGathering", new object[] { + data}); + return ((string)(results[0])); + } + + /// + public void InsertGatheringAsync(string data) { + this.InsertGatheringAsync(data, null); + } + + /// + public void InsertGatheringAsync(string data, object userState) { + if ((this.InsertGatheringOperationCompleted == null)) { + this.InsertGatheringOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInsertGatheringOperationCompleted); + } + this.InvokeAsync("InsertGathering", new object[] { + data}, this.InsertGatheringOperationCompleted, userState); + } + + private void OnInsertGatheringOperationCompleted(object arg) { + if ((this.InsertGatheringCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.InsertGatheringCompleted(this, new InsertGatheringCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + public new void CancelAsync(object userState) { + base.CancelAsync(userState); + } + + private bool IsLocalFileSystemWebService(string url) { + if (((url == null) + || (url == string.Empty))) { + return false; + } + System.Uri wsUri = new System.Uri(url); + if (((wsUri.Port >= 1024) + && (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) { + return true; + } + return false; + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.17929")] + public delegate void InsertGatheringCompletedEventHandler(object sender, InsertGatheringCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "4.0.30319.17929")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class InsertGatheringCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal InsertGatheringCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public string Result { + get { + this.RaiseExceptionIfNecessary(); + return ((string)(this.results[0])); + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/B3WanFuSaleWebService/Test/Web References/webservice/Reference.map b/B3WanFuSaleWebService/Test/Web References/webservice/Reference.map new file mode 100644 index 0000000..52afd46 --- /dev/null +++ b/B3WanFuSaleWebService/Test/Web References/webservice/Reference.map @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/B3WanFuSaleWebService/Test/Web References/webservice/Service.disco b/B3WanFuSaleWebService/Test/Web References/webservice/Service.disco new file mode 100644 index 0000000..d4f141b --- /dev/null +++ b/B3WanFuSaleWebService/Test/Web References/webservice/Service.disco @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/B3WanFuSaleWebService/Test/Web References/webservice/Service.wsdl b/B3WanFuSaleWebService/Test/Web References/webservice/Service.wsdl new file mode 100644 index 0000000..6dde072 --- /dev/null +++ b/B3WanFuSaleWebService/Test/Web References/webservice/Service.wsdl @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/B3WanFuSaleWebService/Test/app.config b/B3WanFuSaleWebService/Test/app.config new file mode 100644 index 0000000..312ba6b --- /dev/null +++ b/B3WanFuSaleWebService/Test/app.config @@ -0,0 +1,15 @@ + + + + +
+ + + + + + http://localhost:2100/WanfuSale/Service.asmx + + + + diff --git a/B3WanFuSaleWebService/WebFolder/App_Code/Service.cs b/B3WanFuSaleWebService/WebFolder/App_Code/Service.cs new file mode 100644 index 0000000..3c46056 --- /dev/null +++ b/B3WanFuSaleWebService/WebFolder/App_Code/Service.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Services; +using RpcHelper; + +[WebService(Namespace = "http://tempuri.org/")] +[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] +// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 +// [System.Web.Script.Services.ScriptService] + +public class Service : System.Web.Services.WebService +{ + public Service () { + + //如果使用设计的组件,请取消注释以下行 + //InitializeComponent(); + } + + [WebMethod] + public string InsertGathering(string data) { + var result = RpcHelperUtil.InsertGathering(data); + return result; + } + +} \ No newline at end of file diff --git a/B3WanFuSaleWebService/WebFolder/Service.asmx b/B3WanFuSaleWebService/WebFolder/Service.asmx new file mode 100644 index 0000000..c3817fb --- /dev/null +++ b/B3WanFuSaleWebService/WebFolder/Service.asmx @@ -0,0 +1 @@ +<%@ WebService Language="C#" CodeBehind="~/App_Code/Service.cs" Class="Service" %> diff --git a/B3WanFuSaleWebService/WebFolder/web.config b/B3WanFuSaleWebService/WebFolder/web.config new file mode 100644 index 0000000..8644379 --- /dev/null +++ b/B3WanFuSaleWebService/WebFolder/web.config @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/B3WanFuSaleWebService/用于B3万福收款单接口.txt b/B3WanFuSaleWebService/用于B3万福收款单接口.txt new file mode 100644 index 0000000..e69de29