fix 修改离线设备判断逻辑
This commit is contained in:
@@ -241,24 +241,43 @@ public class DeviceService : IDeviceService
|
||||
public async Task<DeviceNumberResponse> GetDeviceNumberAsync()
|
||||
{
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>()
|
||||
.Where(x => x.Type == DeviceTypeEnumType.Attendance)
|
||||
.Where(x => x.Type == DeviceTypeEnumType.Attendance && x.Enable)
|
||||
.ToListAsync();
|
||||
var onlineNumber = devices.Where(x => x.Enable).Count();
|
||||
var offlineNumber = devices.Where(x => x.Enable == false).Count();
|
||||
|
||||
var offlineNumber = GetOfflineDevicesCount(devices).Count;
|
||||
|
||||
var res = new DeviceNumberResponse
|
||||
{
|
||||
OnlineNumber = onlineNumber,
|
||||
{
|
||||
OfflineNumber = offlineNumber,
|
||||
TotalNumber = devices.Count()
|
||||
TotalNumber = devices.Count(),
|
||||
OnlineNumber = devices.Count()- offlineNumber
|
||||
};
|
||||
return res;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取离线设备
|
||||
/// </summary>
|
||||
/// <param name="devices"></param>
|
||||
/// <returns></returns>
|
||||
private List<DeviceEntity> GetOfflineDevicesCount(List<DeviceEntity> devices)
|
||||
{
|
||||
var list = new List<DeviceEntity>();
|
||||
foreach (var device in devices)
|
||||
{
|
||||
TimeSpan timeDifference = DateTime.Now - device.ModifiedTime;
|
||||
if (timeDifference.TotalSeconds > (device.HeartbeatInterval * 3))
|
||||
{
|
||||
list.Add(device);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public async Task<Pagination<DevicePageResponse>> GetAttendanceTotalAsync(AttendanceTotalRequest request)
|
||||
{
|
||||
var page = await _dbContext.Queryable<DeviceEntity>()
|
||||
.LeftJoin<DeviceTemplateEntity>((d, dt) => d.TemplateCode == dt.Code)
|
||||
.Where(d => d.Type == DeviceTypeEnumType.Attendance)
|
||||
.Where(d => d.Type == DeviceTypeEnumType.Attendance && d.Enable)
|
||||
.Select((d, dt) => new DevicePageResponse
|
||||
{
|
||||
FuncsStr = d.Funcs.ToString(),
|
||||
@@ -273,9 +292,39 @@ public class DeviceService : IDeviceService
|
||||
|
||||
public async Task<Pagination<DevicePageResponse>> GetAttendanceOfflineAsync(DeviceOnlineAndofflineRequest request)
|
||||
{
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>()
|
||||
.Where(x => x.Type == DeviceTypeEnumType.Attendance && x.Enable)
|
||||
.ToListAsync();
|
||||
|
||||
//离线
|
||||
var offDevices = GetOfflineDevicesCount(devices);
|
||||
var offids = offDevices.Select(x => x.Id).ToList();
|
||||
|
||||
if (request.IsOnAndOff)
|
||||
{
|
||||
//离线
|
||||
var offpage = await _dbContext.Queryable<DeviceEntity>()
|
||||
.LeftJoin<DeviceTemplateEntity>((d, dt) => d.TemplateCode == dt.Code)
|
||||
.Where(d => d.Type == DeviceTypeEnumType.Attendance && d.Enable)
|
||||
.Where(d => offids.Contains(d.Id))
|
||||
.Select((d, dt) => new DevicePageResponse
|
||||
{
|
||||
FuncsStr = d.Funcs.ToString(),
|
||||
Brand = dt.Brand,
|
||||
Type = d.Type,
|
||||
|
||||
}, true)
|
||||
.ToPageListAsync(request);
|
||||
return offpage;
|
||||
}
|
||||
//在线
|
||||
var ids = devices.Select(x => x.Id).ToList();
|
||||
List<long> onids = ids.Except(offids).ToList();
|
||||
|
||||
var page = await _dbContext.Queryable<DeviceEntity>()
|
||||
.LeftJoin<DeviceTemplateEntity>((d, dt) => d.TemplateCode == dt.Code)
|
||||
.Where(d => d.Type == DeviceTypeEnumType.Attendance && d.Enable == request.IsOnAndOff)
|
||||
.Where(d => d.Type == DeviceTypeEnumType.Attendance && d.Enable)
|
||||
.Where(d => onids.Contains(d.Id))
|
||||
.Select((d, dt) => new DevicePageResponse
|
||||
{
|
||||
FuncsStr = d.Funcs.ToString(),
|
||||
|
||||
@@ -551,10 +551,10 @@ public class BalanceService : IBalanceService
|
||||
public async Task<ConsumeNumberResponse> GetConsumeNumberAsync()
|
||||
{
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>()
|
||||
.Where(x => x.Type == DeviceTypeEnumType.Meal)
|
||||
.Where(x => x.Type == DeviceTypeEnumType.Meal && x.Enable)
|
||||
.ToListAsync();
|
||||
|
||||
var offCount = devices.Where(x => x.Enable == false).Count();
|
||||
var offCount = GetOfflineDevicesCount(devices).Count;
|
||||
|
||||
var places = await _dbContext.Queryable<BusinessPlaceEntity>()
|
||||
.ToListAsync();
|
||||
@@ -592,6 +592,26 @@ public class BalanceService : IBalanceService
|
||||
return res;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取离线设备
|
||||
/// </summary>
|
||||
/// <param name="devices"></param>
|
||||
/// <returns></returns>
|
||||
private List<DeviceEntity> GetOfflineDevicesCount(List<DeviceEntity> devices)
|
||||
{
|
||||
var list = new List<DeviceEntity>();
|
||||
foreach (var device in devices)
|
||||
{
|
||||
TimeSpan timeDifference = DateTime.Now - device.ModifiedTime;
|
||||
if (timeDifference.TotalSeconds > (device.HeartbeatInterval * 3))
|
||||
{
|
||||
list.Add(device);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private async Task<List<ConsumptionTrendResponse>> GetConsumptionTrendsAsync(ConsumptionTrendEnumType type)
|
||||
{
|
||||
var bs = await _dbContext.Queryable<BalanceRecordEntity>()
|
||||
|
||||
@@ -75,6 +75,7 @@ public class ApkFIileService : IApkFIileService
|
||||
.Where(x => x.ProductCode == productCode)
|
||||
.Select<ApkFileResponse>()
|
||||
.FirstAsync();
|
||||
info.ThrowIfNull($"产品{productCode}下没有apk存在");
|
||||
var url =await RequestDownloadFile(info.Name);
|
||||
|
||||
var host = Configuration["MinIO:Endpoint"];
|
||||
|
||||
Reference in New Issue
Block a user