From 13f00c38c459f813a5dcb9a4b0a1ea083516397a Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 11 Dec 2024 14:11:50 +0800 Subject: [PATCH] =?UTF-8?q?fix=20analyze=E6=95=B0=E6=8D=AE=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/BasePermissionAnalyzeService.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/BasePermissionAnalyzeService.cs b/Src/Dlhis.Basic/Device/Services/Implements/BasePermissionAnalyzeService.cs index d90d7e64..d4c72dd7 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/BasePermissionAnalyzeService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/BasePermissionAnalyzeService.cs @@ -55,16 +55,18 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService ? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos, request.GetActualAssignValue(), request.AssignType) : new Dictionary>(); - var tasks = new List(); + var tasksToAdd = new List(); + var tasksToDelete = new List(); foreach (var gainfoNo in gainfoNos) { + IEnumerable currentDevicesToDelete = devicesToDelete; if (userTenantDeviceCodes.Any()) { var myDeviceCodes = userTenantDeviceCodes[gainfoNo].SelectMany(x => x.AssignTypes).SelectMany(x => x.Codes); - devicesToDelete = devicesToDelete.Where(p => devicesToDelete.Select(x => x.Code).Except(myDeviceCodes).Contains(p.Code)).ToList(); + currentDevicesToDelete = devicesToDelete.Where(p => codesToDelete.Except(myDeviceCodes).Contains(p.Code)); } - tasks.AddRange(devicesToAdd.Select(x => new DeviceTaskEntity + tasksToAdd.AddRange(devicesToAdd.Select(x => new DeviceTaskEntity { Type = DeviceTaskEnumType.Add, DeviceType = x.Type, @@ -80,7 +82,7 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService TenantId = x.TenantId, }).ToList()); - tasks.AddRange(devicesToDelete.Select(x => new DeviceTaskEntity + tasksToDelete.AddRange(currentDevicesToDelete.Select(x => new DeviceTaskEntity { Type = DeviceTaskEnumType.Delete, DeviceType = x.Type, @@ -97,10 +99,11 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService }).ToList()); } - await ChunkInsertAsync(tasks); + await ChunkInsertAsync(tasksToAdd); + await ChunkInsertAsync(tasksToDelete); await PersistDataAsync(dps, request); - return new DevicePermissionAssignResponse(devicesToAdd.Count, devicesToDelete.Count); + return new DevicePermissionAssignResponse(tasksToAdd.Count, tasksToDelete.Count); }