131 lines
4.1 KiB
C#
131 lines
4.1 KiB
C#
using Dlhis.Basic.Organization.Dto;
|
|
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<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);
|
|
}
|
|
}
|
|
} |