fix 优化考勤上传

This commit is contained in:
2024-03-09 13:53:12 +08:00
parent f9a7152c2b
commit fa408bdcab
6 changed files with 58 additions and 119 deletions

View File

@@ -13,6 +13,15 @@
"Url": "http://localhost:5002/api/gainfos/face?token=",
"Limit": 7200
},
"SqlSugarOptions": {
"DefaultConnectionString": "server=192.168.199.124;port=3306;userid=root;password=dlhis123;database=yikatong;charset=utf8mb4;",
"SlaveConnectionString": [],
"FaceConnectionString": "server=192.168.199.124;port=3306;userid=root;password=dlhis123;database=face;charset=utf8mb4;",
"Timeout": 30,
"SlowSqlTime": 1,
"EnableSqlLog": true,
"Generate": true
},
"SwaggerOptions": {
"Enable": true,
"Authority": "https://yikatong.isawesome.cn/oauth2",

View File

@@ -9,6 +9,7 @@ public class WerkEntity : SugarBaseEntity
/// <summary>
/// 人事范围
/// </summary>
[SugarColumn(UniqueGroupNameList = new[] { "idx_Werk_Werk" })]
public string Werk { get; set; }
/// <summary>

View File

@@ -61,18 +61,21 @@ public class SyncOriginCardInfoJob
}).Where(x => x.ZWORKCODE.IsPresent()).ToList();
var ids = requests.Select(x => x.Id).ToList();
var r = await _jinkoJIPService.UploadAttendancesAsync(requests);
if (r.OLX == "0")
if (ids.Any())
{
await _dbContext.Updateable<DeviceUploadLogEntity>()
.SetColumns(x => x.Sync == true)
.SetColumns(x => x.ModifiedTime == DateTime.Now)
.Where(x => ids.Contains(x.Id))
.ExecuteCommandAsync();
}
else
{
throw new Exception(r.OMS);
var r = await _jinkoJIPService.UploadAttendancesAsync(requests);
if (r.OLX == "0")
{
await _dbContext.Updateable<DeviceUploadLogEntity>()
.SetColumns(x => x.Sync == true)
.SetColumns(x => x.ModifiedTime == DateTime.Now)
.Where(x => ids.Contains(x.Id))
.ExecuteCommandAsync();
}
else
{
throw new Exception(r.OMS);
}
}
}
catch (Exception ex)

View File

@@ -12,26 +12,49 @@ public class JinkoJIPService : IJinkoJIPService
{
private readonly IHttpClientFactory _httpClientFactory;
private readonly ILogger<JinkoJIPService> _logger;
private readonly IConfiguration _configuration;
public JinkoJIPService(IHttpClientFactory httpClientFactory, ILogger<JinkoJIPService> logger)
public JinkoJIPService(IHttpClientFactory httpClientFactory, ILogger<JinkoJIPService> logger, IConfiguration configuration)
{
_httpClientFactory = httpClientFactory;
_logger = logger;
_configuration = configuration;
}
private HttpClient GetHttpClient()
{
var httpClient = _httpClientFactory.CreateClient();
//httpClient.BaseAddress = new Uri("");
httpClient.BaseAddress = new Uri(_configuration.GetSection("Jinko:Jip:BaseUrl").Value);
//httpClient.Timeout = TimeSpan.FromMinutes(10);
var key = "FACE-7409WIBX";
var secret = "be0a4b88-cd80-4509-b9b9-865205d0d3d8";
var key = _configuration.GetSection("Jinko:Jip:Key").Value;
var secret = _configuration.GetSection("Jinko:Jip:Secret").Value;
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", IssueJwt(key, secret, 5));
return httpClient;
}
public async Task<UploadAttendanceResponse> UploadAttendancesAsync(List<UploadAttendanceRequest> requests)
{
var body = new
{
T_DATA = requests,
};
var json = body.ToJson();
//_logger.LogInformation("上传考勤记录请求:{json}", json);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await GetHttpClient().PostAsync("/JIP/HCM/HCM_SWIPE_DATA_SAVE", content);
var responseJson = await response.Content.ReadAsStringAsync();
_logger.LogInformation("上传考勤记录响应:{json}", responseJson);
var r = responseJson.ToObject<UploadAttendanceResponse>();
return r;
}
private static string IssueJwt(string jwtKey, string jwtSecret, int mins)
{
@@ -60,25 +83,4 @@ public class JinkoJIPService : IJinkoJIPService
var securityToken = jwtHandler.CreateToken(descriptor);
return jwtHandler.WriteToken(securityToken);
}
public async Task<UploadAttendanceResponse> UploadAttendancesAsync(List<UploadAttendanceRequest> requests)
{
var body = new
{
T_DATA = requests,
};
var json = body.ToJson();
_logger.LogInformation("上传考勤记录请求:{json}", json);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await GetHttpClient().PostAsync("http://172.16.202.34:8000/JIP/HCM/HCM_SWIPE_DATA_SAVE", content);
var responseJson = await response.Content.ReadAsStringAsync();
_logger.LogInformation("上传考勤记录响应:{json}", responseJson);
var r = responseJson.ToObject<UploadAttendanceResponse>();
return r;
}
}

View File

@@ -1,75 +0,0 @@
using Kurisu.Core.ConfigurableOptions.Attributes;
namespace Dlhis.ScheduledTask.SyncSapInfo;
[Configuration]
public class SyncOptions
{
public string ServerUrl { get; private set; }
public string UserName { get; private set; }
public string Password { get; private set; }
public string SyncTime { get; private set; }
public int AttendanceUploadInterval { get; private set; }
public string AttendanceUploadUrl { get; private set; }
public string DlhisDatabase { get; private set; }
public DateTime BeginSyncDate { get; private set; }
public string EHRWebServiceUserName { get; set; }
public string EHRWebServicePassword { get; set; }
public string EHRInsertRecordApiUrl { get; set; }
public string EHRDeleteRecordApiUrl { get; set; }
public string EHRSavePhotoApiUrl { get; set; }
/// <summary>
/// 获取员工卡片信息RESUT地址
/// </summary>
public string EHR_GET_WORK_CARD_INFOApiUrl { get; set; }
/// <summary>
/// REST账号
/// </summary>
public string RestUserName { get; set; }
/// <summary>
/// REST密码
/// </summary>
public string RestPassword { get; set; }
private static int SafeParseInt(string value, int defaultValue = 0)
{
if (int.TryParse(value, out int i))
{
return i;
}
return defaultValue;
}
private static bool SafeParseBoolean(string value, bool defaultValue = false)
{
if (bool.TryParse(value, out var b))
{
return b;
}
return defaultValue;
}
private static DateTime SafeParseDate(string value, DateTime defaultValue)
{
if (DateTime.TryParse(value, out var b))
{
return b;
}
return defaultValue;
}
}

View File

@@ -47,13 +47,12 @@
"ClientSecret": "123456"
}
},
"SyncOptions": {
"ServerUrl": "http://172.16.7.58:8125",
"UserName": "admin_ws",
"Password": "jinkohr@2017",
"SyncTime": "00:00",
"AttendanceUploadInterval": "30",
"BeginSyncDate": "2020-5-1"
"JinkoOptions": {
"Jip": {
"BaseUrl": "http://172.16.202.34:8000",
"Key": "FACE-7409WIBX",
"Secret": "be0a4b88-cd80-4509-b9b9-865205d0d3d8"
}
},
"RedisOptions": {
"ConnectionString": "192.168.199.30:30115,defaultDatabase:1,password=dlhis123"