Files
jinko.yikatong/Src/Dlhis.Basic/RecursionHelper.cs
2024-12-13 16:32:26 +08:00

130 lines
4.1 KiB
C#

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);
}
}
}
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);
}
}
}