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; }) }; });