diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs index fefea005..552efee4 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs @@ -70,6 +70,18 @@ public class DevicePermissionsController : ControllerBase { return await _devicePermissionService.GetAssignmentsAsync(request.UniqueType, request.AssignType, request.AssignValue); } + + /// + /// 当前类型的权限分配 + /// + /// + /// + [DataPermission] + [HttpGet("assignments-unique")] + public async Task> GetAssignmentUniqueAsync([FromQuery] DeviceGetAssignmentUniquesRequest request) + { + return await _devicePermissionService.GetAssignmentUniqueAsync(request); + } /// diff --git a/Src/Dlhis.Basic/Device/Request/DeviceGetAssignmentsRequest.cs b/Src/Dlhis.Basic/Device/Request/DeviceGetAssignmentsRequest.cs index f0798dfe..2b961487 100644 --- a/Src/Dlhis.Basic/Device/Request/DeviceGetAssignmentsRequest.cs +++ b/Src/Dlhis.Basic/Device/Request/DeviceGetAssignmentsRequest.cs @@ -27,4 +27,18 @@ public class DeviceGetAssignmentsRequest /// 设备类型 /// public DeviceTypeEnumType Type { get; set; } +} + +public class DeviceGetAssignmentUniquesRequest +{ + /// + /// 权限分配类型 DeviceAssignmentTypeEnumType + /// + [EnumDataType(typeof(DeviceAssignmentTypeEnumType))] + public DeviceAssignmentTypeEnumType UniqueType { get; set; } + + /// + /// + /// + public Guid UniqueValue { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs index c23de1c5..b09ea908 100644 --- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs @@ -34,6 +34,8 @@ public interface IDevicePermissionService : IScopeDependency /// Task> GetAssignmentsAsync(DeviceAssignmentTypeEnumType uniqueType, AssignTypeEnumType assignType, string assignValue); + Task> GetAssignmentUniqueAsync(DeviceGetAssignmentUniquesRequest request); + /// /// 生成下发任务 diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 29a4656c..40fd48cc 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -180,6 +180,26 @@ public class DevicePermissionService : IDevicePermissionService return result.FirstOrDefault(x => x.Tenant == _currentUser.GetStringTenantId())?.Codes; } + + public async Task> GetAssignmentUniqueAsync(DeviceGetAssignmentUniquesRequest request) + { + var nos = await _dbContext.Queryable() + .Where(x => x.UniqueType == request.UniqueType) + .Where(x => x.UniqueValue == request.UniqueValue) + .Where(x => x.AssignType == AssignTypeEnumType.User) + .Select(x => x.AssignValue) + .ToListAsync(); + + return await _dbContext.Queryable().Where(x => nos.Contains(x.No)).Select(x => new GainfoDto + { + Id = x.Id, + Code = x.Code, + Name = x.Name, + Workplace = x.Workplace, + Factory = x.Factory + }).ToListAsync(); + } + public async Task GenerateDeviceTasksAsync(Func func, List userNos) { var tenantId = _currentUser.GetStringTenantId();