diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 2373f0e1..63fbf923 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -532,6 +532,7 @@ public class DevicePermissionService : IDevicePermissionService private async Task> GetPermissionUserNosAsync() { var permissions = await _dbContext.Queryable().ToListAsync(); + //User var userNos = permissions.Where(x => x.AssignType == AssignTypeEnumType.User).Select(x => x.AssignValue).ToList(); @@ -616,8 +617,13 @@ public class DevicePermissionService : IDevicePermissionService if (assignType == AssignTypeEnumType.Department) { //递归向上获取 assignValue = department.No - var departmentNos = new List { assignValue }; - DepartmentRecursionGetPNo(assignValue, departments, departmentNos); + var arr = assignValue.Split(":"); + var tenantId = arr.First(); + var currentDepartmentNo = arr.Last(); + var departmentNos = new List { currentDepartmentNo }; + DepartmentRecursionGetPNo(currentDepartmentNo, departments, departmentNos); + + departmentNos = departmentNos.Select(x => tenantId + ":" + x).ToList(); tenantDevicePermissions = devicePermissions .Where(x => x.UniqueType == uniqueType) @@ -656,13 +662,11 @@ public class DevicePermissionService : IDevicePermissionService void DepartmentRecursionGetPNo(string current, List data, List result) { var p = data.FirstOrDefault(x => x.No == current)?.PNo; - if (!p.IsPresent()) + if (p.IsPresent()) { - return; + result.Add(p); + DepartmentRecursionGetPNo(p, data, result); } - - result.Add(p); - DepartmentRecursionGetPNo(p, data, result); } }