|
@@ -367,6 +367,26 @@ namespace GxPress.Repository.Implement
|
|
|
}
|
|
|
return departments;
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取所用上级部门
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <param name="departments"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<List<Department>> GetParentDepartmentById(int id, List<Department> departments)
|
|
|
+ {
|
|
|
+ var department = await _repository.GetAsync(id);
|
|
|
+ departments.Add(department);
|
|
|
+ if (department.ParentId == 0)
|
|
|
+ return departments;
|
|
|
+ department = await _repository.GetAsync(Q.Where(nameof(Entity.Department.ParentId), department.ParentId));
|
|
|
+ if (department == null)
|
|
|
+ return departments;
|
|
|
+ //departments.Add(item);
|
|
|
+ await GetParentDepartmentById(department.ParentId, departments);
|
|
|
+ return departments;
|
|
|
+ }
|
|
|
/// <summary>
|
|
|
/// 获取所用下级部门
|
|
|
/// </summary>
|
|
@@ -432,7 +452,7 @@ namespace GxPress.Repository.Implement
|
|
|
departmentIdsList.AddRange(departmentIds);
|
|
|
for (int i = 0; i < result.Result.Count; i++)
|
|
|
{
|
|
|
- for (int k = i + 1; k < result.Result.Count; k++)
|
|
|
+ for (int k = 0; k < result.Result.Count; k++)
|
|
|
{
|
|
|
if (result.Result[i].Item.Any(n => n.Id == result.Result[k].DepartmentId))
|
|
|
{
|
|
@@ -441,8 +461,8 @@ namespace GxPress.Repository.Implement
|
|
|
else if (result.Result[k].Item.Any(n => n.Id == result.Result[i].DepartmentId))
|
|
|
{
|
|
|
departmentIdsList.Add(result.Result[k].DepartmentId);
|
|
|
- result.Result[i].DepartmentId = result.Result[k].DepartmentId;
|
|
|
- result.Result[i].Item = result.Result[k].Item;
|
|
|
+ // result.Result[i].DepartmentId = result.Result[k].DepartmentId;
|
|
|
+ // result.Result[i].Item = result.Result[k].Item;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -452,7 +472,14 @@ namespace GxPress.Repository.Implement
|
|
|
}
|
|
|
}
|
|
|
departmentIdsList = await GetDepartmentDistinct(allDepartment.ToList(), departmentIdsList.Distinct().ToList());
|
|
|
- return await GetAllAsync(Q.WhereIn(nameof(Entity.Department.Id), departmentIdsList));
|
|
|
+ departmentIdsList = departmentIdsList.Distinct().ToList();
|
|
|
+ var departments = new List<Entity.Department>();
|
|
|
+ foreach (var departmentId in departmentIdsList)
|
|
|
+ {
|
|
|
+ var item = await GetParentDepartmentById(departmentId, new List<Entity.Department>());
|
|
|
+ departments.Add(item.Where(n=>n.ParentId==0).FirstOrDefault());
|
|
|
+ }
|
|
|
+ return departments;
|
|
|
//
|
|
|
}
|
|
|
|