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 HandlerGainfoGroupNextCodes(Guid current, List data) { var result = new List { current }; InternalHandlerCodes(current, data, result); return result; static void InternalHandlerCodes(Guid internalCurrent, List internalData, List 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 HandlerGainfoGroupPreviousCodes(Guid current, List data) { var result = new List { current }; InternalHandlerCodes(current, data, result); return result; static void InternalHandlerCodes(Guid internalCurrent, List internalData, List 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 HandlerDepartmentNextCodes(string current, List data) { var result = new List { current }; InternalHandlerCodes(current, data, result); return result; static void InternalHandlerCodes(string internalCurrent, List internalData, List 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 HandlerDepartmentPreviousCodes(string current, List data) { var result = new List { current }; InternalHandlerCodes(current, data, result); return result; static void InternalHandlerCodes(string internalCurrent, List internalData, List internalResult) { var pno = internalData.FirstOrDefault(x => x.No == internalCurrent)?.PNo; if (pno.IsEmpty()) { return; } internalResult.Add(pno); InternalHandlerCodes(pno, internalData, internalResult); } } public static List HandlerDeviceGroupNextCodes(Guid current, List data) { var result = new List { current }; InternalHandlerCodes(current, data, result); return result; static void InternalHandlerCodes(Guid internalCurrent, List internalData, List 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 HandlerDeviceGroupPreviousCodes(Guid current, List data) { var result = new List { current }; InternalHandlerCodes(current, data, result); return result; static void InternalHandlerCodes(Guid internalCurrent, List internalData, List internalResult) { var pno = internalData.FirstOrDefault(x => x.Code == internalCurrent)?.PCode; if (!pno.HasValue) { return; } internalResult.Add(pno.Value); InternalHandlerCodes(pno.Value, internalData, internalResult); } } }