feat 获取不在设备中的人员

This commit is contained in:
2025-12-30 17:20:35 +08:00
parent b23bdc3e46
commit e71e7cd7fc
3 changed files with 38 additions and 0 deletions

View File

@@ -155,6 +155,14 @@ public class DevicePermissionsController : ControllerBase
return await _devicePermissionService.GetDeviceExceptUsersAsync(deviceUniqueNo);
}
[HttpGet("notInDeviceUsers")]
[IgnoreTenant]
public async Task<List<string>> GetDeviceNotInUsersAsync(string deviceUniqueNo)
{
return await _devicePermissionService.GetDeviceNotInUsersAsync(deviceUniqueNo);
}
[HttpPost("removeExceptUsers")]
[Transactional]
[IgnoreTenant]

View File

@@ -60,6 +60,7 @@ public interface IDevicePermissionService : IScopeDependency
Task<List<string>> GetDeviceExceptUsersAsync(string deviceUniqueNo);
Task<List<string>> GetDeviceNotInUsersAsync(string deviceUniqueNo);
Task<int> GenerateDeleteDeviceTasksAsync(string deviceUniqueNo);
}

View File

@@ -545,6 +545,35 @@ public class DevicePermissionService : IDevicePermissionService
return toDeleteUserCodes;
}
public async Task<List<string>> GetDeviceNotInUsersAsync(string deviceUniqueNo)
{
var device = await _dbContext.Queryable<DeviceEntity>().SingleAsync(x => x.UniqueNo == deviceUniqueNo);
device.ThrowIfNull("设备不存在");
var usersQuery = await GetDeviceUsersQueryAsync(deviceUniqueNo, string.Empty, null);
var userCodes = (await usersQuery.ToListAsync()).Select(x => x.Code);
var devicePermissionManuallyUserNos = await GetManuallyDeviceUserNoAsync(device.Code);
var visitorUserNos = await GetDeviceUserNosFromVisitorAsync(device.Code);
var otherUserCodes = await _dbContext.Queryable<GainfoEntity>()
.Where(x => devicePermissionManuallyUserNos.Contains(x.No) || visitorUserNos.Contains(x.No))
.Select(x => x.Code)
.ToListAsync();
var existsUserCodes = userCodes.Concat(otherUserCodes).Distinct().ToList();
var deviceExistsUserCodes = await _dbContext.Queryable<DeviceUserEntity>()
.Where(x => x.DeviceUniqueNo == deviceUniqueNo)
.Select(x => x.UserCode)
.ToListAsync();
//获取existsUserCodes不存在deviceExistsUserCodes的工号
var toAddUserCodes = existsUserCodes.Except(deviceExistsUserCodes).ToList();
return toAddUserCodes;
}
public async Task<int> GenerateDeleteDeviceTasksAsync(string deviceUniqueNo)
{
var device = await _dbContext.Queryable<DeviceEntity>().SingleAsync(x => x.UniqueNo == deviceUniqueNo);