From ef379de33560d3b30fa54cfbe9b22dc0d8773ab4 Mon Sep 17 00:00:00 2001 From: "boxu.zheng" Date: Fri, 4 Aug 2023 16:52:43 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=91=E6=B7=BB=E5=8A=A0Http=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E8=A7=A3=E5=86=B3=E5=BA=93=E5=AD=98=E6=B1=87=E6=80=BB?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=97=AE=E9=A2=98=20=E6=98=8E=E4=BA=AE?= =?UTF-8?q?=E5=90=8E=E7=BB=AD=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IncomingToWmsExtensions.cs | 1 + .../IncomingToWmsWorker.cs | 66 ++++++++++++++++++- .../appsettings.json | 16 ++--- 3 files changed, 72 insertions(+), 11 deletions(-) diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs index c7d239e71..f68a7724f 100644 --- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsExtensions.cs @@ -150,6 +150,7 @@ public static class IncomingToWmsExtensions { var productReceipt = JsonSerializer.Deserialize(incomingConverted.DataContent); var productReceiptAppService = workerContext.ServiceProvider.GetRequiredService(); + await productReceiptAppService.CreateAsync(productReceipt).ConfigureAwait(false); } diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs index 59e37b895..f1689ec0a 100644 --- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs @@ -1,27 +1,43 @@ using System; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text; +using System.Text.Json; +using System.Threading; using System.Threading.Tasks; +using IdentityModel.Client; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Volo.Abp.BackgroundWorkers; +using Volo.Abp.IdentityServer.Clients; using Volo.Abp.Threading; using Volo.Abp.Uow; using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain.Shared; +using Win_in.Sfs.Wms.Store.Application.Contracts; +using static IdentityServer4.Models.IdentityResources; namespace Win_in.Sfs.Wms.DataExchange.Agent; public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase { private readonly IOptions _options; + private readonly IUnitOfWorkManager _unitOfWorkManager; + private readonly HttpClient _httpClient; + private readonly IHttpClientFactory _httpClientFactory; public IncomingToWmsWorker( AbpAsyncTimer timer, IOptions options, - IServiceScopeFactory serviceScopeFactory - ) : base(timer, serviceScopeFactory) + IServiceScopeFactory serviceScopeFactory, IUnitOfWorkManager unitOfWorkManager, HttpClient httpClient, IHttpClientFactory httpClientFactory) : base(timer, serviceScopeFactory) { _options = options; + _unitOfWorkManager = unitOfWorkManager; + _httpClient = httpClient; + _httpClientFactory = httpClientFactory; Timer.Period = options.Value.IncomingOptions.PeriodSeconds * 1000; //default 5 minutes } @@ -124,7 +140,7 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase await incomingToWms.HandleAsnsAsync(workerContext).ConfigureAwait(false); break; case EnumIncomingDataType.ProductReceipt: - await incomingToWms.HandleProductReceiptsAsync(workerContext).ConfigureAwait(false); + await SendProductReceipt(workerContext, incomingToWms); break; case EnumIncomingDataType.MaterialRequest: await incomingToWms.HandleMaterialRequestsAsync(workerContext).ConfigureAwait(false); @@ -150,4 +166,48 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase incomingToWms.SetSuccess(); } + private async Task SendProductReceipt(PeriodicBackgroundWorkerContext workerContext, IncomingToWms incomingToWms) + { // 定义请求的 URL + string apiUrl = "http://localhost:59095/api/wms/store/product-receipt-note"; + string authUrl = "http://dev.ccwin-in.com:60083"; + var productReceiptJson = JsonSerializer.Deserialize(incomingToWms.DataContent); + try + { + Thread.Sleep(60000); + // 将参数转换为 JSON 格式 + string jsonContent = JsonSerializer.Serialize(productReceiptJson); + + // 创建请求的内容 + StringContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json"); + + var result = await _httpClientFactory.CreateClient().RequestPasswordTokenAsync(new PasswordTokenRequest + { + Address = $"{authUrl.TrimEnd('/')}/connect/token", + GrantType = "password", + ClientId = "Auth_App", + ClientSecret = "1q2w3E*", + UserName = "jiekou1", + Password = "1q2w3E*" + }).ConfigureAwait(false); + + // 添加 Token 到请求头部 + _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); + // 发送 POST 请求 + HttpResponseMessage response = await _httpClient.PostAsync(apiUrl, content); + + // 确保响应成功 + response.EnsureSuccessStatusCode(); + + // 读取响应内容并返回 + string responseBody = await response.Content.ReadAsStringAsync(); + } + catch (HttpRequestException ex) + { + // 处理请求异常 + // 可以记录日志或者抛出异常 + Console.WriteLine(ex.Message); + } + + await incomingToWms.HandleProductReceiptsAsync(workerContext).ConfigureAwait(false); + } } diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json index 57b8f9160..e96fbdd7b 100644 --- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json @@ -1,13 +1,13 @@ { "ConnectionStrings": { - "Default": "Server=10.164.113.32,1818\\SHDB;Database=Wms_DataExchange_Main_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True", - "DataExchange": "Server=10.164.113.32,1818\\SHDB;Database=Wms_DataExchange_Main_Dy_ShangHai;uid=ShWmsUser;pwd=Faty@Wms_20230413#SH;TrustServerCertificate=True" + "Default": "Server=dev.ccwin-in.com,13319;Database=Wms_XianChang_DataExchange_Main_Dy_ShangHai;uid=ccwin-in;pwd=Microsoft@2022;timeout=6000;TrustServerCertificate=True", + "DataExchange": "Server=dev.ccwin-in.com,13319;Database=Wms_XianChang_DataExchange_Main_Dy_ShangHai;uid=ccwin-in;pwd=Microsoft@2022;timeout=6000;TrustServerCertificate=True" }, "AuthServer": { - "Authority": "http://10.164.113.31:60083/", + "Authority": "http://dev.ccwin-in.com:60083/", "RequireHttpsMetadata": "false", "SwaggerClientId": "admin", "SwaggerClientSecret": "1q2w3E*", @@ -19,23 +19,23 @@ "client_id": "Auth_App", "client_secret": "1q2w3E*", "grant_type": "password", - "username": "jiekou", + "username": "jiekou1", "password": "1q2w3E*" }, "RemoteServices": { "BaseData": { - "BaseUrl": "http://10.164.113.31:60084/" + "BaseUrl": "http://dev.ccwin-in.com:60084/" }, "Store": { - "BaseUrl": "http://10.164.113.31:60085/" + "BaseUrl": "http://dev.ccwin-in.com:60085/" }, "Label": { - "BaseUrl": "http://10.164.113.31:60082/" + "BaseUrl": "http://dev.ccwin-in.com:60082/" }, "Auth": { - "BaseUrl": "http://10.164.113.31:60083/" + "BaseUrl": "http://dev.ccwin-in.com:60083/" } }, "DataExchangeOptions": {