fix: 优化权限不足时,导致无法获取delete任务

This commit is contained in:
2026-05-22 11:22:46 +08:00
parent 6ef843cf3c
commit ef038d1b3e

View File

@@ -224,7 +224,9 @@ public class AssignmentService : IAssignmentService
.Select(x => new { UserId = x.Id, UserNo = x.No, UserCode = x.Code, UserName = x.Name, x.CardNo })
.FirstAsync();
userInfo.ThrowIfNull("用户信息不存在");
//获取用户的设备权限码列表,可以精确到楼层权限(虚拟电梯层级设备)
var deviceCodes = isCurrent ? await _gainfoPermissionApi.GetPermissionsDeviceCodesAsync(userCode) : new List<Guid>();
@@ -235,6 +237,7 @@ public class AssignmentService : IAssignmentService
.WhereIF(isCurrent, (x, d) => deviceCodes.Contains(d.Code))
.Select(x => new { x.VirtualDeviceUniqueNo, x.AcsValue })
.ToListAsync();
//虚拟设备号列表
var virtualDeviceUniqueNos = elevatorAcsFloors.Select(x => x.VirtualDeviceUniqueNo).ToList();
//权限值列表
@@ -247,7 +250,8 @@ public class AssignmentService : IAssignmentService
.Where((deviceTask, device) => deviceTask.UserNo == userInfo.UserNo)
.Where((deviceTask, device) => virtualDeviceUniqueNos.Contains(deviceTask.DeviceUniqueNo))
.Where((deviceTask, device) => device.Enable)
.Where(deviceTask => (deviceTask.Status == DeviceTaskStatusEnumType.Wait || deviceTask.Status == DeviceTaskStatusEnumType.Process) && !string.IsNullOrEmpty(deviceTask.UserNo))
.Where(deviceTask => (deviceTask.Status == DeviceTaskStatusEnumType.Wait || deviceTask.Status == DeviceTaskStatusEnumType.Process || deviceTask.Type == DeviceTaskEnumType.Delete)
&& !string.IsNullOrEmpty(deviceTask.UserNo))
.OrderBy(deviceTask => new { deviceTask.Id, Priority = SqlFunc.Desc(deviceTask.Priority) })
.Select((deviceTask, device) => deviceTask.Id)
.ToListAsync();