diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs index 0177d5c5..91a7c67f 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionManuallyController.cs @@ -53,4 +53,14 @@ public class DevicePermissionManuallyController : ControllerBase { await _devicePermissionService.DeleteAsync(id); } + + /// + /// 删除权限 + /// + /// + [HttpPost("batchDelete")] + public async Task DeleteAsync(List ids) + { + await _devicePermissionService.DeleteAsync(ids); + } } \ 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 21851ee5..77273fa1 100644 --- a/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDevicePermissionManuallyService.cs @@ -29,4 +29,11 @@ public interface IDevicePermissionManuallyService : IScopeDependency /// /// Task DeleteAsync(long id); + + /// + /// 批量删除 + /// + /// + /// + Task DeleteAsync(List ids); } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs index b6dcc939..218adb8c 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceGroupService.cs @@ -152,7 +152,6 @@ public class DeviceGroupService : IDeviceGroupService else { //当前组没有tenant级别 - var currentAssignedToOthers = await _dbContext.Queryable() .Where(x => x.AssignType != AssignTypeEnumType.Tenant) .Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group) @@ -170,7 +169,7 @@ public class DeviceGroupService : IDeviceGroupService .Where(x => x.AssignType == AssignTypeEnumType.Tenant) .Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group) .Where(x => groupCodes.Contains(x.UniqueValue)) - .AnyAsync() && currentAssignedToOthers) + .AnyAsync() && currentAssignedToOthers && group.IsBusinessTrip == false) { true.ThrowIfTrue("存在设备所在的分组已分配到厂区级别,但当前分组存在其他级别的分配"); } diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs index e77899d5..28831e3f 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionManuallyService.cs @@ -1,6 +1,7 @@ using Dlhis.Basic.Device.Request; using Dlhis.Basic.Device.Response; using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Basic.Enums; using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Enums; using Kurisu.AspNetCore.DataAccess.Dto; @@ -46,7 +47,8 @@ public class DevicePermissionManuallyService : IDevicePermissionManuallyService var gainfo = await _dbContext.Queryable().Where(x => x.No == request.UserNo).SingleAsync(); gainfo.ThrowIfNull("人员不存在"); - + //var types = new List { GainfoUserTypeEnumType.Normal, GainfoUserTypeEnumType.SecurityWhite }; + //types.Contains(gainfo.Type).ThrowIfFalse($"人员类型为:{gainfo.Type.GetDescription()},无法分配"); await _dbContext.InsertAsync(new DevicePermissionManuallyEntity { @@ -73,32 +75,43 @@ public class DevicePermissionManuallyService : IDevicePermissionManuallyService /// public async Task DeleteAsync(long id) { - var data = await _dbContext.Queryable().Where(x => x.Id == id).SingleAsync(); - data.ThrowIfNull("数据不存在"); + await DeleteAsync(new List { id }); + } - var device = await _dbContext.Queryable().Where(x => x.Code == data.DeviceCode).SingleAsync(); - if (device != null) + public async Task DeleteAsync(List ids) + { + var data = await _dbContext.Queryable().Where(x => ids.Contains(x.Id)).ToListAsync(); + var deviceCodes = data.Select(x => x.DeviceCode).Distinct().ToList(); + var devices = await _dbContext.Queryable().Where(x => deviceCodes.Contains(x.Code)).ToListAsync(); + + foreach (var item in data) { - var userNo = await _dbContext.Queryable().Where(x => x.No == data.UserNo).Select(x => x.No).SingleAsync(); - if (userNo.IsPresent()) - { - await _dbContext.InsertAsync(new DeviceTaskEntity - { - Type = DeviceTaskEnumType.Delete, - DeviceType = device.Type, - UserId = null, - UserNo = userNo, - DeviceUniqueNo = device.UniqueNo, - Status = DeviceTaskStatusEnumType.Wait, - Version = 0, - ResultMessage = null, - Source = "手动分配额外权限", - Priority = 0, - TenantId = device.TenantId - }); - } - } + var userInfo = await _dbContext.Queryable().Where(x => x.No == item.UserNo).Select(x => new { x.Id, x.No }).SingleAsync() + ?? await _dbContext.Queryable().Where(x => x.No == item.UserNo).Select(x => new { Id = (long)x.IdentityUserId, x.No }).SingleAsync(); - await _dbContext.DeleteAsync(data); + if (userInfo != null) + { + var device = devices.FirstOrDefault(x => x.Code == item.DeviceCode); + if (device != null) + { + await _dbContext.InsertAsync(new DeviceTaskEntity + { + Type = DeviceTaskEnumType.Delete, + DeviceType = device.Type, + UserId = userInfo.Id, + UserNo = userInfo.No, + DeviceUniqueNo = device.UniqueNo, + Status = DeviceTaskStatusEnumType.Wait, + Version = 0, + ResultMessage = null, + Source = "手动分配额外权限", + Priority = 0, + TenantId = device.TenantId + }); + } + } + + await _dbContext.DeleteAsync(item); + } } } \ No newline at end of file