From aa49e131a9ea48c52a5afed0aa163418c00e7986 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 10 Dec 2024 17:45:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E8=BF=94=E5=9B=9E=E5=85=B7=E4=BD=93?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=92=8C=E5=88=A0=E9=99=A4=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DeviceGroupsController.cs | 4 ++-- .../Device/Services/IDeviceGroupService.cs | 2 +- .../Services/Implements/DeviceGroupService.cs | 18 +++++++++++------- .../GroupPermissionAnalyzeService.cs | 5 ++++- .../Controllers/GainfoGroupsController.cs | 5 +++-- .../Services/IGainfoGroupService.cs | 5 +++-- .../Services/Implements/GainfoGroupService.cs | 15 +++++++++++---- 7 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Controllers/DeviceGroupsController.cs b/Src/Dlhis.Basic/Device/Controllers/DeviceGroupsController.cs index bf1a96c5..6a567eb3 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DeviceGroupsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DeviceGroupsController.cs @@ -70,9 +70,9 @@ public class DeviceGroupsController : ControllerBase [HttpPost("assign")] [Transactional] [CrossTenant] - public async Task AssignDevicesAsync(DeviceAssignRequest request) + public async Task AssignDevicesAsync(DeviceAssignRequest request) { - await _deviceGroupService.AssignDevicesAsync(request); + return await _deviceGroupService.AssignDevicesAsync(request); } /// diff --git a/Src/Dlhis.Basic/Device/Services/IDeviceGroupService.cs b/Src/Dlhis.Basic/Device/Services/IDeviceGroupService.cs index 5f0a4368..5a2f0a5b 100644 --- a/Src/Dlhis.Basic/Device/Services/IDeviceGroupService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDeviceGroupService.cs @@ -12,7 +12,7 @@ public interface IDeviceGroupService : IScopeDependency Task> GetDevicesByGroupCodeAsync(Guid code); - Task AssignDevicesAsync(DeviceAssignRequest requests); + Task AssignDevicesAsync(DeviceAssignRequest requests); Task> GetAppointmentGroupsAsync(); } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs index 383fdb60..ec2f47d8 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs @@ -97,7 +97,7 @@ public class DeviceGroupService : IDeviceGroupService } - public async Task AssignDevicesAsync(DeviceAssignRequest request) + public async Task AssignDevicesAsync(DeviceAssignRequest request) { var group = await _dbContext.Queryable().Where(x => x.Code == request.GroupCode).SingleAsync(); group.ThrowIfNull("设备分组不存在,无法进行分配"); @@ -118,10 +118,10 @@ public class DeviceGroupService : IDeviceGroupService await _dbContext.InsertAsync(entities); - await PermissionResetAsync(request.GroupCode); + return await PermissionResetAsync(request.GroupCode); } - private async Task PermissionResetAsync(Guid groupCode) + private async Task PermissionResetAsync(Guid groupCode) { var deviceGroups = RecursionHelper.HandlerDeviceGroupPreviousCodes(groupCode, await _dbContext.Queryable().ToListAsync()); @@ -130,6 +130,8 @@ public class DeviceGroupService : IDeviceGroupService .Where(x => deviceGroups.Contains(x.UniqueValue)) .ToListAsync(); + var result = new List(); + if (dps.Any()) { var type = dps.First().Type; @@ -143,7 +145,7 @@ public class DeviceGroupService : IDeviceGroupService var codes = devicePermissionGroup.Select(x => x.UniqueValue).Distinct().ToList(); - await analyzeService.AnalyzeAsync(new DevicePermissionSaveRequest + var r = await analyzeService.AnalyzeAsync(new DevicePermissionSaveRequest { AssignType = assignType, AssignValue = assignValue, @@ -152,10 +154,12 @@ public class DeviceGroupService : IDeviceGroupService TenantId = tenantId, Type = type }); - } + + result.Add(r); + } } - - + + return new DevicePermissionAssignResponse(result.Sum(x => x.AddCount), result.Sum(x => x.DeleteCount)); } public async Task> GetDevicesByGroupCodeAsync(Guid code) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/PermissionAnalyze/GroupPermissionAnalyzeService.cs b/Src/Dlhis.Basic/Device/Services/Implements/PermissionAnalyze/GroupPermissionAnalyzeService.cs index d68de6f8..4cb72cf9 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/PermissionAnalyze/GroupPermissionAnalyzeService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/PermissionAnalyze/GroupPermissionAnalyzeService.cs @@ -18,10 +18,13 @@ public class GroupPermissionAnalyzeService : BasePermissionAnalyzeService var gainfoGroups = await DbContext.Queryable().ToListAsync(); var gainfoGroupCodes = RecursionHelper.HandlerGainfoGroupNextCodes(code, gainfoGroups); - return await DbContext.Queryable() + var gainfoUserNos = await DbContext.Queryable() .Where(x => gainfoGroupCodes.Contains(x.GroupCode)) .Select(x => x.UserNo) .Distinct() .ToListAsync(); + + + return await DbContext.Queryable().Where(x => gainfoUserNos.Contains(x.No)).Select(x => x.No).ToListAsync(); } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs index 1df53980..3134714c 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoGroupsController.cs @@ -1,4 +1,5 @@ using Dlhis.Basic.Device.Filters; +using Dlhis.Basic.Device.Response; using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; using Dlhis.Basic.Organization.Services; @@ -76,8 +77,8 @@ public class GainfoGroupsController : ControllerBase [AssignPermissionLimit] [Transactional] [CrossTenant] - public async Task AssignGainfosAsync(GainfoAssignRequest request) + public async Task AssignGainfosAsync(GainfoAssignRequest request) { - await _gainfoGroupService.AssignGainfosAsync(request); + return await _gainfoGroupService.AssignGainfosAsync(request); } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoGroupService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoGroupService.cs index 258089ec..37f49505 100644 --- a/Src/Dlhis.Basic/Organization/Services/IGainfoGroupService.cs +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoGroupService.cs @@ -1,4 +1,5 @@ -using Dlhis.Basic.Organization.Request; +using Dlhis.Basic.Device.Response; +using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; namespace Dlhis.Basic.Organization.Services; @@ -11,7 +12,7 @@ public interface IGainfoGroupService : IScopeDependency Task> GetGainfosByGroupAsync(Guid code); - Task AssignGainfosAsync(GainfoAssignRequest request); + Task AssignGainfosAsync(GainfoAssignRequest request); Task> GetGainfoGroupsByUserCodeAsync(string userCode); } diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs index dd195f8b..2f3e7465 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoGroupService.cs @@ -1,5 +1,6 @@ using Dlhis.Basic.Device; using Dlhis.Basic.Device.Request; +using Dlhis.Basic.Device.Response; using Dlhis.Basic.Device.Services; using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; @@ -75,7 +76,7 @@ public class GainfoGroupService : IGainfoGroupService return list; } - public async Task AssignGainfosAsync(GainfoAssignRequest request) + public async Task AssignGainfosAsync(GainfoAssignRequest request) { if (request.UserNos.IsPresent()) { @@ -106,11 +107,11 @@ public class GainfoGroupService : IGainfoGroupService await _dbContext.InsertAsync(entities); - await PermissionResetAsync(request.GroupCode); + return await PermissionResetAsync(request.GroupCode); } - private async Task PermissionResetAsync(Guid groupCode) + private async Task PermissionResetAsync(Guid groupCode) { var gainfoGroups = RecursionHelper.HandlerGainfoGroupPreviousCodes(groupCode, await _dbContext.Queryable().ToListAsync()).Select(x => x.ToString()); @@ -121,6 +122,8 @@ public class GainfoGroupService : IGainfoGroupService var analyzeService = _namedResolver.GetService(PermissionAnalyzeConstants.GetTypeName(AssignTypeEnumType.Group)); + var result = new List(); + foreach (var devicePermissionGroup in dps.GroupBy(x => new { x.AssignValue, x.TenantId, x.UniqueType, x.Type })) { var assignValue = devicePermissionGroup.Key.AssignValue; @@ -130,7 +133,7 @@ public class GainfoGroupService : IGainfoGroupService var codes = devicePermissionGroup.Select(x => x.UniqueValue).Distinct().ToList(); - await analyzeService.AnalyzeAsync(new DevicePermissionSaveRequest + var r = await analyzeService.AnalyzeAsync(new DevicePermissionSaveRequest { AssignType = AssignTypeEnumType.Group, AssignValue = assignValue, @@ -139,7 +142,11 @@ public class GainfoGroupService : IGainfoGroupService TenantId = tenantId, Type = type }); + + result.Add(r); } + + return new DevicePermissionAssignResponse(result.Sum(x => x.AddCount), result.Sum(x => x.DeleteCount)); }