|
|
|
|
@@ -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();
|
|
|
|
|
}
|
|
|
|
|
}
|