From 66bb96a05797cb842963454748bb67c5abaa7d04 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Fri, 10 Oct 2025 18:04:48 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevicePermissionsController.cs | 7 +++++ .../Request/DeviceRemoveExceptUserRequest.cs | 9 ++++++ .../Services/IDevicePermissionService.cs | 2 ++ .../Implements/DevicePermissionService.cs | 28 ++++++++++++++++++- 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 Src/Dlhis.Basic/Device/Request/DeviceRemoveExceptUserRequest.cs diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs index d18943a7..f06f0681 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs @@ -154,4 +154,11 @@ public class DevicePermissionsController : ControllerBase { return await _devicePermissionService.GetDeviceExceptUsersAsync(deviceUniqueNo); } + + [HttpPost("removeExceptUsers")] + [IgnoreTenant] + public async Task GenerateDeleteDeviceTasksAsync(DeviceRemoveExceptUserRequest request) + { + return await _devicePermissionService.GenerateDeleteDeviceTasksAsync(request.DeviceUniqueNo); + } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Device/Request/DeviceRemoveExceptUserRequest.cs b/Src/Dlhis.Basic/Device/Request/DeviceRemoveExceptUserRequest.cs new file mode 100644 index 00000000..1b4f2ddf --- /dev/null +++ b/Src/Dlhis.Basic/Device/Request/DeviceRemoveExceptUserRequest.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations; + +namespace Dlhis.Basic.Device.Request; + +public class DeviceRemoveExceptUserRequest +{ + [Required] + public string DeviceUniqueNo { 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 a61d5f32..34475ebc 100644 --- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionService.cs @@ -60,4 +60,6 @@ public interface IDevicePermissionService : IScopeDependency Task> GetDeviceExceptUsersAsync(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 5849beff..51565d65 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -514,7 +514,7 @@ public class DevicePermissionService : IDevicePermissionService device.ThrowIfNull("设备不存在"); var usersQuery = await GetDeviceUsersQueryAsync(deviceUniqueNo, string.Empty, null); - var userCodes = (await usersQuery.ToListAsync()).Select(x=>x.Code); + var userCodes = (await usersQuery.ToListAsync()).Select(x => x.Code); var devicePermissionManuallyUserNos = await GetManuallyDeviceUserNoAsync(device.Code); var visitorUserNos = await GetDeviceUserNosFromVisitorAsync(device.Code); @@ -536,6 +536,32 @@ public class DevicePermissionService : IDevicePermissionService return toDeleteUserCodes; } + public async Task GenerateDeleteDeviceTasksAsync(string deviceUniqueNo) + { + var device = await _dbContext.Queryable().SingleAsync(x => x.UniqueNo == deviceUniqueNo); + device.ThrowIfNull("设备不存在"); + + var userCodes = await GetDeviceExceptUsersAsync(deviceUniqueNo); + + var userNos = await _dbContext.Queryable() + .Where(x => userCodes.Contains(x.Code)) + .Select(x => x.No) + .ToListAsync(); + + return await _dbContext.InsertAsync(userNos.Select(x => new DeviceTaskEntity + { + DeviceUniqueNo = device.UniqueNo, + Status = DeviceTaskStatusEnumType.Wait, + Type = DeviceTaskEnumType.Delete, + DeviceType = device.Type, + UserNo = x, + Priority = 0, + Version = 0, + TenantId = device.TenantId, + Source = "设备删除,清除设备中非法人员" + }).ToList()); + } + public async Task> GetDeviceUserCodesAsync(string deviceUniqueNo) {