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) {