diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs index ecb85ca9..1795014a 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs @@ -63,4 +63,11 @@ public class DevicePermissionManuallyController : ControllerBase { await _devicePermissionService.DeleteAsync(ids); } + + [HttpPost("{factory}/clear/{userCode}")] + [IgnoreTenant] + public async Task ClearAllDevicePermissions(string factory, string userCode) + { + await _devicePermissionService.ClearAllDevicePermissions(factory, userCode); + } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs b/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs index b0fe53ce..043f236f 100644 --- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs @@ -36,4 +36,6 @@ public interface IDevicePermissionManuallyService : IScopeDependency /// /// Task DeleteAsync(List ids); + + Task ClearAllDevicePermissions(string factory, string userCode); } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs index 332981f6..6f6f17d9 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs @@ -120,4 +120,30 @@ public class DevicePermissionManuallyService : IDevicePermissionManuallyService await _dbContext.DeleteAsync(item); } } + + /// + public async Task ClearAllDevicePermissions(string factory, string userCode) + { + var userInfo = await _dbContext.Queryable().Where(x => x.Code == userCode).Select(x => new { x.Id, x.No }).SingleAsync() + ?? await _dbContext.Queryable().Where(x => x.Code == userCode).Select(x => new { Id = (long)x.IdentityUserId, x.No }).SingleAsync(); + userInfo.ThrowIfNull($"{userCode}不存在"); + var devices = await _dbContext.Queryable().Where(x => x.TenantId == factory).ToListAsync(); + + var data = devices.Select(x => new DeviceTaskEntity + { + Type = DeviceTaskEnumType.Delete, + DeviceType = x.Type, + UserId = userInfo.Id, + UserNo = userInfo.No, + DeviceUniqueNo = x.UniqueNo, + Status = DeviceTaskStatusEnumType.Wait, + Version = 0, + ResultMessage = null, + Source = "手动删除处理", + Priority = 0, + TenantId = x.TenantId + }).ToList(); + + await _dbContext.InsertAsync(data); + } } \ No newline at end of file