From 22213af18fd27e7efb449afc30b47bacc712821b Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Wed, 25 Oct 2023 15:31:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5erp=E7=9A=84=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/Controllers/TestController.cs | 35 + src/WMS.Web.Api/WMS.Web.Api.csproj | 5 + src/WMS.Web.Api/appsettings.json | 6 + src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 156 +++ src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 48 + .../ERP/ConnectedService.json | 85 ++ .../Connected Services/ERP/Reference.cs | 1241 +++++++++++++++++ src/WMS.Web.Core/Dto/Erp/ErpBillQueryDto.cs | 30 + .../Dto/Erp/ErpBillQueryParamDto.cs | 48 + .../Purchase/ErpPurchaseInStockResultDto.cs | 24 + src/WMS.Web.Core/WMS.Web.Core.csproj | 4 + .../IService/Public/IErpService.cs | 18 + src/WMS.Web.Domain/Options/ErpOptions.cs | 32 + .../Services/Public/ErpService.cs | 89 ++ src/WMS.Web.Domain/Values/ResultCodes.cs | 3 + .../DependencyInjection/AppBuilder.cs | 3 + 16 files changed, 1827 insertions(+) create mode 100644 src/WMS.Web.Api/Controllers/TestController.cs create mode 100644 src/WMS.Web.Core/Connected Services/ERP/ConnectedService.json create mode 100644 src/WMS.Web.Core/Connected Services/ERP/Reference.cs create mode 100644 src/WMS.Web.Core/Dto/Erp/ErpBillQueryDto.cs create mode 100644 src/WMS.Web.Core/Dto/Erp/ErpBillQueryParamDto.cs create mode 100644 src/WMS.Web.Core/Dto/Erp/Purchase/ErpPurchaseInStockResultDto.cs create mode 100644 src/WMS.Web.Domain/IService/Public/IErpService.cs create mode 100644 src/WMS.Web.Domain/Options/ErpOptions.cs create mode 100644 src/WMS.Web.Domain/Services/Public/ErpService.cs diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs new file mode 100644 index 00000000..8406d995 --- /dev/null +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -0,0 +1,35 @@ + +using ERP; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.ServiceModel; +using System.Threading.Tasks; +using WMS.Web.Domain.IService.Public; + +namespace WMS.Web.Api.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class TestController : ControllerBase + { + private readonly IErpService _erpService; + public TestController(IErpService erpService) + { + this._erpService = erpService; + } + + [HttpGet] + [Route("hj")] + public async Task TestHJ() + { + var result= await this._erpService.BillQueryForPurchaseInStock(); + if (!result.IsSuccess) + return ""; + return JsonConvert.SerializeObject(result.Data); + } + } +} diff --git a/src/WMS.Web.Api/WMS.Web.Api.csproj b/src/WMS.Web.Api/WMS.Web.Api.csproj index 735f81ce..e73fb24c 100644 --- a/src/WMS.Web.Api/WMS.Web.Api.csproj +++ b/src/WMS.Web.Api/WMS.Web.Api.csproj @@ -18,9 +18,14 @@ + + + + + diff --git a/src/WMS.Web.Api/appsettings.json b/src/WMS.Web.Api/appsettings.json index afb7f2b9..525e0e8f 100644 --- a/src/WMS.Web.Api/appsettings.json +++ b/src/WMS.Web.Api/appsettings.json @@ -34,6 +34,12 @@ "PublicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsaVH9M7ooPlO1SwKy0MQImmJTid8aeBjQ99FED+WPwRlktAMtHiaTqlqmkeYhJT6XC5P72vqDDGfXOVr9s4BHuQsSGyzx7ChABmANMlsxy6xtI4II9gV5qAciZdviEDFCOD69C/ZJACX+36N0EjiricuYr/6KNMgDo1tXVUvTzgQEJTym6mZXl2Hs5HbERjEM5SNqBJW+iO+07twROG3sKvNCYBmB1XLsHQ99EbyvBQ1P2w/NqHXjtDSxy3sFhpFtxpgHSNe8eHJcFmPfj+Q6JUi4wEWmZUOjsLDhev6aaN7whQZfgdsPN3M8MMsVGpo3V+coWivprsCpzUIIUTLCQIDAQAB", "PrivateKey": "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCxpUf0zuig+U7VLArLQxAiaYlOJ3xp4GND30UQP5Y/BGWS0Ay0eJpOqWqaR5iElPpcLk/va+oMMZ9c5Wv2zgEe5CxIbLPHsKEAGYA0yWzHLrG0jggj2BXmoByJl2+IQMUI4Pr0L9kkAJf7fo3QSOKuJy5iv/oo0yAOjW1dVS9POBAQlPKbqZleXYezkdsRGMQzlI2oElb6I77Tu3BE4bewq80JgGYHVcuwdD30RvK8FDU/bD82odeO0NLHLewWGkW3GmAdI17x4clwWY9+P5DolSLjARaZlQ6OwsOF6/ppo3vCFBl+B2w83czwwyxUamjdX5yhaK+muwKnNQghRMsJAgMBAAECggEAG2NYDK45v1ewh70ajOvx+Nw8hwgfblNh+nzZsP+csmqDHndk/g35/FayUMbpBMfTMZMST99bXjXoU/IrCwoHsjOLgD8CGK9qoxFLatgDJVJVo3iiWKRf/AaDX9MxJtiViCDnj+4wlBRjWirQwmP6Ts9Ln33pm5GxR40WZ2VSveutCkXWW16MmcT0gKHtEGoREoj+DYCziXaKpvFz+14p0u7wyCUsIEM0qxuGftjOkSGz0RhT6QfwY3TLKPD3C2N2slx3zdNEyFZNPSaugqEkZdUb2ZRGefIopmduo4eoeBce1d3HkyCeyOhmVBt0OBg5KXTey7FR7TDYpOJPFv/ZYQKBgQDRtQQfARg8fVouPPHlwBd90hMTaocmtp7gmIPRvNJgrXMEHU9SJuLifzml6gwX+3i2ltxenKOCHkUzA+rK7/iaUNcjTe2gRxJaLDoDRoLVc6M5Y4Mah3XkDpbYtQ4dJ4FZWxqZLwjeLikmcbPks1CqGFjFKyVwdqSLITvNC7AVZwKBgQDY3GeqBXcDe9SSRzwW52yp/R70TJMRMnCyg3lriJ0XvrFK3xGNWrBngxyODEZFUbphmkTBJlyMsEMYbAAJ7ofGAdmUhFa3rzD9q81dXNazk+suPmzBIepme7XSnthKUCEl7KJokhSZknnjmFncuIASpD2P5b2HyhA9ALrnVt/mDwKBgG1evxt8cqt5pQLgfjiZCqdwXMqPkJU8QXhZksZceEw7qfTHZIswBLykJejGPDB10utHmv8tKom+R9Dnhhj5Nuskpk+fYQNqjcPBtS/oImw4tzRDFilL5MxgX4P+SbIi3G9B+IlT4ogeAxAt1Oi+LJ/JuuJ6MjiJaB+34Xx7UAaZAoGATLgEkHiodvoK5MkAsBWlMqoSlli0uqO+jNjITsugz7KtpBAwdHJ979DJfFNJVOKp7jeWVUKOAVOmGPC0Ps89B0bGQ61hxE/dJBDwcTQT3KnazJxW+yhVdXYUh/OcDwY0A+eoORhc40uXhXXzbIt0+6NRCCQ9ndlVT09/z7HDOe8CgYBgDTUR7gwpWarWgD3eNcdmzvQCm/NAMVabUPnNu+79490vFJPUwXssjoN3W6q4VcPejaoEsOxbM5IoW5reDkybEoyPXu5EmLNMOa4XRklJAUmuDA2ASy6hlXB0bGfnmF9U+DFyYF6LR+YEVKnBL4IvZt/Fq6ni9/E+ReaZvQLX5w==" }, + "ErpOptions": { + "EndpointAddress": "http://119.23.206.129/k3cloud/ERPGW.asmx", + "UserName": "mes", + "Password": "A1B2C3Dh.", + "ErpId": "ce20210909" + }, "Qiniu": { "AccessKey": "dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms", "SecretKey": "KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q", diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 618d19e7..51b40c53 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -4,6 +4,162 @@ WMS.Web.Core + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERP:单据查询-dto + + + + + 令牌 + + + + + 参数 + + + + + ERP:单据查询-参数-dto + + + + + 业务对象表单Id(必录) + + + + + 需查询的字段key集合,字符串类型,格式:"key1,key2,..."(必录) 注(查询单据体内码,需加单据体Key和下划线,如:FEntryKey_FEntryId) + + + + + 过滤条件,数组类型,如:[{"Left":"(","FieldName":"Field1","Compare":"=","Value":"111","Right":")","Logic":"AND"},{"Left":"(","FieldName":"Field2","Compare":"=","Value":"222","Right":")","Logic":""}] + + + + + 排序字段,字符串类型(非必录) + + + + + 返回总行数,整型(非必录) + + + + + 开始行索引,整型(非必录) + + + + + 最大行数,整型,不能超过10000(非必录) + + + + + 表单所在的子系统内码,字符串类型(非必录) + + + + + erp-采购入库-返回数据源 + + + + + 单据编号 + + + + + 物料规格信号 + + 授权token -- 给前端用的验证token diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 424ad6fc..faa01097 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -4,6 +4,12 @@ WMS.Web.Domain + + + erp:单据查询-采购入库单 + + + 登录服务接口 @@ -236,6 +242,31 @@ 是否允许缓存 + + + erp相关配置文件 + + + + + erp-请求地址 + + + + + 账号 + + + + + 密码 + + + + + erp-Id + + 单点系统地址 @@ -266,6 +297,23 @@ 私钥 + + + erp数据交互服务 + + + + + 初始化ERP:登录到ERP + + + + + + erp:单据查询-采购入库单 + + + Get方法 diff --git a/src/WMS.Web.Core/Connected Services/ERP/ConnectedService.json b/src/WMS.Web.Core/Connected Services/ERP/ConnectedService.json new file mode 100644 index 00000000..8df1119e --- /dev/null +++ b/src/WMS.Web.Core/Connected Services/ERP/ConnectedService.json @@ -0,0 +1,85 @@ +{ + "ExtendedData": { + "inputs": [ + "http://119.23.206.129/K3cloud/erpgw.asmx?WSDL" + ], + "collectionTypes": [ + "System.Array", + "System.Collections.Generic.Dictionary`2" + ], + "namespaceMappings": [ + "*, ERP" + ], + "references": [ + "BouncyCastle.Crypto, {BouncyCastle.NetCore, 1.8.5}", + "Google.Protobuf, {Google.Protobuf, 3.19.4}", + "ICSharpCode.SharpZipLib, {SharpZipLib, 1.2.0}", + "K4os.Compression.LZ4, {K4os.Compression.LZ4, 1.2.6}", + "K4os.Compression.LZ4.Streams, {K4os.Compression.LZ4.Streams, 1.2.6}", + "K4os.Hash.xxHash, {K4os.Hash.xxHash, 1.0.6}", + "Microsoft.EntityFrameworkCore, {Microsoft.EntityFrameworkCore, 5.0.10}", + "Microsoft.EntityFrameworkCore.Abstractions, {Microsoft.EntityFrameworkCore.Abstractions, 5.0.10}", + "Microsoft.EntityFrameworkCore.Relational, {Microsoft.EntityFrameworkCore.Relational, 5.0.10}", + "Microsoft.Extensions.Caching.Abstractions, {Microsoft.Extensions.Caching.Abstractions, 6.0.0}", + "Microsoft.Extensions.Caching.Memory, {Microsoft.Extensions.Caching.Memory, 6.0.1}", + "Microsoft.Extensions.Configuration.Abstractions, {Microsoft.Extensions.Configuration.Abstractions, 6.0.0}", + "Microsoft.Extensions.DependencyInjection, {Microsoft.Extensions.DependencyInjection, 5.0.2}", + "Microsoft.Extensions.DependencyInjection.Abstractions, {Microsoft.Extensions.DependencyInjection.Abstractions, 6.0.0}", + "Microsoft.Extensions.Diagnostics.HealthChecks, {Microsoft.Extensions.Diagnostics.HealthChecks, 2.2.0}", + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions, {Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions, 2.2.0}", + "Microsoft.Extensions.FileProviders.Abstractions, {Microsoft.Extensions.FileProviders.Abstractions, 2.2.0}", + "Microsoft.Extensions.Hosting.Abstractions, {Microsoft.Extensions.Hosting.Abstractions, 2.2.0}", + "Microsoft.Extensions.Logging, {Microsoft.Extensions.Logging, 5.0.0}", + "Microsoft.Extensions.Logging.Abstractions, {Microsoft.Extensions.Logging.Abstractions, 6.0.0}", + "Microsoft.Extensions.Options, {Microsoft.Extensions.Options, 6.0.0}", + "Microsoft.Extensions.Primitives, {Microsoft.Extensions.Primitives, 6.0.0}", + "Microsoft.IdentityModel.Logging, {Microsoft.IdentityModel.Logging, 5.5.0}", + "Microsoft.IdentityModel.Tokens, {Microsoft.IdentityModel.Tokens, 5.5.0}", + "MySql.Data, {MySql.Data, 8.0.29}", + "MySqlConnector, {MySqlConnector, 1.3.13}", + "Newtonsoft.Json, {Newtonsoft.Json, 13.0.1}", + "NPinyin.Core, {NPinyin.Core, 3.0.0}", + "NPOI, {NPOI, 2.5.1}", + "Npoi.Mapper, {Npoi.Mapper, 3.5.1}", + "NPOI.OOXML, {NPOI, 2.5.1}", + "NPOI.OpenXml4Net, {NPOI, 2.5.1}", + "NPOI.OpenXmlFormats, {NPOI, 2.5.1}", + "PinYinConverterCore, {PinYinConverterCore, 1.0.2}", + "Pipelines.Sockets.Unofficial, {Pipelines.Sockets.Unofficial, 2.2.0}", + "Pomelo.EntityFrameworkCore.MySql, {Pomelo.EntityFrameworkCore.MySql, 5.0.2}", + "Quartz, {Quartz, 3.4.0}", + "Quartz.AspNetCore, {Quartz.AspNetCore, 3.4.0}", + "Quartz.Extensions.DependencyInjection, {Quartz.Extensions.DependencyInjection, 3.4.0}", + "Quartz.Extensions.Hosting, {Quartz.Extensions.Hosting, 3.4.0}", + "Quartz.Serialization.Json, {Quartz.Serialization.Json, 3.4.0}", + "StackExchange.Redis, {StackExchange.Redis, 2.2.79}", + "System.Collections.Immutable, {System.Collections.Immutable, 5.0.0}", + "System.ComponentModel.Annotations, {System.ComponentModel.Annotations, 5.0.0}", + "System.Configuration.ConfigurationManager, {System.Configuration.ConfigurationManager, 5.0.0}", + "System.Diagnostics.DiagnosticSource, {System.Diagnostics.DiagnosticSource, 5.0.1}", + "System.Diagnostics.PerformanceCounter, {System.Diagnostics.PerformanceCounter, 5.0.0}", + "System.Drawing.Common, {System.Drawing.Common, 5.0.0}", + "System.IO, {System.IO, 4.3.0}", + "System.IO.Pipelines, {System.IO.Pipelines, 5.0.0}", + "System.Json, {System.Json, 4.7.1}", + "System.Reflection, {System.Reflection, 4.3.0}", + "System.Reflection.Emit, {System.Reflection.Emit, 4.3.0}", + "System.Reflection.Emit.ILGeneration, {System.Reflection.Emit.ILGeneration, 4.3.0}", + "System.Reflection.Primitives, {System.Reflection.Primitives, 4.3.0}", + "System.Runtime, {System.Runtime, 4.3.0}", + "System.Runtime.CompilerServices.Unsafe, {System.Runtime.CompilerServices.Unsafe, 6.0.0}", + "System.Security.AccessControl, {System.Security.AccessControl, 5.0.0}", + "System.Security.Cryptography.Cng, {System.Security.Cryptography.Cng, 4.5.0}", + "System.Security.Permissions, {System.Security.Permissions, 5.0.0}", + "System.Security.Principal.Windows, {System.Security.Principal.Windows, 5.0.0}", + "System.Text.Encoding, {System.Text.Encoding, 4.3.0}", + "System.Text.Encoding.CodePages, {System.Text.Encoding.CodePages, 4.4.0}", + "System.Threading.Tasks, {System.Threading.Tasks, 4.3.0}", + "System.Windows.Extensions, {System.Windows.Extensions, 5.0.0}", + "Ubiety.Dns.Core, {MySql.Data, 8.0.29}", + "ZstdNet, {MySql.Data, 8.0.29}" + ], + "targetFramework": "netcoreapp3.1", + "typeReuseMode": "All" + } +} \ No newline at end of file diff --git a/src/WMS.Web.Core/Connected Services/ERP/Reference.cs b/src/WMS.Web.Core/Connected Services/ERP/Reference.cs new file mode 100644 index 00000000..ab5011c6 --- /dev/null +++ b/src/WMS.Web.Core/Connected Services/ERP/Reference.cs @@ -0,0 +1,1241 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,并在以下条件下丢失: +// 代码重新生成。 +// +//------------------------------------------------------------------------------ + +namespace ERP +{ + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3-preview3.21351.2")] + [System.ServiceModel.ServiceContractAttribute(ConfigurationName="ERP.ERPGWSoap")] + public interface ERPGWSoap + { + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Draft", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task DraftAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Save", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SaveAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Submit", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SubmitAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Audit", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task AuditAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ExecuteBillQuery", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task ExecuteBillQueryAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Push", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task PushAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ExecuteOperation", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task ExecuteOperationAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/UnAudit", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task UnAuditAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Delete", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task DeleteAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/BatchSave", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task BatchSaveAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/WorkflowAudit", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task WorkflowAuditAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CancelAssign", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CancelAssignAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Allocate", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task AllocateAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CancelAllocate", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CancelAllocateAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/GroupSave", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task GroupSaveAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/QueryGroupInfo", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task QueryGroupInfoAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/GroupDelete", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task GroupDeleteAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SaveMaterial", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SaveMaterialAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/WebApiSale", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task WebApiSaleAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/AR_receivableY", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task AR_receivableYAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SelMaterial", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SelMaterialAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SetJdture", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SetJdtureAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Selects", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SelectsAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/K3Client", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task K3ClientAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CkZck", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CkZckAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SerBom", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SerBomAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OricoYG", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task OricoYGAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OricoBM", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task OricoBMAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OricoWLFZ", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task OricoWLFZAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IdOricoWLFZ", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task IdOricoWLFZAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OricoGYS", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task OricoGYSAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Dw", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task DwAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Sktj", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SktjAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Fktj", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task FktjAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Jsfs", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task JsfsAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Jsbb", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task JsbbAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/HL", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task HLAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SL", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SLAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateVoucher", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CreateVoucherAsync(ERP.VoucherInfo[] param); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreatePo_InStock", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CreatePo_InStockAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateStockSearch", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CreateStockSearchAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateSale", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CreateSaleAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateShopSale", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CreateShopSaleAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateSaleMerge", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CreateSaleMergeAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/CreateSaleShopFH", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task CreateSaleShopFHAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/REQUIREMENTORDER", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task REQUIREMENTORDERAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Zzjxqd115", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task Zzjxqd115Async(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/PoBill", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task PoBillAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SaleLock", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SaleLockAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Outsource", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task OutsourceAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/SaleReturn", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task SaleReturnAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Misdelivery", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task MisdeliveryAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/StockCountLoss", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task StockCountLossAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/StockCountGain", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task StockCountGainAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OtherRecAble", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task OtherRecAbleAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/OUTSTOCK", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task OUTSTOCKAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Purchase_Rk", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task Purchase_RkAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/PRD_MO_Rk", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task PRD_MO_RkAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/生产订单创建", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task 生产订单创建Async(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/PUR_MRB", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task PUR_MRBAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Pro_s", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task Pro_sAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Otsc_s", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task Otsc_sAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/MesFh_Rk", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task MesFh_RkAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/MesSavaTransferDirect", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task MesSavaTransferDirectAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/MesPd", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task MesPdAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Miscellaneous", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task MiscellaneousAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/LLDel", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task LLDelAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/MesFbsdb", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task MesFbsdbAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/STK_InStock", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task STK_InStockAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/K3Del", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task K3DelAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/K3Lock", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task K3LockAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/RETURNNOTICE", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task RETURNNOTICEAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/K3ProDel", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task K3ProDelAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/Ops_STK_InStock", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task Ops_STK_InStockAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/AP_Payable", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task AP_PayableAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/AR_receivable", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task AR_receivableAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/JstPd", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task JstPdAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/APPAYBILL", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task APPAYBILLAsync(string json); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ValidateSystem", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task ValidateSystemAsync(string userName, string pwd, string ERPid, string id); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ValidateToken", ReplyAction="*")] + [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)] + System.Threading.Tasks.Task ValidateTokenAsync(string token); + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3-preview3.21351.2")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")] + public partial class VoucherInfo + { + + private string aCCESSTOKENField; + + private string fVOUCHERBILLField; + + private string fACCOUNTBOOKIDField; + + private string fACCBOOKORGIDField; + + private System.DateTime fDATEField; + + private string fVOUCHERGROUPIDField; + + private string fATTACHMENTSField; + + private string fVOUCHERGROUPNOField; + + private credentialDetail[] vOUCHERDETAILSField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=0)] + public string ACCESSTOKEN + { + get + { + return this.aCCESSTOKENField; + } + set + { + this.aCCESSTOKENField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=1)] + public string FVOUCHERBILL + { + get + { + return this.fVOUCHERBILLField; + } + set + { + this.fVOUCHERBILLField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=2)] + public string FACCOUNTBOOKID + { + get + { + return this.fACCOUNTBOOKIDField; + } + set + { + this.fACCOUNTBOOKIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=3)] + public string FACCBOOKORGID + { + get + { + return this.fACCBOOKORGIDField; + } + set + { + this.fACCBOOKORGIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=4)] + public System.DateTime FDATE + { + get + { + return this.fDATEField; + } + set + { + this.fDATEField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=5)] + public string FVOUCHERGROUPID + { + get + { + return this.fVOUCHERGROUPIDField; + } + set + { + this.fVOUCHERGROUPIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=6)] + public string FATTACHMENTS + { + get + { + return this.fATTACHMENTSField; + } + set + { + this.fATTACHMENTSField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=7)] + public string FVOUCHERGROUPNO + { + get + { + return this.fVOUCHERGROUPNOField; + } + set + { + this.fVOUCHERGROUPNOField = value; + } + } + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order=8)] + public credentialDetail[] VOUCHERDETAILS + { + get + { + return this.vOUCHERDETAILSField; + } + set + { + this.vOUCHERDETAILSField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3-preview3.21351.2")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")] + public partial class credentialDetail + { + + private string fEXPLANATIONField; + + private string fSubordinateUnitField; + + private string fBankAccountField; + + private string fACCOUNTIDField; + + private double fDEBITField; + + private double fCREDITField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=0)] + public string FEXPLANATION + { + get + { + return this.fEXPLANATIONField; + } + set + { + this.fEXPLANATIONField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=1)] + public string FSubordinateUnit + { + get + { + return this.fSubordinateUnitField; + } + set + { + this.fSubordinateUnitField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=2)] + public string FBankAccount + { + get + { + return this.fBankAccountField; + } + set + { + this.fBankAccountField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=3)] + public string FACCOUNTID + { + get + { + return this.fACCOUNTIDField; + } + set + { + this.fACCOUNTIDField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=4)] + public double FDEBIT + { + get + { + return this.fDEBITField; + } + set + { + this.fDEBITField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=5)] + public double FCREDIT + { + get + { + return this.fCREDITField; + } + set + { + this.fCREDITField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3-preview3.21351.2")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")] + public partial class AccessResulDetail + { + + private string codeField; + + private string messageField; + + private string billNOField; + + private string yidField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=0)] + public string Code + { + get + { + return this.codeField; + } + set + { + this.codeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=1)] + public string Message + { + get + { + return this.messageField; + } + set + { + this.messageField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=2)] + public string BillNO + { + get + { + return this.billNOField; + } + set + { + this.billNOField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=3)] + public string Yid + { + get + { + return this.yidField; + } + set + { + this.yidField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3-preview3.21351.2")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")] + public partial class AccessResult + { + + private string codeField; + + private string messageField; + + private AccessResulDetail[] detailsField; + + private string accessTokenField; + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=0)] + public string Code + { + get + { + return this.codeField; + } + set + { + this.codeField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=1)] + public string Message + { + get + { + return this.messageField; + } + set + { + this.messageField = value; + } + } + + /// + [System.Xml.Serialization.XmlArrayAttribute(Order=2)] + public AccessResulDetail[] Details + { + get + { + return this.detailsField; + } + set + { + this.detailsField = value; + } + } + + /// + [System.Xml.Serialization.XmlElementAttribute(Order=3)] + public string AccessToken + { + get + { + return this.accessTokenField; + } + set + { + this.accessTokenField = value; + } + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3-preview3.21351.2")] + public interface ERPGWSoapChannel : ERP.ERPGWSoap, System.ServiceModel.IClientChannel + { + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3-preview3.21351.2")] + public partial class ERPGWSoapClient : System.ServiceModel.ClientBase, ERP.ERPGWSoap + { + + /// + /// 实现此分部方法,配置服务终结点。 + /// + /// 要配置的终结点 + /// 客户端凭据 + static partial void ConfigureEndpoint(System.ServiceModel.Description.ServiceEndpoint serviceEndpoint, System.ServiceModel.Description.ClientCredentials clientCredentials); + + public ERPGWSoapClient(EndpointConfiguration endpointConfiguration) : + base(ERPGWSoapClient.GetBindingForEndpoint(endpointConfiguration), ERPGWSoapClient.GetEndpointAddress(endpointConfiguration)) + { + this.Endpoint.Name = endpointConfiguration.ToString(); + ConfigureEndpoint(this.Endpoint, this.ClientCredentials); + } + + public ERPGWSoapClient(EndpointConfiguration endpointConfiguration, string remoteAddress) : + base(ERPGWSoapClient.GetBindingForEndpoint(endpointConfiguration), new System.ServiceModel.EndpointAddress(remoteAddress)) + { + this.Endpoint.Name = endpointConfiguration.ToString(); + ConfigureEndpoint(this.Endpoint, this.ClientCredentials); + } + + public ERPGWSoapClient(EndpointConfiguration endpointConfiguration, System.ServiceModel.EndpointAddress remoteAddress) : + base(ERPGWSoapClient.GetBindingForEndpoint(endpointConfiguration), remoteAddress) + { + this.Endpoint.Name = endpointConfiguration.ToString(); + ConfigureEndpoint(this.Endpoint, this.ClientCredentials); + } + + public ERPGWSoapClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : + base(binding, remoteAddress) + { + } + + public System.Threading.Tasks.Task DraftAsync(string json) + { + return base.Channel.DraftAsync(json); + } + + public System.Threading.Tasks.Task SaveAsync(string json) + { + return base.Channel.SaveAsync(json); + } + + public System.Threading.Tasks.Task SubmitAsync(string json) + { + return base.Channel.SubmitAsync(json); + } + + public System.Threading.Tasks.Task AuditAsync(string json) + { + return base.Channel.AuditAsync(json); + } + + public System.Threading.Tasks.Task ExecuteBillQueryAsync(string json) + { + return base.Channel.ExecuteBillQueryAsync(json); + } + + public System.Threading.Tasks.Task PushAsync(string json) + { + return base.Channel.PushAsync(json); + } + + public System.Threading.Tasks.Task ExecuteOperationAsync(string json) + { + return base.Channel.ExecuteOperationAsync(json); + } + + public System.Threading.Tasks.Task UnAuditAsync(string json) + { + return base.Channel.UnAuditAsync(json); + } + + public System.Threading.Tasks.Task DeleteAsync(string json) + { + return base.Channel.DeleteAsync(json); + } + + public System.Threading.Tasks.Task BatchSaveAsync(string json) + { + return base.Channel.BatchSaveAsync(json); + } + + public System.Threading.Tasks.Task WorkflowAuditAsync(string json) + { + return base.Channel.WorkflowAuditAsync(json); + } + + public System.Threading.Tasks.Task CancelAssignAsync(string json) + { + return base.Channel.CancelAssignAsync(json); + } + + public System.Threading.Tasks.Task AllocateAsync(string json) + { + return base.Channel.AllocateAsync(json); + } + + public System.Threading.Tasks.Task CancelAllocateAsync(string json) + { + return base.Channel.CancelAllocateAsync(json); + } + + public System.Threading.Tasks.Task GroupSaveAsync(string json) + { + return base.Channel.GroupSaveAsync(json); + } + + public System.Threading.Tasks.Task QueryGroupInfoAsync(string json) + { + return base.Channel.QueryGroupInfoAsync(json); + } + + public System.Threading.Tasks.Task GroupDeleteAsync(string json) + { + return base.Channel.GroupDeleteAsync(json); + } + + public System.Threading.Tasks.Task SaveMaterialAsync(string json) + { + return base.Channel.SaveMaterialAsync(json); + } + + public System.Threading.Tasks.Task WebApiSaleAsync(string json) + { + return base.Channel.WebApiSaleAsync(json); + } + + public System.Threading.Tasks.Task AR_receivableYAsync(string json) + { + return base.Channel.AR_receivableYAsync(json); + } + + public System.Threading.Tasks.Task SelMaterialAsync(string json) + { + return base.Channel.SelMaterialAsync(json); + } + + public System.Threading.Tasks.Task SetJdtureAsync(string json) + { + return base.Channel.SetJdtureAsync(json); + } + + public System.Threading.Tasks.Task SelectsAsync(string json) + { + return base.Channel.SelectsAsync(json); + } + + public System.Threading.Tasks.Task K3ClientAsync(string json) + { + return base.Channel.K3ClientAsync(json); + } + + public System.Threading.Tasks.Task CkZckAsync(string json) + { + return base.Channel.CkZckAsync(json); + } + + public System.Threading.Tasks.Task SerBomAsync(string json) + { + return base.Channel.SerBomAsync(json); + } + + public System.Threading.Tasks.Task OricoYGAsync(string json) + { + return base.Channel.OricoYGAsync(json); + } + + public System.Threading.Tasks.Task OricoBMAsync(string json) + { + return base.Channel.OricoBMAsync(json); + } + + public System.Threading.Tasks.Task OricoWLFZAsync(string json) + { + return base.Channel.OricoWLFZAsync(json); + } + + public System.Threading.Tasks.Task IdOricoWLFZAsync(string json) + { + return base.Channel.IdOricoWLFZAsync(json); + } + + public System.Threading.Tasks.Task OricoGYSAsync(string json) + { + return base.Channel.OricoGYSAsync(json); + } + + public System.Threading.Tasks.Task DwAsync(string json) + { + return base.Channel.DwAsync(json); + } + + public System.Threading.Tasks.Task SktjAsync(string json) + { + return base.Channel.SktjAsync(json); + } + + public System.Threading.Tasks.Task FktjAsync(string json) + { + return base.Channel.FktjAsync(json); + } + + public System.Threading.Tasks.Task JsfsAsync(string json) + { + return base.Channel.JsfsAsync(json); + } + + public System.Threading.Tasks.Task JsbbAsync(string json) + { + return base.Channel.JsbbAsync(json); + } + + public System.Threading.Tasks.Task HLAsync(string json) + { + return base.Channel.HLAsync(json); + } + + public System.Threading.Tasks.Task SLAsync(string json) + { + return base.Channel.SLAsync(json); + } + + public System.Threading.Tasks.Task CreateVoucherAsync(ERP.VoucherInfo[] param) + { + return base.Channel.CreateVoucherAsync(param); + } + + public System.Threading.Tasks.Task CreatePo_InStockAsync(string json) + { + return base.Channel.CreatePo_InStockAsync(json); + } + + public System.Threading.Tasks.Task CreateStockSearchAsync(string json) + { + return base.Channel.CreateStockSearchAsync(json); + } + + public System.Threading.Tasks.Task CreateSaleAsync(string json) + { + return base.Channel.CreateSaleAsync(json); + } + + public System.Threading.Tasks.Task CreateShopSaleAsync(string json) + { + return base.Channel.CreateShopSaleAsync(json); + } + + public System.Threading.Tasks.Task CreateSaleMergeAsync(string json) + { + return base.Channel.CreateSaleMergeAsync(json); + } + + public System.Threading.Tasks.Task CreateSaleShopFHAsync(string json) + { + return base.Channel.CreateSaleShopFHAsync(json); + } + + public System.Threading.Tasks.Task REQUIREMENTORDERAsync(string json) + { + return base.Channel.REQUIREMENTORDERAsync(json); + } + + public System.Threading.Tasks.Task Zzjxqd115Async(string json) + { + return base.Channel.Zzjxqd115Async(json); + } + + public System.Threading.Tasks.Task PoBillAsync(string json) + { + return base.Channel.PoBillAsync(json); + } + + public System.Threading.Tasks.Task SaleLockAsync(string json) + { + return base.Channel.SaleLockAsync(json); + } + + public System.Threading.Tasks.Task OutsourceAsync(string json) + { + return base.Channel.OutsourceAsync(json); + } + + public System.Threading.Tasks.Task SaleReturnAsync(string json) + { + return base.Channel.SaleReturnAsync(json); + } + + public System.Threading.Tasks.Task MisdeliveryAsync(string json) + { + return base.Channel.MisdeliveryAsync(json); + } + + public System.Threading.Tasks.Task StockCountLossAsync(string json) + { + return base.Channel.StockCountLossAsync(json); + } + + public System.Threading.Tasks.Task StockCountGainAsync(string json) + { + return base.Channel.StockCountGainAsync(json); + } + + public System.Threading.Tasks.Task OtherRecAbleAsync(string json) + { + return base.Channel.OtherRecAbleAsync(json); + } + + public System.Threading.Tasks.Task OUTSTOCKAsync(string json) + { + return base.Channel.OUTSTOCKAsync(json); + } + + public System.Threading.Tasks.Task Purchase_RkAsync(string json) + { + return base.Channel.Purchase_RkAsync(json); + } + + public System.Threading.Tasks.Task PRD_MO_RkAsync(string json) + { + return base.Channel.PRD_MO_RkAsync(json); + } + + public System.Threading.Tasks.Task 生产订单创建Async(string json) + { + return base.Channel.生产订单创建Async(json); + } + + public System.Threading.Tasks.Task PUR_MRBAsync(string json) + { + return base.Channel.PUR_MRBAsync(json); + } + + public System.Threading.Tasks.Task Pro_sAsync(string json) + { + return base.Channel.Pro_sAsync(json); + } + + public System.Threading.Tasks.Task Otsc_sAsync(string json) + { + return base.Channel.Otsc_sAsync(json); + } + + public System.Threading.Tasks.Task MesFh_RkAsync(string json) + { + return base.Channel.MesFh_RkAsync(json); + } + + public System.Threading.Tasks.Task MesSavaTransferDirectAsync(string json) + { + return base.Channel.MesSavaTransferDirectAsync(json); + } + + public System.Threading.Tasks.Task MesPdAsync(string json) + { + return base.Channel.MesPdAsync(json); + } + + public System.Threading.Tasks.Task MiscellaneousAsync(string json) + { + return base.Channel.MiscellaneousAsync(json); + } + + public System.Threading.Tasks.Task LLDelAsync(string json) + { + return base.Channel.LLDelAsync(json); + } + + public System.Threading.Tasks.Task MesFbsdbAsync(string json) + { + return base.Channel.MesFbsdbAsync(json); + } + + public System.Threading.Tasks.Task STK_InStockAsync(string json) + { + return base.Channel.STK_InStockAsync(json); + } + + public System.Threading.Tasks.Task K3DelAsync(string json) + { + return base.Channel.K3DelAsync(json); + } + + public System.Threading.Tasks.Task K3LockAsync(string json) + { + return base.Channel.K3LockAsync(json); + } + + public System.Threading.Tasks.Task RETURNNOTICEAsync(string json) + { + return base.Channel.RETURNNOTICEAsync(json); + } + + public System.Threading.Tasks.Task K3ProDelAsync(string json) + { + return base.Channel.K3ProDelAsync(json); + } + + public System.Threading.Tasks.Task Ops_STK_InStockAsync(string json) + { + return base.Channel.Ops_STK_InStockAsync(json); + } + + public System.Threading.Tasks.Task AP_PayableAsync(string json) + { + return base.Channel.AP_PayableAsync(json); + } + + public System.Threading.Tasks.Task AR_receivableAsync(string json) + { + return base.Channel.AR_receivableAsync(json); + } + + public System.Threading.Tasks.Task JstPdAsync(string json) + { + return base.Channel.JstPdAsync(json); + } + + public System.Threading.Tasks.Task APPAYBILLAsync(string json) + { + return base.Channel.APPAYBILLAsync(json); + } + + public System.Threading.Tasks.Task ValidateSystemAsync(string userName, string pwd, string ERPid, string id) + { + return base.Channel.ValidateSystemAsync(userName, pwd, ERPid, id); + } + + public System.Threading.Tasks.Task ValidateTokenAsync(string token) + { + return base.Channel.ValidateTokenAsync(token); + } + + public virtual System.Threading.Tasks.Task OpenAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndOpen)); + } + + public virtual System.Threading.Tasks.Task CloseAsync() + { + return System.Threading.Tasks.Task.Factory.FromAsync(((System.ServiceModel.ICommunicationObject)(this)).BeginClose(null, null), new System.Action(((System.ServiceModel.ICommunicationObject)(this)).EndClose)); + } + + private static System.ServiceModel.Channels.Binding GetBindingForEndpoint(EndpointConfiguration endpointConfiguration) + { + if ((endpointConfiguration == EndpointConfiguration.ERPGWSoap)) + { + System.ServiceModel.BasicHttpBinding result = new System.ServiceModel.BasicHttpBinding(); + result.MaxBufferSize = int.MaxValue; + result.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max; + result.MaxReceivedMessageSize = int.MaxValue; + result.AllowCookies = true; + return result; + } + if ((endpointConfiguration == EndpointConfiguration.ERPGWSoap12)) + { + System.ServiceModel.Channels.CustomBinding result = new System.ServiceModel.Channels.CustomBinding(); + System.ServiceModel.Channels.TextMessageEncodingBindingElement textBindingElement = new System.ServiceModel.Channels.TextMessageEncodingBindingElement(); + textBindingElement.MessageVersion = System.ServiceModel.Channels.MessageVersion.CreateVersion(System.ServiceModel.EnvelopeVersion.Soap12, System.ServiceModel.Channels.AddressingVersion.None); + result.Elements.Add(textBindingElement); + System.ServiceModel.Channels.HttpTransportBindingElement httpBindingElement = new System.ServiceModel.Channels.HttpTransportBindingElement(); + httpBindingElement.AllowCookies = true; + httpBindingElement.MaxBufferSize = int.MaxValue; + httpBindingElement.MaxReceivedMessageSize = int.MaxValue; + result.Elements.Add(httpBindingElement); + return result; + } + throw new System.InvalidOperationException(string.Format("找不到名称为“{0}”的终结点。", endpointConfiguration)); + } + + private static System.ServiceModel.EndpointAddress GetEndpointAddress(EndpointConfiguration endpointConfiguration) + { + if ((endpointConfiguration == EndpointConfiguration.ERPGWSoap)) + { + return new System.ServiceModel.EndpointAddress("http://119.23.206.129/K3cloud/erpgw.asmx"); + } + if ((endpointConfiguration == EndpointConfiguration.ERPGWSoap12)) + { + return new System.ServiceModel.EndpointAddress("http://119.23.206.129/K3cloud/erpgw.asmx"); + } + throw new System.InvalidOperationException(string.Format("找不到名称为“{0}”的终结点。", endpointConfiguration)); + } + + public enum EndpointConfiguration + { + + ERPGWSoap, + + ERPGWSoap12, + } + } +} diff --git a/src/WMS.Web.Core/Dto/Erp/ErpBillQueryDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpBillQueryDto.cs new file mode 100644 index 00000000..30064913 --- /dev/null +++ b/src/WMS.Web.Core/Dto/Erp/ErpBillQueryDto.cs @@ -0,0 +1,30 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.Erp +{ + /// + /// ERP:单据查询-dto + /// + public class ErpBillQueryDto + { + public ErpBillQueryDto() { } + + public ErpBillQueryDto(string accessToken) + { + this.AccessToken = accessToken; + } + /// + /// 令牌 + /// + [JsonProperty(PropertyName = "ACCESSTOKEN")] + public string AccessToken { get; set; } + /// + /// 参数 + /// + [JsonProperty(PropertyName = "data")] + public string Data { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/Erp/ErpBillQueryParamDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpBillQueryParamDto.cs new file mode 100644 index 00000000..dd05a23d --- /dev/null +++ b/src/WMS.Web.Core/Dto/Erp/ErpBillQueryParamDto.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.Erp +{ + /// + /// ERP:单据查询-参数-dto + /// + public class ErpBillQueryParamDto + { + /// + /// 业务对象表单Id(必录) + /// + public string FormId { get; set; } = "STK_InStock"; + /// + /// 需查询的字段key集合,字符串类型,格式:"key1,key2,..."(必录) 注(查询单据体内码,需加单据体Key和下划线,如:FEntryKey_FEntryId) + /// + public string FieldKeys { get; set; } = "FBillNo,FUOM"; + /// + /// 过滤条件,数组类型,如:[{"Left":"(","FieldName":"Field1","Compare":"=","Value":"111","Right":")","Logic":"AND"},{"Left":"(","FieldName":"Field2","Compare":"=","Value":"222","Right":")","Logic":""}] + /// + public string FilterString { get; set; } + + /// + /// 排序字段,字符串类型(非必录) + /// + public string OrderString { get; set; } + + /// + /// 返回总行数,整型(非必录) + /// + public int TopRowCount { get; set; } + /// + /// 开始行索引,整型(非必录) + /// + public int StartRow { get; set; } = 1; + /// + /// 最大行数,整型,不能超过10000(非必录) + /// + public int Limit { get; set; } = 10; + + /// + /// 表单所在的子系统内码,字符串类型(非必录) + /// + public string SubSystemId { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/Erp/Purchase/ErpPurchaseInStockResultDto.cs b/src/WMS.Web.Core/Dto/Erp/Purchase/ErpPurchaseInStockResultDto.cs new file mode 100644 index 00000000..6a1865d7 --- /dev/null +++ b/src/WMS.Web.Core/Dto/Erp/Purchase/ErpPurchaseInStockResultDto.cs @@ -0,0 +1,24 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.Erp.Purchase +{ + /// + /// erp-采购入库-返回数据源 + /// + [Serializable] + public class ErpPurchaseInStockResultDto + { + /// + /// 单据编号 + /// + public string BillNo { get; set; } + + /// + /// 物料规格信号 + /// + public string Specifications { get; set; } + } +} diff --git a/src/WMS.Web.Core/WMS.Web.Core.csproj b/src/WMS.Web.Core/WMS.Web.Core.csproj index 345ab59e..4d0cf828 100644 --- a/src/WMS.Web.Core/WMS.Web.Core.csproj +++ b/src/WMS.Web.Core/WMS.Web.Core.csproj @@ -26,6 +26,10 @@ + + + + diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs new file mode 100644 index 00000000..378a733f --- /dev/null +++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto.Erp.Purchase; +using WMS.Web.Core.Internal.Results; + +namespace WMS.Web.Domain.IService.Public +{ + public interface IErpService + { + /// + /// erp:单据查询-采购入库单 + /// + /// + Task> BillQueryForPurchaseInStock(); + } +} diff --git a/src/WMS.Web.Domain/Options/ErpOptions.cs b/src/WMS.Web.Domain/Options/ErpOptions.cs new file mode 100644 index 00000000..7eff5cc5 --- /dev/null +++ b/src/WMS.Web.Domain/Options/ErpOptions.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Domain.Options +{ + /// + /// erp相关配置文件 + /// + public class ErpOptions + { + /// + /// erp-请求地址 + /// + public string EndpointAddress { get; set; } + + /// + /// 账号 + /// + public string UserName { get; set; } + + /// + /// 密码 + /// + public string Password { get; set; } + + /// + /// erp-Id + /// + public string ErpId { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs new file mode 100644 index 00000000..d76fc55a --- /dev/null +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -0,0 +1,89 @@ +using AutoMapper; +using ERP; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.ServiceModel; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto.Erp; +using WMS.Web.Core.Dto.Erp.Purchase; +using WMS.Web.Core.Internal.Results; +using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Options; +using WMS.Web.Domain.Values; + +namespace WMS.Web.Domain.Services.Public +{ + /// + /// erp数据交互服务 + /// + public class ErpService : IErpService + { + private IMapper _mapper; + private ErpOptions _erpOptions; + private ILogger _logger; + public ErpService( + IMapper mapper, + IOptions erpOptions, + ILogger logger) + { + this._erpOptions = erpOptions?.Value; + this._mapper = mapper; + this._logger = logger; + } + + /// + /// 初始化ERP:登录到ERP + /// + /// + public async Task> Init() + { + BasicHttpBinding binding = new BasicHttpBinding(); + EndpointAddress address = new EndpointAddress(this._erpOptions.EndpointAddress); + ERPGWSoapClient client = new ERPGWSoapClient(binding, address); + try + { + var result = await client.ValidateSystemAsync(this._erpOptions.UserName, this._erpOptions.Password, this._erpOptions.ErpId, ""); + if (result == null) + return Result.ReFailure(ResultCodes.Erp_Login_Error); + return Result.ReSuccess(result); + } + catch (Exception ex) + { + return Result.ReFailure(ResultCodes.Erp_Login_Error); + } + } + + /// + /// erp:单据查询-采购入库单 + /// + /// + public async Task> BillQueryForPurchaseInStock() + { + BasicHttpBinding binding = new BasicHttpBinding(); + EndpointAddress address = new EndpointAddress(this._erpOptions.EndpointAddress); + ERPGWSoapClient client = new ERPGWSoapClient(binding, address); + var token_result = await client.ValidateSystemAsync(this._erpOptions.UserName, this._erpOptions.Password, this._erpOptions.ErpId, ""); + var query = new ErpBillQueryDto(token_result.AccessToken); + var param = new ErpBillQueryParamDto(); + query.Data = JsonConvert.SerializeObject(param); + var json = JsonConvert.SerializeObject(query); + var result_json = await client.ExecuteBillQueryAsync(json); + var result = JsonConvert.DeserializeObject>>(result_json); + + var list = new List(); + foreach (var item in result) + { + var lis = new ErpPurchaseInStockResultDto(); + lis.BillNo = item[0]; + lis.Specifications = item[1]; + list.Add(lis); + + } + return ResultList.ReSuccess(list); + } + } +} diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index 95de178c..c79223f3 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -9,5 +9,8 @@ namespace WMS.Web.Domain.Values /// public partial class ResultCodes { + public static ValueTuple Erp_Login_Error = (1001, "Erp登录返回错误"); + + public static ValueTuple Erp_BillQuery_Error = (1002, "Erp单据查询返回错误"); } } diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs index 690ad227..e93d36c5 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs @@ -168,6 +168,8 @@ namespace WMS.Web.Repositories.DependencyInjection Services.Configure(Configuration.GetSection("SoaOptions")); Services.AddOptions(); Services.Configure(Configuration.GetSection("HttpOptions")); + Services.AddOptions(); + Services.Configure(Configuration.GetSection("ErpOptions")); } /// @@ -182,6 +184,7 @@ namespace WMS.Web.Repositories.DependencyInjection Services.AddTransient(); Services.AddTransient(); Services.AddTransient(); + Services.AddTransient(); } } }