From cd92e0b6d6aa8f77c9a0e266308fa6d484ba06f0 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Tue, 7 Nov 2023 15:11:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E9=87=91=E8=9D=B6=E5=AD=90=E4=BB=93=E5=BA=93=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 | Bin 228751 -> 228751 bytes .../Controllers/SysConfigController.cs | 38 +++++++++++++- src/WMS.Web.Api/Controllers/TestController.cs | 2 +- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 18 +++++++ src/WMS.Web.Domain/Entitys/TakeStock.cs | 5 ++ .../IService/Public/IErpService.cs | 5 ++ .../Services/Public/ErpService.cs | 48 +++++++++++++++++- 7 files changed, 112 insertions(+), 4 deletions(-) diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 87fd87fceb64b12a945bc700dacbeaef91e58d3e..e2a492bd11e4ac9b628f6a5e67d6854433210b03 100644 GIT binary patch delta 5948 zcmeI0dw3Pa8OG0kd%heJPDlbF5FjL64EIYCMM#4NL_$MaE|r2(2$3Rk2^X;n4S0eS zE2M!0kl`l8dP7t$B5rL_D6}B8*3xQiX>BQ3p)Hj&SuTN?(0BG~r2gR_eV#r~IS;>? z_nYtCnI${3v%9P7<5$uXm zz3CR?SZ~^)Yp)8qQOgnsYqjOZwG^7r+*r_`iZtt<3JWI zBQfT*HreXc7J@^zffJSf)1Y!aK4G_>l5HLtpDbyj*48(#sp!#c$It=1L3y=U3V*-&t5=2YT z3M7NpAO)xa+JLqo6|@8GK?jiL43q|~2I~kuJ779uHK;on2Ks_=B25R%fUy(k47z~N z51il(+!Z-Bz)h&tAnN2lf9z*ZI1~A9K*RB>e^qx!tz&%aVD-OM2k3}k$UI-2|@sk&WC?lpBB~xC4|8h{)IjJiuWoND;Qy-L{I++GP(}>Kq zpbW6xoyOiV#HQ3)2AvH1nHXe3ESq_mq258UNX4;i?xnm;7@2sMEw0ZbAd@JHE>i_1 zvDkB-I;OVdeAxG?7n>THWCxH2I)ZdDThiW+8IYYoXV3+71#jTUH^EIT-rY`}lQPkE6md7y-9Znr z;VO-c>j~Kl^ky+;raoDWtf%f;ACYfTd#$fgRZkCV+zjQ2N(wK1j9iA z7y-`V_^)!l$ZVv%+(O2*8);usb%~=yngZW9S&m~f+ScwK5F(0XR&@K zl@{FXy6$0lx9@^fF1v!5=-R%;(B7Dk$~KXW!d=u-%b4WaCbOL6+aQ%~5*v$m(~Mwx zv1^;cve>slDqFG9DMnwXrI)y_ds&wFE=c7n5yoq@Yxq>x^lg??eG{ZI*%ibz*LEL6 zd*=_SY}1UF4BD`0&Rx-3_gH*N^ zM$%jKK`_0-b^U;4h3|q?t_rcSqyBMvrE6NnveGv}DpRGgHC?ZcFIerms#vb}U69IU zR}j^%Z4E3H6tgJXOyip2euSt5d)a2{nuyyBBHU|mYk`<1j($W( zdremw_YB++AaGZ}l83;$$C`$~!p5qFz|wtt3*Dy;pRXdUP%J+PtU)X=2&^)!AP6iY ztQrWc7db$K7@(PQpb`Ti%2cWh8)u20CKhd_KE0Nx7OV(as62)6L{tl=J?1n7CN}0V z#4;8K&d@Wd%T<6Gis=V|Ify9-v4Ta$z4~#HQA78HDpX4ai={O*FjT36N;VGGP=TJX zT1A*4xcm^+#%+W3bS?4(V;jU4H$tvwRHocd$nM9Jl~5Nbieio2z(qiAWR%f3xryaw zmRndp2|wDmvfRe9hNCUzQ#=H_=O~7dKU5{`PjfUZpJDkd+-OLMCPtHBZGkIaHLScm z+j)+h)8skwIj(D|2CtUSTU{10gxs!5boqknatF&7(dF|j-g}wKZtT3)+P<;#sy~BT zw@!6q=T(0WZ|60z^Pao04XVG1y$!AkiU&?oPK^C_AYMF4T_R0hG@HCJ4-!?m@d)?shVJ{LCxJ>}C0?lS$Uql(gPj_aXBdOT)?h$Uo+FWFkLi`4cDgA$bSw zN9qlhZ(g4{fXqRbKXo#P{O%4T^D~w|zdmyWnWHSh#rQh8<$oz`s zyH4iUe&#qbzhU`XC-a`4c^{eIiG(To7%}%0C5N2Xe6jKr4gUYy@VIWR52`I)^naG}B2VJ;NRy|#oz^p$GkHzY@*)2Kd{Q* zTjd`_`FTp$PKcWG)bD@j^NE%zrqt4?FZsCyUzgRV677#--bH*d`4hfg{HL!WAEN!w z;4k1L_$xRCPJ@rY-@wP<3^)t^4*miD3C@9kflt7B5Csy{0ux*S>Wj%m&X19w1oO+w QjmU64PB&uG^c7S74cekLwEzGB delta 9992 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 P@~)?+|Ic2lqc;8-_XX*x diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index d8e08f66..47b1e9d1 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -12,6 +12,7 @@ using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService.Public; using WMS.Web.Domain.Values; +using WMS.Web.Domain.Values.Single; namespace WMS.Web.Api.Controllers { @@ -25,12 +26,16 @@ namespace WMS.Web.Api.Controllers private readonly ILoginService _loginService; private readonly IBasicsRepositories _basicsRepositories; private readonly IBoxRepositories _boxRepositories; + private readonly IErpService _erpService; + private readonly ISingleDataService _singleDataService; public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories, - IBoxRepositories boxRepositories) + IBoxRepositories boxRepositories, IErpService erpService, ISingleDataService singleDataService) { _loginService = loginService; _basicsRepositories = basicsRepositories; _boxRepositories = boxRepositories; + _erpService = erpService; + _singleDataService = singleDataService; } /// @@ -111,6 +116,37 @@ namespace WMS.Web.Api.Controllers var r = await _basicsRepositories.GetSubUcStockAsync(id); return Result>.ReSuccess(r); } + /// + /// 根据仓库获取金蝶子仓库 + /// + /// 仓库id + /// + [HttpGet] + [Route("GetErp_SubUcStock/{id}")] + public async Task>> GetErp_SubUcStock([FromRoute] int id) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return Result>.ReFailure(ResultCodes.Token_Invalid_Error); + + List list = new List(); + var code = _singleDataService.GetSingleDataCode(SingleAction.Stocks, loginInfo.UserInfo.CompanyId, id); + if (code.Substring(0, 2).Equals("HD") || code.Substring(0, 2).Equals("GD")) + { + var subs = await _erpService.BillQueryForSubStock(code); + foreach (var s in subs.Data) + { + list.Add(new UcStockResponse() + { + Id = s.Id, + Code = s.Code, + Name = s.Name, + Disable = false + }); + } + } + return Result>.ReSuccess(list); + } /// /// 获取仓位:模糊名称 diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index 8088fdca..a85b78cd 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -35,7 +35,7 @@ namespace WMS.Web.Api.Controllers [Route("hj")] public async Task TestHJ() { - var res = await this._erpService.BillQueryForTransferDirectOutStock(); + var res = await this._erpService.BillQueryForSubStock(); //var result= await this._erpService.BillQueryForPurchaseInStock(); //var result = await this._erpService.BillQueryForOrg(); var result = await this._erpService.BillQueryForMaterial(); diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 5a6bad72..4c5cc7b1 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -993,6 +993,11 @@ 仓位ID + + + 子仓库(跟金蝶交互字段) + + 盘点前数量(wms系统数量) @@ -1570,6 +1575,12 @@ + + + 获取仓位信息信息 根据仓库编码 + + + 登录服务接口 @@ -2316,6 +2327,13 @@ + + + 根据仓库编码获取仓位 + + + + 同步数据(保存提交审核) diff --git a/src/WMS.Web.Domain/Entitys/TakeStock.cs b/src/WMS.Web.Domain/Entitys/TakeStock.cs index e0808357..82a349ae 100644 --- a/src/WMS.Web.Domain/Entitys/TakeStock.cs +++ b/src/WMS.Web.Domain/Entitys/TakeStock.cs @@ -61,6 +61,11 @@ namespace WMS.Web.Domain.Entitys [Column("SubStockId")] public int SubStockId { get; set; } /// + /// 子仓库(跟金蝶交互字段) + /// + [Column("Erp_SubStockId")] + public int Erp_SubStockId { get; set; } = 0; + /// /// 盘点前数量(wms系统数量) /// [Column("BeforeQty")] diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs index 52aefd13..399c0b4c 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs @@ -65,6 +65,11 @@ namespace WMS.Web.Domain.IService.Public /// /// Task> BillQueryForStock(); + /// + /// 获取仓位信息信息 根据仓库编码 + /// + /// + Task> BillQueryForSubStock(string code=null); //同步数据(保存提交审核) Task Sync(T dto, string formId); //下推 diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 47bf4091..f134bf24 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -192,7 +192,7 @@ namespace WMS.Web.Domain.Services.Public param.FieldKeys = "FMATERIALID,FName,FNumber,FSpecification,FForbidStatus,FUseOrgId"; param.Limit = 10000; Console.Write("请输入第几行:"); - var row=Console.ReadLine(); + var row = Console.ReadLine(); param.StartRow = (Convert.ToInt32(row) * param.Limit); //查询条件:备注其中的条件值以金蝶的值为准!!! @@ -310,6 +310,49 @@ namespace WMS.Web.Domain.Services.Public } } /// + /// 根据仓库编码获取仓位 + /// + /// + /// + public async Task> BillQueryForSubStock(string code = null) + { + try + { + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + var query = new ErpBillQueryDto(token_result.Data); + var param = new ErpBillQueryParamDto(FormIdParam.BD_STOCK.ToString()); + param.FieldKeys = "FStockFlexDetail_FDetailID,FFlexEntryName,FFlexEntryId,'0'"; + param.Limit = 100000; + if (!string.IsNullOrEmpty(code)) + param.FilterString = "FNumber='" + code + "'";//FNumber='C' + 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 ErpStockDto(); + lis.Id = int.Parse(item[0]); + lis.Name = item[1]; + lis.Code = item[2]; + lis.OrgId = Convert.ToInt32(item[3]); + list.Add(lis); + + } + return ResultList.ReSuccess(list); + + } + catch (Exception) + { + return ResultList.ReFailure("错误", 10002); + } + } + /// /// 同步数据(保存提交审核) /// /// @@ -393,7 +436,7 @@ namespace WMS.Web.Domain.Services.Public param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and FRemainOutQty>=0"; //string srt = JsonConvert.SerializeObject(stocks_codes); //param.FilterString = param.FilterString + " and FStockID in (" + srt.Substring(1, srt.Length - 2) + ")"; - + //根据原订单号查询 if (sourceBillNos != null && sourceBillNos.Count() > 0) { @@ -812,6 +855,7 @@ namespace WMS.Web.Domain.Services.Public return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); } } + #endregion } } From ec755cb92e38f5ddac9e00ef8d9cb244174832ff Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Tue, 7 Nov 2023 17:07:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E8=80=81ops?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/Controllers/TestController.cs | 14 +++- src/WMS.Web.Api/appsettings.json | 5 ++ src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 7 ++ src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 10 +++ src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 10 +++ src/WMS.Web.Core/Dto/OpsBoxRequest.cs | 19 +++++ src/WMS.Web.Core/Dto/OpsBoxResponse.cs | 13 +++ src/WMS.Web.Domain/Entitys/Box.cs | 8 +- .../IService/Public/IHttpClientService.cs | 1 + .../IService/Public/IOpsService.cs | 13 +++ src/WMS.Web.Domain/Options/OpsOptions.cs | 16 ++++ .../Services/Public/HttpClientService.cs | 6 +- .../Services/Public/OpsService.cs | 81 +++++++++++++++++++ .../DependencyInjection/AppBuilder.cs | 3 + 14 files changed, 199 insertions(+), 7 deletions(-) create mode 100644 src/WMS.Web.Core/Dto/OpsBoxRequest.cs create mode 100644 src/WMS.Web.Core/Dto/OpsBoxResponse.cs create mode 100644 src/WMS.Web.Domain/IService/Public/IOpsService.cs create mode 100644 src/WMS.Web.Domain/Options/OpsOptions.cs create mode 100644 src/WMS.Web.Domain/Services/Public/OpsService.cs diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index a85b78cd..a46d6ea7 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -9,6 +9,7 @@ using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.Threading.Tasks; +using WMS.Web.Core.Dto; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService; @@ -23,19 +24,28 @@ namespace WMS.Web.Api.Controllers private readonly IErpService _erpService; private IInStockTaskService _inStockTaskService; private IBasicsRepositories _transactionRepositories; + private readonly IOpsService _opsService; - public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBasicsRepositories transactionRepositories) + public TestController(IErpService erpService, IInStockTaskService inStockTaskService, + IBasicsRepositories transactionRepositories, IOpsService opsService) { this._erpService = erpService; this._inStockTaskService = inStockTaskService; this._transactionRepositories = transactionRepositories; + _opsService = opsService; } [HttpGet] [Route("hj")] public async Task TestHJ() { - var res = await this._erpService.BillQueryForSubStock(); + OpsBoxRequest request = new OpsBoxRequest() + { + StrartTime = DateTime.Now.AddYears(-1), + EndTime=DateTime.Now + }; + await _opsService.GetBox(request); + //var res = await this._erpService.BillQueryForSubStock(); //var result= await this._erpService.BillQueryForPurchaseInStock(); //var result = await this._erpService.BillQueryForOrg(); var result = await this._erpService.BillQueryForMaterial(); diff --git a/src/WMS.Web.Api/appsettings.json b/src/WMS.Web.Api/appsettings.json index 1420980f..0afcdc17 100644 --- a/src/WMS.Web.Api/appsettings.json +++ b/src/WMS.Web.Api/appsettings.json @@ -43,6 +43,11 @@ "ErpId": "ce20210909", "PurchaseInstockFieldKeys": "FBillNo,FUOM,FSupplierId.FName,FPurchaseOrgId.FName,FMaterialName,FMaterialId.FNumber" }, + "OpsOptions": { + "Url": "http://39.108.150.2:8050/", + "UserName": "admin", + "PassWord": "888888" + }, "Qiniu": { "AccessKey": "dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms", "SecretKey": "KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q", diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 42c97a90..443d7192 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -283,6 +283,13 @@ 仓库id + + + 根据仓库获取金蝶子仓库 + + 仓库id + + 获取仓位:模糊名称 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 9ff5164b..dd09a194 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -2280,6 +2280,16 @@ 操作 Id集合 + + + 老ops箱信息请求 + + + + + 老ops箱信息 + + 根据单号搜索出库单任务信息 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 4c5cc7b1..f9cbe9cd 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1907,6 +1907,11 @@ 采购入库:字段 + + + 老ops对接 + + Quartz定时任务-配置项 @@ -2558,6 +2563,11 @@ + + + ops服务 + + 保存单个key value diff --git a/src/WMS.Web.Core/Dto/OpsBoxRequest.cs b/src/WMS.Web.Core/Dto/OpsBoxRequest.cs new file mode 100644 index 00000000..4497d64b --- /dev/null +++ b/src/WMS.Web.Core/Dto/OpsBoxRequest.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto +{ + /// + /// 老ops箱信息请求 + /// + public class OpsBoxRequest + { + public DateTime StrartTime { get; set; } + public DateTime EndTime { get; set; } + public string BoxBillNo { get; set; } + + public int Page { get; set; } = 1; + public int Limit { get; set; } = 10000000; + } +} diff --git a/src/WMS.Web.Core/Dto/OpsBoxResponse.cs b/src/WMS.Web.Core/Dto/OpsBoxResponse.cs new file mode 100644 index 00000000..3ad53221 --- /dev/null +++ b/src/WMS.Web.Core/Dto/OpsBoxResponse.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto +{ + /// + /// 老ops箱信息 + /// + public class OpsBoxResponse + { + } +} diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs index b26d2c0e..2083e5ff 100644 --- a/src/WMS.Web.Domain/Entitys/Box.cs +++ b/src/WMS.Web.Domain/Entitys/Box.cs @@ -34,12 +34,16 @@ namespace WMS.Web.Domain.Entitys /// /// 供应商Id /// - public int SupplierId { get; set; } + public int? SupplierId { get; set; } + /// + /// 组织Id + /// + public int? OrgId { get; set; } /// /// 创建时间(对应老OPS的创建时间) /// public DateTime CreateTime { get; set; } = DateTime.Now; - + /// /// 明细 /// diff --git a/src/WMS.Web.Domain/IService/Public/IHttpClientService.cs b/src/WMS.Web.Domain/IService/Public/IHttpClientService.cs index 6b35e31a..42a5e48c 100644 --- a/src/WMS.Web.Domain/IService/Public/IHttpClientService.cs +++ b/src/WMS.Web.Domain/IService/Public/IHttpClientService.cs @@ -8,6 +8,7 @@ namespace WMS.Web.Domain.IService.Public { public interface IHttpClientService { + HttpClient BuildHttpClient(Dictionary dicDefaultHeaders, int? timeoutSecond = 180); Task GetAsync(string url, int timeoutSecond = 180); Task GetAsync(string url, Dictionary dicHeaders, int timeoutSecond = 180); Task PostAsync(string url, string requestBody, int timeoutSecond = 180); diff --git a/src/WMS.Web.Domain/IService/Public/IOpsService.cs b/src/WMS.Web.Domain/IService/Public/IOpsService.cs new file mode 100644 index 00000000..7d6c5c38 --- /dev/null +++ b/src/WMS.Web.Domain/IService/Public/IOpsService.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto; + +namespace WMS.Web.Domain.IService.Public +{ + public interface IOpsService + { + Task GetBox(OpsBoxRequest request); + } +} diff --git a/src/WMS.Web.Domain/Options/OpsOptions.cs b/src/WMS.Web.Domain/Options/OpsOptions.cs new file mode 100644 index 00000000..3fe9cfc1 --- /dev/null +++ b/src/WMS.Web.Domain/Options/OpsOptions.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Domain.Options +{ + /// + /// 老ops对接 + /// + public class OpsOptions + { + public string Url { get; set; } + public string UserName { get; set; } + public string PassWord { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Services/Public/HttpClientService.cs b/src/WMS.Web.Domain/Services/Public/HttpClientService.cs index db4f48e0..016bd2dd 100644 --- a/src/WMS.Web.Domain/Services/Public/HttpClientService.cs +++ b/src/WMS.Web.Domain/Services/Public/HttpClientService.cs @@ -105,8 +105,8 @@ namespace WMS.Web.Domain.Services.Public /// public async Task PostAsync(string url, string requestBody, Dictionary dicHeaders, int timeoutSecond = 180) { - var client = BuildHttpClient(null, timeoutSecond); - var requestContent = GenerateStringContent(requestBody, dicHeaders); + var client = BuildHttpClient(dicHeaders, timeoutSecond); + var requestContent = GenerateStringContent(requestBody, contentHeaders); var response = await client.PostAsync(url, requestContent); var responseContent = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) @@ -213,7 +213,7 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - private HttpClient BuildHttpClient(Dictionary dicDefaultHeaders, int? timeoutSecond) + public HttpClient BuildHttpClient(Dictionary dicDefaultHeaders, int? timeoutSecond=180) { var httpClient = _clientFactory.CreateClient("ops_client"); httpClient.DefaultRequestHeaders.Clear(); //为了使客户端不受最后一个请求的影响,它需要清除DefaultRequestHeaders diff --git a/src/WMS.Web.Domain/Services/Public/OpsService.cs b/src/WMS.Web.Domain/Services/Public/OpsService.cs new file mode 100644 index 00000000..22f77fd8 --- /dev/null +++ b/src/WMS.Web.Domain/Services/Public/OpsService.cs @@ -0,0 +1,81 @@ +using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto; +using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Options; + +namespace WMS.Web.Domain.Services.Public +{ + /// + /// ops服务 + /// + public class OpsService : IOpsService + { + private readonly IHttpClientService _httpClientService; + private readonly ILogger _logger; + private readonly IMemoryCache _memoryCache; + private int hours = 10;//过期时间 默认10小时 + private readonly OpsOptions _option; + + public OpsService(IHttpClientService httpClientService, ILogger logger, + IMemoryCache memoryCache, IOptions option) + { + this._memoryCache = memoryCache; + this._httpClientService = httpClientService; + this._logger = logger; + _option = option?.Value; + } + + public async Task GetBox(OpsBoxRequest request) + { + var token = await GetToken(); + Dictionary dicHeaders = new Dictionary(); + dicHeaders.Add("Authorization", "Bearer " + token); + //_httpClientService.BuildHttpClient(contentHeaders); + var res= await _httpClientService.PostAsync(_option.Url + "BarCode/carton-box_api/carton-box", JsonConvert.SerializeObject(request), dicHeaders); + } + + private async Task GetToken() + { + OpsLogin login = new OpsLogin() + { + hAccount = _option.UserName, + hPassword = _option.PassWord + }; + var res = await _httpClientService.PostAsync(_option.Url + "api/login", JsonConvert.SerializeObject(login)); + var token = res.data?.token ?? ""; + if (string.IsNullOrEmpty(token)) + _logger.LogInformation("老Ops登录失败:" + res?.errors); + return token; + } + + } + public class OpsLogin + { + public OpsLogin() { } + public string hAccount { get; set; } = "admin"; + public string hPassword { get; set; } = "888888"; + } + public class OpsInfo + { + public int code { get; set; } + public string message { get; set; } + public string date { get; set; } + public string token { get; set; } + } + public class OpsReponse + { + public int statusCode { get; set; } + public bool succeeded { get; set; } + public string errors { get; set; } + public string extras { get; set; } + + public OpsInfo data { get; set; } + } +} diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs index 3e16e9c1..e603ca56 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs @@ -174,6 +174,8 @@ namespace WMS.Web.Repositories.DependencyInjection Services.Configure(Configuration.GetSection("HttpOptions")); Services.AddOptions(); Services.Configure(Configuration.GetSection("ErpOptions")); + Services.AddOptions(); + Services.Configure(Configuration.GetSection("OpsOptions")); } /// @@ -234,6 +236,7 @@ namespace WMS.Web.Repositories.DependencyInjection Services.AddTransient(); Services.AddTransient(); Services.AddTransient(); + Services.AddTransient(); Services.AddTransient();