From f49404f9381a0a75d7c3263a006f5412f45762bc Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 25 Nov 2024 11:58:03 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=B8=B4=E6=97=B6=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/GetHashCodeExtensions.cs | 5 -- .../Response/UploadAttendanceResponse.cs | 21 ++++--- .../Common/Services/IJinkoJipService.cs | 18 +++--- .../Services/Implements/HangfireService.cs | 56 +++++++++---------- .../Services/Implements/JinkoJipService.cs | 1 + .../Services/Implements/JinkoSapService.cs | 22 ++------ .../Dlhis.ScheduledTask.csproj | 1 + .../Jobs/MealSupplementHandlerJob.cs | 4 +- .../Jobs/SyncBusinessTripJob.cs | 18 +++--- .../Jobs/SyncOriginCardInfoJob.cs | 14 ++--- Src/Dlhis.ScheduledTask/Jobs/SyncPersonJob.cs | 7 ++- .../Packs/JinkoSapHttpClientPack.cs | 8 +-- Src/Dlhis.ScheduledTask/Program.cs | 8 --- 13 files changed, 81 insertions(+), 102 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/Common/GetHashCodeExtensions.cs b/Src/Dlhis.ScheduledTask/Common/GetHashCodeExtensions.cs index 7ed25d87..99d3fffd 100644 --- a/Src/Dlhis.ScheduledTask/Common/GetHashCodeExtensions.cs +++ b/Src/Dlhis.ScheduledTask/Common/GetHashCodeExtensions.cs @@ -8,9 +8,4 @@ internal static class GetHashCodeExtensions if(string.IsNullOrEmpty(o.ToString())) return 0; return o.GetHashCode(); } - - public static int SafeGetHashCode(this int o) - { - return o.GetHashCode(); - } } diff --git a/Src/Dlhis.ScheduledTask/Common/Response/UploadAttendanceResponse.cs b/Src/Dlhis.ScheduledTask/Common/Response/UploadAttendanceResponse.cs index 1236693a..08217cf9 100644 --- a/Src/Dlhis.ScheduledTask/Common/Response/UploadAttendanceResponse.cs +++ b/Src/Dlhis.ScheduledTask/Common/Response/UploadAttendanceResponse.cs @@ -1,12 +1,11 @@ -namespace Dlhis.ScheduledTask.Common.Response -{ - public class UploadAttendanceResponse - { - /// - /// 0 成功 - /// - public string OLX { get; set; } +namespace Dlhis.ScheduledTask.Common.Response; - public string OMS { get; set; } - } -} +public class UploadAttendanceResponse +{ + /// + /// 0 成功 + /// + public string OLX { get; set; } + + public string OMS { get; set; } +} \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/Common/Services/IJinkoJipService.cs b/Src/Dlhis.ScheduledTask/Common/Services/IJinkoJipService.cs index 6b91adbc..a07923d5 100644 --- a/Src/Dlhis.ScheduledTask/Common/Services/IJinkoJipService.cs +++ b/Src/Dlhis.ScheduledTask/Common/Services/IJinkoJipService.cs @@ -5,11 +5,13 @@ namespace Dlhis.ScheduledTask.Common.Services; public interface IJinkoJipService : ISingletonDependency { - Task UploadAttendancesAsync(List requests); - + /// + /// 同步餐补处理结果 + /// + /// + /// Task SyncMealSupplementRecordsAsync(List requests); - /// /// 获取出差信息 /// @@ -28,9 +30,11 @@ public interface IJinkoJipService : ISingletonDependency /// Task GetTravelInfosByUserCodeAsync(DateTime begin, DateTime end, string userCode); - + /// + /// 同步人脸数据到SAP + /// + /// + /// + /// Task SyncFaceToSapAsync(string userCode, string base64); - - - string IssueToken(); } \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/Common/Services/Implements/HangfireService.cs b/Src/Dlhis.ScheduledTask/Common/Services/Implements/HangfireService.cs index 51d56928..785ccf64 100644 --- a/Src/Dlhis.ScheduledTask/Common/Services/Implements/HangfireService.cs +++ b/Src/Dlhis.ScheduledTask/Common/Services/Implements/HangfireService.cs @@ -23,41 +23,41 @@ public class HangfireService : IHangfireService public async Task CreateSapPersonSyncBackgroundJobAsync(SapNoRequest request) { - var jobKey = $"hangfire:background:person:{request.Code}"; - - using var handler = await _redisCache.LockAsync(jobKey); - if (handler.Acquired) - { - BackgroundJob.Enqueue(x => x.TodoByCodeAsync(request.Code)); - } + // var jobKey = $"hangfire:background:person:{request.Code}"; + // + // using var handler = await _redisCache.LockAsync(jobKey); + // if (handler.Acquired) + // { + // BackgroundJob.Enqueue(x => x.TodoByCodeAsync(request.Code)); + // } } public async Task CreateSapWerkSyncBackgroundJobAsync(SapNoRequest request) { - var jobKey = $"hangfire:background:werk:{request.Code}"; - - await using var handler = await _redisCache.LockAsync(jobKey); - if (handler.Acquired) - { - var werkInfo = await _dbContext.Queryable().Where(x => x.Werk == request.Code).SingleAsync(); - werkInfo.ThrowIfNull("人事范围不存在"); - - werkInfo.BackgroundJobKey.IsPresent().ThrowIfTrue("任务进行中,无法再次发起同步"); - - BackgroundJob.Enqueue(x => x.TodoByWerkAsync(request.Code)); - } + // var jobKey = $"hangfire:background:werk:{request.Code}"; + // + // await using var handler = await _redisCache.LockAsync(jobKey); + // if (handler.Acquired) + // { + // var werkInfo = await _dbContext.Queryable().Where(x => x.Werk == request.Code).SingleAsync(); + // werkInfo.ThrowIfNull("人事范围不存在"); + // + // werkInfo.BackgroundJobKey.IsPresent().ThrowIfTrue("任务进行中,无法再次发起同步"); + // + // BackgroundJob.Enqueue(x => x.TodoByWerkAsync(request.Code)); + // } } public async Task FaceUploadToSapAsync(FaceUploadToSapRequest request) { - var response = await _jinkoJipService.SyncFaceToSapAsync(request.UserCode, request.Base64); - if (response.OLX == "S") - { - var faceDbContext = _dbContext.ChangeDb("face"); - await faceDbContext.Updateable() - .SetColumns(x => x.IsSync == true) - .Where(x => x.UserCode == request.UserCode) - .ExecuteCommandAsync(); - } + // var response = await _jinkoJipService.SyncFaceToSapAsync(request.UserCode, request.Base64); + // if (response.OLX == "S") + // { + // var faceDbContext = _dbContext.ChangeDb("face"); + // await faceDbContext.Updateable() + // .SetColumns(x => x.IsSync == true) + // .Where(x => x.UserCode == request.UserCode) + // .ExecuteCommandAsync(); + // } } } \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoJipService.cs b/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoJipService.cs index 88d207b2..df9fb632 100644 --- a/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoJipService.cs +++ b/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoJipService.cs @@ -2,6 +2,7 @@ using System.Net.Http.Headers; using System.Security.Claims; using System.Text; +using Dlhis.Jip.Api.Requests; using Dlhis.ScheduledTask.Common.Request; using Dlhis.ScheduledTask.Common.Response; using Kurisu.AspNetCore.Utils.Extensions; diff --git a/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoSapService.cs b/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoSapService.cs index a808172b..7cd5d5d9 100644 --- a/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoSapService.cs +++ b/Src/Dlhis.ScheduledTask/Common/Services/Implements/JinkoSapService.cs @@ -1,5 +1,4 @@ using System.Net; -using System.Net.Http.Headers; using System.Text; using Dlhis.Entity.Basic.Entity; using Dlhis.ScheduledTask.Common.Dto; @@ -22,24 +21,11 @@ public class JinkoSapService : IJinkoSapService _httpClientFactory = httpClientFactory; } - private HttpClient GetHttpClient() - { - var httpClient = _httpClientFactory.CreateClient("jinko:sap"); - httpClient.BaseAddress = new Uri("http://sappipap01.jinkosolar.cn:50100"); - 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); - - return httpClient; - } - public async Task GetSapOrganizationsAsync() { const string apiUrl = "/RESTAdapter/Rest/EHR_ORGANIZATION/"; - var response = await GetHttpClient().PostAsync(apiUrl, new StringContent("{}", Encoding.UTF8, "application/json")); + var response = await _httpClientFactory.CreateClient("jinko:sap").PostAsync(apiUrl, new StringContent("{}", Encoding.UTF8, "application/json")); response.EnsureSuccessStatusCode(); string responseJson = await response.Content.ReadAsStringAsync(); @@ -52,7 +38,7 @@ public class JinkoSapService : IJinkoSapService { const string apiUrl = "/RESTAdapter/Rest/EHR_POSITION/"; - var response = await GetHttpClient().PostAsync(apiUrl, new StringContent("{}", Encoding.UTF8, "application/json")); + var response = await _httpClientFactory.CreateClient("jinko:sap").PostAsync(apiUrl, new StringContent("{}", Encoding.UTF8, "application/json")); response.EnsureSuccessStatusCode(); string responseJson = await response.Content.ReadAsStringAsync(); @@ -89,7 +75,7 @@ public class JinkoSapService : IJinkoSapService }; var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); - var response = await GetHttpClient().PostAsync(apiUrl, content); + var response = await _httpClientFactory.CreateClient("jinko:sap").PostAsync(apiUrl, content); if (response.StatusCode != HttpStatusCode.OK) { _logger.LogError("获取{Werk}人事范围数据异常:{error}", werk, await response.Content.ReadAsStringAsync()); @@ -138,7 +124,7 @@ public class JinkoSapService : IJinkoSapService }; var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); - var response = await GetHttpClient().PostAsync(apiUrl, content); + var response = await _httpClientFactory.CreateClient("jinko:sap").PostAsync(apiUrl, content); response.EnsureSuccessStatusCode(); var jsonResponse = await response.Content.ReadAsStringAsync(); diff --git a/Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj b/Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj index 83bae8f0..0376df7c 100644 --- a/Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj +++ b/Src/Dlhis.ScheduledTask/Dlhis.ScheduledTask.csproj @@ -25,6 +25,7 @@ + diff --git a/Src/Dlhis.ScheduledTask/Jobs/MealSupplementHandlerJob.cs b/Src/Dlhis.ScheduledTask/Jobs/MealSupplementHandlerJob.cs index bed6c098..4e97512f 100644 --- a/Src/Dlhis.ScheduledTask/Jobs/MealSupplementHandlerJob.cs +++ b/Src/Dlhis.ScheduledTask/Jobs/MealSupplementHandlerJob.cs @@ -49,8 +49,8 @@ public class MealSupplementHandlerJob : BaseJob .Where(x => x.UniqueId == item.UniqueId) .ExecuteCommandAsync(); - //后台任务获取人员 - BackgroundJob.Enqueue(x => x.TodoByCodeAsync(item.Code)); + //后台任务获取人员 todo + //BackgroundJob.Enqueue(x => x.TodoByCodeAsync(item.Code)); continue; } diff --git a/Src/Dlhis.ScheduledTask/Jobs/SyncBusinessTripJob.cs b/Src/Dlhis.ScheduledTask/Jobs/SyncBusinessTripJob.cs index 4f95110a..9b34d781 100644 --- a/Src/Dlhis.ScheduledTask/Jobs/SyncBusinessTripJob.cs +++ b/Src/Dlhis.ScheduledTask/Jobs/SyncBusinessTripJob.cs @@ -17,14 +17,14 @@ public class SyncBusinessTripJob : BaseJob /// protected override async Task RunAsync(IServiceProvider serviceProvider) { - var sapBusinessTripService = serviceProvider.GetService(); - - var identityDbContext = DbContext.ChangeDb("identity"); - var factories = await identityDbContext.Queryable().Where(x => !SqlFunc.IsNullOrEmpty(x.PCode)).ToListAsync(); - - foreach (var factory in factories) - { - await sapBusinessTripService.HandlerBusinessTripsByFactoryAsync(factory.Code); - } + // var sapBusinessTripService = serviceProvider.GetService(); + // + // var identityDbContext = DbContext.ChangeDb("identity"); + // var factories = await identityDbContext.Queryable().Where(x => !SqlFunc.IsNullOrEmpty(x.PCode)).ToListAsync(); + // + // foreach (var factory in factories) + // { + // await sapBusinessTripService.HandlerBusinessTripsByFactoryAsync(factory.Code); + // } } } \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/Jobs/SyncOriginCardInfoJob.cs b/Src/Dlhis.ScheduledTask/Jobs/SyncOriginCardInfoJob.cs index a680d697..ad5c3c53 100644 --- a/Src/Dlhis.ScheduledTask/Jobs/SyncOriginCardInfoJob.cs +++ b/Src/Dlhis.ScheduledTask/Jobs/SyncOriginCardInfoJob.cs @@ -1,9 +1,9 @@ using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Enums; +using Dlhis.Jip.Api; +using Dlhis.Jip.Api.Requests; using Dlhis.ScheduledTask.Attributes; -using Dlhis.ScheduledTask.Common.Request; -using Dlhis.ScheduledTask.Common.Services; using SqlSugar; namespace Dlhis.ScheduledTask.Jobs; @@ -14,11 +14,11 @@ namespace Dlhis.ScheduledTask.Jobs; [RecurringJob(nameof(SyncOriginCardInfoJob), "0 0/1 * * * ?", Name = "上传考勤记录")] public class SyncOriginCardInfoJob : BaseJob { - private readonly IJinkoJipService _jinkoJIPService; + private readonly IJinkoJipApi _jinkoJipApi; - public SyncOriginCardInfoJob(IJinkoJipService jinkoJIPService, IServiceProvider serviceProvider) : base(serviceProvider) + public SyncOriginCardInfoJob(IJinkoJipApi jinkoJipApi, IServiceProvider serviceProvider) : base(serviceProvider) { - _jinkoJIPService = jinkoJIPService; + _jinkoJipApi = jinkoJipApi; } protected override async Task RunAsync(IServiceProvider serviceProvider) @@ -34,7 +34,7 @@ public class SyncOriginCardInfoJob : BaseJob .Where(x => SqlFunc.Subqueryable() .Where(p => p.UniqueNo == x.DeviceUniqueNo) .Where(p => p.Type == DeviceTypeEnumType.Attendance || (p.Type == DeviceTypeEnumType.Door && p.AsAttendance)).Any()) - .Select((x, device) => new UploadAttendanceRequest + .Select((x, device) => new UploadAttendanceRequestItem { Id = x.Id, RaiseDateTime = x.RaiseDateTime, @@ -52,7 +52,7 @@ public class SyncOriginCardInfoJob : BaseJob try { var ids = items.Select(x => x.Id).ToList(); - var r = await _jinkoJIPService.UploadAttendancesAsync(items.ToList()); + var r = await _jinkoJipApi.UploadAttendancesAsync(new UploadAttendanceRequest { Data = items.ToList() }); if (r.OLX == "0") { await DbContext.Updateable() diff --git a/Src/Dlhis.ScheduledTask/Jobs/SyncPersonJob.cs b/Src/Dlhis.ScheduledTask/Jobs/SyncPersonJob.cs index 30fcd6ef..811df184 100644 --- a/Src/Dlhis.ScheduledTask/Jobs/SyncPersonJob.cs +++ b/Src/Dlhis.ScheduledTask/Jobs/SyncPersonJob.cs @@ -29,9 +29,10 @@ public class SyncPersonJob : BaseJob continue; } - var jobKey = BackgroundJob.Enqueue(x => x.TodoByWerkAsync(werk.Werk)); - werk.BackgroundJobKey = jobKey; - await DbContext.UpdateAsync(werk); + //todo + // var jobKey = BackgroundJob.Enqueue(x => x.TodoByWerkAsync(werk.Werk)); + // werk.BackgroundJobKey = jobKey; + // await DbContext.UpdateAsync(werk); Logger.LogInformation("SAP创建人事范围{werk}后台调度任务", werk.Werk); } diff --git a/Src/Dlhis.ScheduledTask/Packs/JinkoSapHttpClientPack.cs b/Src/Dlhis.ScheduledTask/Packs/JinkoSapHttpClientPack.cs index 71f02391..69c78040 100644 --- a/Src/Dlhis.ScheduledTask/Packs/JinkoSapHttpClientPack.cs +++ b/Src/Dlhis.ScheduledTask/Packs/JinkoSapHttpClientPack.cs @@ -6,16 +6,16 @@ namespace Dlhis.ScheduledTask.Packs; public class JinkoSapHttpClientPack : BaseAppPack { - public override void ConfigureServices(IServiceCollection services) { - services.AddHttpClient("jinko:sap", (sp, httpClient) => + services.AddHttpClient("jinko:sap", (_, httpClient) => { + httpClient.BaseAddress = new Uri($"http://sappipap01.jinkosolar.cn:50100"); httpClient.Timeout = TimeSpan.FromMinutes(10); - var credentials = $"{"EHS_USER"}:{"y3R1hd2h*RICAC"}"; + 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.ScheduledTask/Program.cs b/Src/Dlhis.ScheduledTask/Program.cs index 5289eb45..5f91b9e2 100644 --- a/Src/Dlhis.ScheduledTask/Program.cs +++ b/Src/Dlhis.ScheduledTask/Program.cs @@ -1,4 +1,3 @@ -using Dlhis.ScheduledTask.Common.Services; using Kurisu.AspNetCore.Startup; using Kurisu.AspNetCore.Utils.Extensions; @@ -21,11 +20,4 @@ public class Startup : DefaultStartup base.ConfigureServices(services); services.AddRedis(); } - - public override void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - base.Configure(app, env); - - var token = app.ApplicationServices.GetService().IssueToken(); - } } \ No newline at end of file