优化部门类属性和方法以支持空值

- 将 `Parent` 和 `ParentName` 属性的返回类型更改为可空类型。
- 添加 `ChildList` 属性以获取子部门列表。
- 新增 `subset` 属性表示是否存在子集。
- 实现 `FindAllByParentId` 方法以根据父级 ID 查找部门,并添加实体缓存逻辑。
This commit is contained in:
猿人易 2025-02-07 14:10:42 +08:00
parent ff96344a01
commit ab2966ec25
1 changed files with 25 additions and 2 deletions

View File

@ -112,11 +112,11 @@ public partial class Department : Entity<Department>, ITenantSource
/// <summary>父级</summary>
[XmlIgnore, ScriptIgnore, IgnoreDataMember]
public Department Parent => Extends.Get(nameof(Department), k => FindByID(ParentID));
public Department? Parent => Extends.Get(nameof(Department), k => FindByID(ParentID));
/// <summary>父级</summary>
[Map(__.ParentID, typeof(Department), __.ID)]
public String ParentName => Parent?.ToString();
public String? ParentName => Parent?.ToString();
/// <summary>父级路径</summary>
public String ParentPath
@ -151,6 +151,18 @@ public partial class Department : Entity<Department>, ITenantSource
return p + "/" + Name;
}
}
/// <summary>
/// 获取子集合
/// </summary>
[XmlIgnore, ScriptIgnore, IgnoreDataMember]
public IEnumerable<Department>? ChildList => Extends.Get(nameof(ChildList), k => FindAllByParentId(ID).OrderBy(e => e.ID));
/// <summary>
///是否存在子集
/// </summary>
[XmlIgnore, ScriptIgnore, IgnoreDataMember]
public Boolean subset { get; set; }
#endregion
#region
@ -231,6 +243,17 @@ public partial class Department : Entity<Department>, ITenantSource
return FindAll(_.TenantId == tenantId);
}
/// <summary>根据所属父级Id查找</summary>
/// <param name="parentID">所属父级Id</param>
/// <returns>实体列表</returns>
public static IList<Department> FindAllByParentId(Int32 parentID)
{
// 实体缓存
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.ParentID == parentID);
return FindAll(_.ParentID == parentID);
}
#endregion
#region