feat 获取需排除的人员
This commit is contained in:
@@ -335,6 +335,31 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
}
|
||||
|
||||
|
||||
public async Task<int> ResetVisitorsByDeviceAsync(string deviceUniqueNo)
|
||||
{
|
||||
var device = await _dbContext.Queryable<DeviceEntity>().SingleAsync(x => x.UniqueNo == deviceUniqueNo);
|
||||
device.ThrowIfNull("设备不存在");
|
||||
|
||||
var userNos = await GetDeviceUserNosFromVisitorAsync(device.Code);
|
||||
var deviceTaskEntities = userNos.Select(x => new DeviceTaskEntity
|
||||
{
|
||||
Type = DeviceTaskEnumType.Add,
|
||||
DeviceType = device.Type,
|
||||
UserId = null,
|
||||
UserNo = x,
|
||||
DeviceUniqueNo = device.UniqueNo,
|
||||
Status = DeviceTaskStatusEnumType.Wait,
|
||||
Version = 0,
|
||||
ResultMessage = null,
|
||||
Source = "手动下发设备中的访客人员",
|
||||
Priority = 0,
|
||||
TenantId = device.TenantId
|
||||
}).ToList();
|
||||
|
||||
return await _dbContext.InsertAsync(deviceTaskEntities);
|
||||
}
|
||||
|
||||
|
||||
//********************************************************************help methods********************************************************************************************
|
||||
|
||||
/// <summary>
|
||||
@@ -468,26 +493,53 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
return ids.Distinct().ToList();
|
||||
}
|
||||
|
||||
public async Task<object> ExternalAndManuallyUserNoAsync(string deviceUniqueNo)
|
||||
public async Task<DeviceOtherUserCountResponse> ExternalAndManuallyUserNoAsync(string deviceUniqueNo)
|
||||
{
|
||||
var device = await _dbContext.Queryable<DeviceEntity>().SingleAsync(x => x.UniqueNo == deviceUniqueNo);
|
||||
device.ThrowIfNull("设备不存在");
|
||||
|
||||
var devicePermissionManuallyUserNoCount = await _dbContext.Queryable<GainfoEntity>()
|
||||
.Where(x => SqlFunc.Subqueryable<DevicePermissionManuallyEntity>()
|
||||
.Where(p => p.DeviceCode == device.Code)
|
||||
.Where(p => p.UserNo == x.No).Any())
|
||||
.CountAsync();
|
||||
var devicePermissionManuallyUserNos = await GetManuallyDeviceUserNoAsync(device.Code);
|
||||
var visitorUserNos = await GetDeviceUserNosFromVisitorAsync(device.Code);
|
||||
|
||||
var userNos = await GetDeviceUserNosFromVisitorAsync(device.Code);
|
||||
|
||||
return new
|
||||
return new DeviceOtherUserCountResponse
|
||||
{
|
||||
ManuallyUserCount = devicePermissionManuallyUserNoCount,
|
||||
VisitorCount = userNos.Count
|
||||
ManuallyUserCount = devicePermissionManuallyUserNos.Count,
|
||||
VisitorCount = visitorUserNos.Count
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<List<string>> GetDeviceExceptUsersAsync(string deviceUniqueNo)
|
||||
{
|
||||
var device = await _dbContext.Queryable<DeviceEntity>().SingleAsync(x => x.UniqueNo == deviceUniqueNo);
|
||||
device.ThrowIfNull("设备不存在");
|
||||
|
||||
var userIds = await GetDeviceUserIdsAsync(deviceUniqueNo);
|
||||
var userCodes = await _dbContext.Queryable<GainfoEntity>()
|
||||
.Where(x => userIds.Contains(x.Id))
|
||||
.Select(x => x.Code)
|
||||
.ToListAsync();
|
||||
|
||||
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();
|
||||
|
||||
//获取deviceExistsUserCodes不存在existsUserCodes的工号
|
||||
var toDeleteUserCodes = deviceExistsUserCodes.Except(existsUserCodes).ToList();
|
||||
return toDeleteUserCodes;
|
||||
}
|
||||
|
||||
|
||||
public async Task<List<string>> GetDeviceUserCodesAsync(string deviceUniqueNo)
|
||||
{
|
||||
var device = await _dbContext.Queryable<DeviceEntity>().SingleAsync(x => x.UniqueNo == deviceUniqueNo);
|
||||
@@ -553,27 +605,13 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public async Task<int> ResetVisitorsByDeviceAsync(string deviceUniqueNo)
|
||||
private async Task<List<string>> GetManuallyDeviceUserNoAsync(Guid deviceCode)
|
||||
{
|
||||
var device = await _dbContext.Queryable<DeviceEntity>().SingleAsync(x => x.UniqueNo == deviceUniqueNo);
|
||||
device.ThrowIfNull("设备不存在");
|
||||
|
||||
var userNos = await GetDeviceUserNosFromVisitorAsync(device.Code);
|
||||
var deviceTaskEntities = userNos.Select(x => new DeviceTaskEntity
|
||||
{
|
||||
Type = DeviceTaskEnumType.Add,
|
||||
DeviceType = device.Type,
|
||||
UserId = null,
|
||||
UserNo = x,
|
||||
DeviceUniqueNo = device.UniqueNo,
|
||||
Status = DeviceTaskStatusEnumType.Wait,
|
||||
Version = 0,
|
||||
ResultMessage = null,
|
||||
Source = "手动下发设备中的访客人员",
|
||||
Priority = 0,
|
||||
TenantId = device.TenantId
|
||||
}).ToList();
|
||||
|
||||
return await _dbContext.InsertAsync(deviceTaskEntities);
|
||||
return await _dbContext.Queryable<GainfoEntity>()
|
||||
.Where(x => SqlFunc.Subqueryable<DevicePermissionManuallyEntity>()
|
||||
.Where(p => p.DeviceCode == deviceCode)
|
||||
.Where(p => p.UserNo == x.No).Any())
|
||||
.Select(x => x.No)
|
||||
.ToListAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user