From e71e7cd7fc64b6b7b4f83e12ff0bd676272237c1 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 30 Dec 2025 17:20:35 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=9C=A8?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=B8=AD=E7=9A=84=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevicePermissionsController.cs | 8 +++++ .../Services/IDevicePermissionService.cs | 1 + .../Implements/DevicePermissionService.cs | 29 +++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs index fc8934fa..3a4b96dc 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs @@ -155,6 +155,14 @@ public class DevicePermissionsController : ControllerBase return await _devicePermissionService.GetDeviceExceptUsersAsync(deviceUniqueNo); } + [HttpGet("notInDeviceUsers")] + [IgnoreTenant] + public async Task> GetDeviceNotInUsersAsync(string deviceUniqueNo) + { + return await _devicePermissionService.GetDeviceNotInUsersAsync(deviceUniqueNo); + } + + [HttpPost("removeExceptUsers")] [Transactional] [IgnoreTenant] diff --git a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs index 34475ebc..10764054 100644 --- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs @@ -60,6 +60,7 @@ public interface IDevicePermissionService : IScopeDependency Task> GetDeviceExceptUsersAsync(string deviceUniqueNo); + Task> GetDeviceNotInUsersAsync(string deviceUniqueNo); Task GenerateDeleteDeviceTasksAsync(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 6285a778..49b44072 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -545,6 +545,35 @@ public class DevicePermissionService : IDevicePermissionService return toDeleteUserCodes; } + + public async Task> GetDeviceNotInUsersAsync(string deviceUniqueNo) + { + var device = await _dbContext.Queryable().SingleAsync(x => x.UniqueNo == deviceUniqueNo); + device.ThrowIfNull("设备不存在"); + + var usersQuery = await GetDeviceUsersQueryAsync(deviceUniqueNo, string.Empty, null); + var userCodes = (await usersQuery.ToListAsync()).Select(x => x.Code); + + var devicePermissionManuallyUserNos = await GetManuallyDeviceUserNoAsync(device.Code); + var visitorUserNos = await GetDeviceUserNosFromVisitorAsync(device.Code); + + var otherUserCodes = await _dbContext.Queryable() + .Where(x => devicePermissionManuallyUserNos.Contains(x.No) || visitorUserNos.Contains(x.No)) + .Select(x => x.Code) + .ToListAsync(); + + var existsUserCodes = userCodes.Concat(otherUserCodes).Distinct().ToList(); + + var deviceExistsUserCodes = await _dbContext.Queryable() + .Where(x => x.DeviceUniqueNo == deviceUniqueNo) + .Select(x => x.UserCode) + .ToListAsync(); + + //获取existsUserCodes不存在deviceExistsUserCodes的工号 + var toAddUserCodes = existsUserCodes.Except(deviceExistsUserCodes).ToList(); + return toAddUserCodes; + } + public async Task GenerateDeleteDeviceTasksAsync(string deviceUniqueNo) { var device = await _dbContext.Queryable().SingleAsync(x => x.UniqueNo == deviceUniqueNo);