diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs index 2cced022..027a0cc9 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs @@ -114,6 +114,18 @@ public class DevicePermissionsController : ControllerBase return await _devicePermissionService.GetDeviceUserCodesAsync(deviceUniqueNo); } + /// + /// 设备其他类型人员 + /// + /// + /// + [HttpGet("gainfo/others")] + [IgnoreTenant] + public async Task ExternalAndManuallyUserNoAsync(string deviceUniqueNo) + { + return await _devicePermissionService.ExternalAndManuallyUserNoAsync(deviceUniqueNo); + } + [HttpGet("userPermissionCodes")] [IgnoreTenant] public async Task> GetAssignDeviceCodesAsync(string userCode) diff --git a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs index 03dc4616..9ce9f580 100644 --- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs @@ -53,4 +53,6 @@ public interface IDevicePermissionService : IScopeDependency Task> GetDeviceUserCodesAsync(string deviceUniqueNo); + + Task ExternalAndManuallyUserNoAsync(string deviceUniqueNo); } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 0d632232..d6fabd88 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -468,6 +468,26 @@ public class DevicePermissionService : IDevicePermissionService return ids.Distinct().ToList(); } + public async Task ExternalAndManuallyUserNoAsync(string deviceUniqueNo) + { + var device = await _dbContext.Queryable().SingleAsync(x => x.UniqueNo == deviceUniqueNo); + device.ThrowIfNull("设备不存在"); + + var devicePermissionManuallyUserNoCount = await _dbContext.Queryable() + .Where(x => SqlFunc.Subqueryable() + .Where(p => p.DeviceCode == device.Code) + .Where(p => p.UserNo == x.No).Any()) + .CountAsync(); + + var userNos = await GetDeviceUserNosFromVisitorAsync(device.Code); + + return new + { + ManuallyUserCount = devicePermissionManuallyUserNoCount, + VisitorCount = userNos.Count + }; + } + public async Task> GetDeviceUserCodesAsync(string deviceUniqueNo) { var device = await _dbContext.Queryable().SingleAsync(x => x.UniqueNo == deviceUniqueNo);