fix 权限任务生成优化
This commit is contained in:
109
Src/Dlhis.Basic/RecursionHelper.cs
Normal file
109
Src/Dlhis.Basic/RecursionHelper.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user