fix 权限任务生成优化

This commit is contained in:
2024-12-09 18:32:09 +08:00
parent b54880db8c
commit 010eae6bd7
21 changed files with 1419 additions and 880 deletions

View File

@@ -0,0 +1,109 @@
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Entities;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.Basic;
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<DepartmentEntity> data)
{
var result = new List<string> { current };
InternalHandlerCodes(current, data, result);
return result;
static void InternalHandlerCodes(string internalCurrent, List<DepartmentEntity> 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<DepartmentEntity> data)
{
var result = new List<string> { current };
InternalHandlerCodes(current, data, result);
return result;
static void InternalHandlerCodes(string internalCurrent, List<DepartmentEntity> 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);
}
}
}
}