feat 获取不在设备中的人员
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user