feat 例外人员权限增加到期时间,厂区配置增加生日券,外包自动离场报名单
This commit is contained in:
21
Src/Dlhis.Basic/Utils/JinkoSapHttpClientPack.cs
Normal file
21
Src/Dlhis.Basic/Utils/JinkoSapHttpClientPack.cs
Normal file
@@ -0,0 +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);
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
93
Src/Dlhis.Basic/Utils/ObfuscateProviderJsonConverter.cs
Normal file
93
Src/Dlhis.Basic/Utils/ObfuscateProviderJsonConverter.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System.Security.Claims;
|
||||
using Kurisu.AspNetCore;
|
||||
using Kurisu.AspNetCore.Authentication.Abstractions;
|
||||
using Kurisu.AspNetCore.Cache;
|
||||
using Kurisu.AspNetCore.Utils.Converters;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Dlhis.Basic.Utils;
|
||||
|
||||
public class ObfuscateProviderJsonConverter : ObfuscateJsonConverter
|
||||
{
|
||||
private readonly int _last;
|
||||
|
||||
/// <inheritdoc />
|
||||
public ObfuscateProviderJsonConverter(int last) : base(last)
|
||||
{
|
||||
_last = last;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||
{
|
||||
var sp = App.GetServiceProvider(true);
|
||||
var cache = sp.GetService<RedisCache>();
|
||||
var currentUser = sp.GetService<ICurrentUser>();
|
||||
|
||||
var range = cache.ListRange("datapermission:role");
|
||||
if (range.Contains(currentUser.GetUserClaim(ClaimTypes.Role)))
|
||||
{
|
||||
writer.WriteValue(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
var v = value?.ToString() ?? string.Empty;
|
||||
var vc = v.ToCharArray().Reverse().ToList();
|
||||
|
||||
for (int i = 0; i < vc.Count; i++)
|
||||
{
|
||||
if (i + 1 > _last)
|
||||
{
|
||||
vc[i] = '*';
|
||||
}
|
||||
}
|
||||
|
||||
vc.Reverse();
|
||||
v = string.Join("", vc);
|
||||
|
||||
writer.WriteValue(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ObfuscateProviderOnlyAdminJsonConverter : ObfuscateJsonConverter
|
||||
{
|
||||
private readonly int _last;
|
||||
|
||||
/// <inheritdoc />
|
||||
public ObfuscateProviderOnlyAdminJsonConverter(int last) : base(last)
|
||||
{
|
||||
_last = last;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||
{
|
||||
var sp = App.GetServiceProvider(true);
|
||||
var currentUser = sp.GetService<ICurrentUser>();
|
||||
|
||||
var role = currentUser.GetRole();
|
||||
if (role is "admin" or "tenant-admin")
|
||||
{
|
||||
writer.WriteValue(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
var v = value?.ToString() ?? string.Empty;
|
||||
var vc = v.ToCharArray().Reverse().ToList();
|
||||
|
||||
for (int i = 0; i < vc.Count; i++)
|
||||
{
|
||||
if (i + 1 > _last)
|
||||
{
|
||||
vc[i] = '*';
|
||||
}
|
||||
}
|
||||
|
||||
vc.Reverse();
|
||||
v = string.Join("", vc);
|
||||
|
||||
writer.WriteValue(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
16
Src/Dlhis.Basic/Utils/ParallelExtensions.cs
Normal file
16
Src/Dlhis.Basic/Utils/ParallelExtensions.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
namespace Dlhis.Basic.Utils;
|
||||
|
||||
public static class ParallelExtensions
|
||||
{
|
||||
public static void ParallelForEach<T>(this IEnumerable<T> source, Action<T> action)
|
||||
{
|
||||
#if DEBUG
|
||||
foreach (var item in source)
|
||||
{
|
||||
action.Invoke(item);
|
||||
}
|
||||
#else
|
||||
Parallel.ForEach(source, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, action);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
131
Src/Dlhis.Basic/Utils/RecursionHelper.cs
Normal file
131
Src/Dlhis.Basic/Utils/RecursionHelper.cs
Normal file
@@ -0,0 +1,131 @@
|
||||
using Dlhis.Basic.Organization.Dto;
|
||||
using Dlhis.Entity.Basic.Entity;
|
||||
using Dlhis.Entity.Device.Entities;
|
||||
using Kurisu.AspNetCore.Utils.Extensions;
|
||||
|
||||
namespace Dlhis.Basic.Utils;
|
||||
|
||||
public static class RecursionHelper
|
||||
{
|
||||
public static List<Guid> HandlerGainfoGroupNextCodes(Guid current, List<GainfoGroupEntity> data)
|
||||
{
|
||||
var result = new List<Guid> { current };
|
||||
|
||||
InternalHandlerCodes(current, data, result);
|
||||
|
||||
return result;
|
||||
|
||||
static void InternalHandlerCodes(Guid internalCurrent, List<GainfoGroupEntity> internalData, List<Guid> internalResult)
|
||||
{
|
||||
var next = internalData.Where(x => x.PCode == internalCurrent);
|
||||
foreach (var item in next)
|
||||
{
|
||||
internalResult.Add(item.Code);
|
||||
InternalHandlerCodes(item.Code, internalData, internalResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Guid> HandlerGainfoGroupPreviousCodes(Guid current, List<GainfoGroupEntity> data)
|
||||
{
|
||||
var result = new List<Guid> { current };
|
||||
|
||||
InternalHandlerCodes(current, data, result);
|
||||
|
||||
return result;
|
||||
|
||||
static void InternalHandlerCodes(Guid internalCurrent, List<GainfoGroupEntity> internalData, List<Guid> internalResult)
|
||||
{
|
||||
var pno = internalData.FirstOrDefault(x => x.Code == internalCurrent)?.PCode;
|
||||
if (!pno.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
internalResult.Add(pno.Value);
|
||||
InternalHandlerCodes(pno.Value, internalData, internalResult);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static List<string> HandlerDepartmentNextCodes(string current, List<DepartmentDto> data)
|
||||
{
|
||||
var result = new List<string> { current };
|
||||
|
||||
InternalHandlerCodes(current, data, result);
|
||||
|
||||
return result;
|
||||
|
||||
static void InternalHandlerCodes(string internalCurrent, List<DepartmentDto> internalData, List<string> internalResult)
|
||||
{
|
||||
var next = internalData.Where(x => x.PNo == internalCurrent);
|
||||
foreach (var item in next)
|
||||
{
|
||||
internalResult.Add(item.No);
|
||||
InternalHandlerCodes(item.No, internalData, internalResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static List<string> HandlerDepartmentPreviousCodes(string current, List<DepartmentDto> data)
|
||||
{
|
||||
var result = new List<string> { current };
|
||||
|
||||
InternalHandlerCodes(current, data, result);
|
||||
|
||||
return result;
|
||||
|
||||
static void InternalHandlerCodes(string internalCurrent, List<DepartmentDto> internalData, List<string> internalResult)
|
||||
{
|
||||
var pno = internalData.FirstOrDefault(x => x.No == internalCurrent)?.PNo;
|
||||
if (pno.IsEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
internalResult.Add(pno);
|
||||
InternalHandlerCodes(pno, internalData, internalResult);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static List<Guid> HandlerDeviceGroupNextCodes(Guid current, List<DeviceGroupEntity> data)
|
||||
{
|
||||
var result = new List<Guid> { current };
|
||||
|
||||
InternalHandlerCodes(current, data, result);
|
||||
|
||||
return result;
|
||||
|
||||
static void InternalHandlerCodes(Guid internalCurrent, List<DeviceGroupEntity> internalData, List<Guid> internalResult)
|
||||
{
|
||||
var next = internalData.Where(x => x.PCode == internalCurrent);
|
||||
foreach (var item in next)
|
||||
{
|
||||
internalResult.Add(item.Code);
|
||||
InternalHandlerCodes(item.Code, internalData, internalResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Guid> HandlerDeviceGroupPreviousCodes(Guid current, List<DeviceGroupEntity> data)
|
||||
{
|
||||
var result = new List<Guid> { current };
|
||||
|
||||
InternalHandlerCodes(current, data, result);
|
||||
|
||||
return result;
|
||||
|
||||
static void InternalHandlerCodes(Guid internalCurrent, List<DeviceGroupEntity> internalData, List<Guid> internalResult)
|
||||
{
|
||||
var pno = internalData.FirstOrDefault(x => x.Code == internalCurrent)?.PCode;
|
||||
if (!pno.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
internalResult.Add(pno.Value);
|
||||
InternalHandlerCodes(pno.Value, internalData, internalResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user