diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs index 99df36c5..49609e4b 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs @@ -158,7 +158,7 @@ public class GainfoGroupService : IGainfoGroupService var devices = await _dbContext.Queryable().Where(x => deviceCodes.Contains(x.Code)).ToListAsync(); var userTenantDeviceCodes = usersToDelete.IsPresent() && dps.Exists(x => x.AssignType != AssignTypeEnumType.Tenant) - ? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(beforeUserNos.Union(presentUserNos).ToList(), null, groupCode.ToString(), AssignTypeEnumType.Group) + ? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(beforeUserNos.Union(presentUserNos).ToList()) : new Dictionary>(); var addTasks = new List(); @@ -167,7 +167,13 @@ public class GainfoGroupService : IGainfoGroupService { foreach (var item in usersToDelete) { - var myDeviceCodes = userTenantDeviceCodes[item].SelectMany(x => x.AssignTypes).SelectMany(x => x.Codes); + var permissions = userTenantDeviceCodes[item].ToList(); + foreach (var permission in permissions) + { + permission.AssignTypes = permission.AssignTypes.Where(p => !gainfoGroupCodes.Contains(p.AssignValue)).ToList(); + } + + var myDeviceCodes = permissions.SelectMany(x => x.AssignTypes).SelectMany(x => x.Codes); if (myDeviceCodes.Any(x => x == device.Code)) { continue;