diff --git a/Src/Dlhis.Basic/JinkoSapHttpClientPack.cs b/Src/Dlhis.Basic/JinkoSapHttpClientPack.cs index c8677f54..879ffa04 100644 --- a/Src/Dlhis.Basic/JinkoSapHttpClientPack.cs +++ b/Src/Dlhis.Basic/JinkoSapHttpClientPack.cs @@ -1,21 +1,21 @@ -using System.Net.Http.Headers; -using System.Text; -using Kurisu.AspNetCore.Startup; - -namespace Dlhis.Basic; - -public class JinkoSapHttpClientPack : BaseAppPack -{ - public override void ConfigureServices(IServiceCollection services) - { - services.AddHttpClient("jinko:sap", (_, httpClient) => - { - httpClient.BaseAddress = new Uri("http://sappipap02.jinkosolar.cn:50200"); - httpClient.Timeout = TimeSpan.FromMinutes(10); - - const string credentials = "EHS_USER:y3R1hd2h*RICAC"; - var headerValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials)); - httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", headerValue); - }); - } -} \ No newline at end of file +// using System.Net.Http.Headers; +// using System.Text; +// using Kurisu.AspNetCore.Startup; +// +// namespace Dlhis.Basic; +// +// public class JinkoSapHttpClientPack : BaseAppPack +// { +// public override void ConfigureServices(IServiceCollection services) +// { +// services.AddHttpClient("jinko:sap", (_, httpClient) => +// { +// httpClient.BaseAddress = new Uri("http://sappipap02.jinkosolar.cn:50200"); +// httpClient.Timeout = TimeSpan.FromMinutes(10); +// +// const string credentials = "EHS_USER:y3R1hd2h*RICAC"; +// var headerValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials)); +// httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", headerValue); +// }); +// } +// } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/JinkoSapService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/JinkoSapService.cs index 521c93e8..6338af55 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/JinkoSapService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/JinkoSapService.cs @@ -1,6 +1,7 @@ using System.Net; using System.Text; using Dlhis.Entity.Basic.Entity; +using Dlhis.Jip.Api.ClientHandlers; using Dlhis.Jip.Api.Dto; using Dlhis.Jip.Api.Responses; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; @@ -11,21 +12,39 @@ namespace Dlhis.Basic.Organization.Services.Implements; public class JinkoSapService : IJinkoSapService { private readonly IDbContext _dbContext; + private readonly IServiceProvider _serviceProvider; private readonly ILogger _logger; private readonly IHttpClientFactory _httpClientFactory; - public JinkoSapService(IHttpClientFactory httpClientFactory, IDbContext dbContext, ILogger logger) + public JinkoSapService(IHttpClientFactory httpClientFactory, + IDbContext dbContext, + IServiceProvider serviceProvider, + ILogger logger) { _dbContext = dbContext; + _serviceProvider = serviceProvider; _logger = logger; _httpClientFactory = httpClientFactory; } + private async Task GetHttpClientAsync() + { + var token = await new JipTokenHandler().GetTokenAsync(_serviceProvider); + + var httpClient = _httpClientFactory.CreateClient(); + httpClient.BaseAddress = new Uri("http://jip.jinkosolar.com"); + httpClient.Timeout = TimeSpan.FromMinutes(30); + httpClient.DefaultRequestHeaders.Add("Authorization", token); + + return httpClient; + } + public async Task GetSapOrganizationsAsync() { - const string apiUrl = "/RESTAdapter/Rest/EHR_ORGANIZATION/"; + //const string apiUrl = "/RESTAdapter/Rest/EHR_ORGANIZATION/"; + var httpClient = await GetHttpClientAsync(); - var response = await _httpClientFactory.CreateClient("jinko:sap").PostAsync(apiUrl, new StringContent("{}", Encoding.UTF8, "application/json")); + var response = await httpClient.PostAsync("/JIP/HCM/HCM_SYN_01", new StringContent("{}", Encoding.UTF8, "application/json")); response.EnsureSuccessStatusCode(); string responseJson = await response.Content.ReadAsStringAsync(); @@ -36,9 +55,9 @@ public class JinkoSapService : IJinkoSapService public async Task GetPositionsAsync() { - const string apiUrl = "/RESTAdapter/Rest/EHR_POSITION/"; - - var response = await _httpClientFactory.CreateClient("jinko:sap").PostAsync(apiUrl, new StringContent("{}", Encoding.UTF8, "application/json")); + //const string apiUrl = "/RESTAdapter/Rest/EHR_POSITION/"; + var httpClient = await GetHttpClientAsync(); + var response = await httpClient.PostAsync("/JIP/HCM/HCM_SYN_02", new StringContent("{}", Encoding.UTF8, "application/json")); response.EnsureSuccessStatusCode(); string responseJson = await response.Content.ReadAsStringAsync(); @@ -50,7 +69,8 @@ public class JinkoSapService : IJinkoSapService public async Task GetPersonsByWerkAsync(string werk) { - const string apiUrl = "/RESTAdapter/Rest/EHR_PERSONNEL/"; + //const string apiUrl = "/RESTAdapter/Rest/EHR_PERSONNEL/"; + var httpClient = await GetHttpClientAsync(); var werkInfo = await _dbContext.Queryable() .Where(x => x.Enable) @@ -75,7 +95,7 @@ public class JinkoSapService : IJinkoSapService }; var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); - var response = await _httpClientFactory.CreateClient("jinko:sap").PostAsync(apiUrl, content); + var response = await httpClient.PostAsync("/JIP/HCM/HCM_SYN_03", content); if (response.StatusCode != HttpStatusCode.OK) { _logger.LogError("获取{Werk}人事范围数据异常:{error}", werk, await response.Content.ReadAsStringAsync()); @@ -104,7 +124,8 @@ public class JinkoSapService : IJinkoSapService public async Task GetPersonsByCodeAsync(string code) { - const string apiUrl = "/RESTAdapter/Rest/EHR_PERSONNEL/"; + //const string apiUrl = "/RESTAdapter/Rest/EHR_PERSONNEL/"; + var httpClient = await GetHttpClientAsync(); var body = new { @@ -124,7 +145,7 @@ public class JinkoSapService : IJinkoSapService }; var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); - var response = await _httpClientFactory.CreateClient("jinko:sap").PostAsync(apiUrl, content); + var response = await httpClient.PostAsync("/JIP/HCM/HCM_SYN_03", content); response.EnsureSuccessStatusCode(); var jsonResponse = await response.Content.ReadAsStringAsync();