From 342b8ca0e7f52e6c847be9ebd0bd39557088c383 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 12 Dec 2024 17:14:46 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=B8=AD=E6=96=87=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Device/Dtos/DevicePermissionSourceDto.cs | 2 + .../GainfoDevicePermissionResponse.cs | 6 +++ .../Implements/GainfoPermissionService.cs | 44 ++++++++++++++++--- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Dtos/DevicePermissionSourceDto.cs b/Src/Dlhis.Basic/Device/Dtos/DevicePermissionSourceDto.cs index 518cf49d..1f4875ec 100644 --- a/Src/Dlhis.Basic/Device/Dtos/DevicePermissionSourceDto.cs +++ b/Src/Dlhis.Basic/Device/Dtos/DevicePermissionSourceDto.cs @@ -24,4 +24,6 @@ public class DevicePermissionSourceTypeDto public DeviceAssignmentTypeEnumType UniqueType { get; set; } public IEnumerable Codes { get; set; } + + public string CodeDesc { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Response/GainfoDevicePermissionResponse.cs b/Src/Dlhis.Basic/Organization/Response/GainfoDevicePermissionResponse.cs index 0a49cbd3..25b41166 100644 --- a/Src/Dlhis.Basic/Organization/Response/GainfoDevicePermissionResponse.cs +++ b/Src/Dlhis.Basic/Organization/Response/GainfoDevicePermissionResponse.cs @@ -22,6 +22,12 @@ public class GainfoDevicePermissionResponse /// 心跳间隔 /// public int HeartbeatInterval { get; set; } + + + /// + /// 部署点 + /// + public string DeployPlace { get; set; } /// /// 设备机功能类型 diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs index 69691702..d1f0e97a 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs @@ -133,6 +133,15 @@ public class GainfoPermissionService : IGainfoPermissionService .Select((d, dr) => new GainfoDevicePermissionResponse { Factory = d.TenantId }, true) .ToPageListAsync(request); + var deviceGroups = await _dbContext.Queryable().Select(x => new { x.Code, x.Name }).ToListAsync(); + var departments = permissions.Any(x => x.AssignTypes.Any(p => p.AssignType == AssignTypeEnumType.Department)) + ? await _dbContext.Queryable().Select(x => new { x.No, x.Name }).ToListAsync() + : new[] { new { No = string.Empty, Name = string.Empty } }.ToList(); + + var userGroups = permissions.Any(x => x.AssignTypes.Any(p => p.AssignType == AssignTypeEnumType.Group)) + ? await _dbContext.Queryable().Select(x => new { x.Code, x.Name }).ToListAsync() + : new[] { new { Code = Guid.Empty, Name = string.Empty } }.ToList(); + page.Data.ForEach(item => { var permission = permissions.First(x => x.Tenant == item.Factory); @@ -140,14 +149,35 @@ public class GainfoPermissionService : IGainfoPermissionService item.Source = new DevicePermissionSourceDto { Factory = item.Factory, - Types = permission.AssignTypes.Where(x => x.Codes.Any(p => p == item.Code)).Select(x => new DevicePermissionSourceTypeDto + Types = permission.AssignTypes.Where(x => x.Codes.Any(p => p == item.Code)).Select(x => { - AssignType = x.AssignType, - AssignValue = x.AssignValue, - UniqueType = x.UniqueType, - Codes = x.UniqueType == DeviceAssignmentTypeEnumType.Device - ? x.Codes.Where(p => p == item.Code) - : x.Codes.Take(1) + var codeDesc = x.UniqueType == DeviceAssignmentTypeEnumType.Device + ? item.DeployPlace + : deviceGroups.First(p => p.Code == x.Codes.First()).Name; + + var currentAssignValue = x.AssignValue; + if (x.AssignType == AssignTypeEnumType.Department) + { + currentAssignValue = departments.First(p => p.No == x.AssignValue.Split(":")[1]).Name; + } + + if (x.AssignType == AssignTypeEnumType.Group) + { + currentAssignValue = userGroups.First(p => p.Code == Guid.Parse(currentAssignValue)).Name; + } + + var r = new DevicePermissionSourceTypeDto + { + AssignType = x.AssignType, + AssignValue = currentAssignValue, + UniqueType = x.UniqueType, + Codes = x.UniqueType == DeviceAssignmentTypeEnumType.Device + ? x.Codes.Where(p => p == item.Code) + : x.Codes.Take(1), + CodeDesc = codeDesc + }; + + return r; }) }; });