From 9b32ec28db94bd5cd514ef87ce572a047773942d Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 28 Nov 2024 19:12:52 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=A7=BB=E9=99=A4=E5=B9=B6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/DevicePermissionService.cs | 47 +++++++++++++++---- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 67cd882b..aa484036 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -216,10 +216,15 @@ public class DevicePermissionService : IDevicePermissionService var current = await GetAssignDeviceCodesInternalAsync(userNos); var devices = await _dbContext.Queryable().Where(x => x.Enable).ToListAsync(); - var waitAddTasks = new ConcurrentBag(); - var waitDeleteTasks = new ConcurrentBag(); + // var waitAddTasks = new ConcurrentBag(); + // var waitDeleteTasks = new ConcurrentBag(); - Parallel.ForEach(userNos, userNo => + var waitAddTasks = new List(); + var waitDeleteTasks = new List(); + + // Parallel.ForEach(userNos, userNo => + // { + foreach (var userNo in userNos) { before.TryGetValue(userNo, out var beforeTenantDeviceCodes); beforeTenantDeviceCodes ??= new List(); @@ -277,7 +282,8 @@ public class DevicePermissionService : IDevicePermissionService Source = DeviceTaskSourceEnumType.Manually })); } - }); + } + // }); if (waitAddTasks.Any()) await ChunkInsertAsync(waitAddTasks.ToList()); @@ -621,8 +627,30 @@ public class DevicePermissionService : IDevicePermissionService var deviceRelationships = await _dbContext.Queryable().ToListAsync(); var departments = await _dbContext.Queryable().ToListAsync(); - var result = new ConcurrentDictionary>(); - Parallel.ForEach(gainfos, gainfo => + //var result = new ConcurrentDictionary>(); + + // Parallel.ForEach(gainfos, new ParallelOptions { MaxDegreeOfParallelism = 4 }, gainfo => + // { + // var gainfoDto = new GainfoDto + // { + // Id = gainfo.Id, + // No = gainfo.No, + // Code = gainfo.Code, + // Name = gainfo.Name, + // Workplace = gainfo.Workplace, + // Factory = gainfo.Factory, + // DepartmentNo = gainfo.DepartmentNo, + // IsOutsource = gainfo.Type == GainfoUserTypeEnumType.Outsource, + // EnableFactoryPermission = enableFactoryPermissions.FirstOrDefault(x => x.TenantId == gainfo.Factory)?.EnableOutsourceDown ?? true + // }; + // + // var codes = GetAssignDeviceCodesInternal(gainfoDto, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships, registries, devices, departments); + // result.TryAdd(gainfo.No, codes); + // }); + // + // return result.ToDictionary(x => x.Key, x => x.Value); + var result = new Dictionary>(); + foreach (var gainfo in gainfos) { var gainfoDto = new GainfoDto { @@ -638,12 +666,13 @@ public class DevicePermissionService : IDevicePermissionService }; var codes = GetAssignDeviceCodesInternal(gainfoDto, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships, registries, devices, departments); - result.TryAdd(gainfo.No, codes); - }); + result.Add(gainfo.No, codes); + } - return result.ToDictionary(x => x.Key, x => x.Value); + return result; } + private static List GetAssignDeviceCodesInternal( GainfoDto gainfo, List gainfoGroupRelationships,