fix deviceRegister修复
This commit is contained in:
@@ -74,7 +74,7 @@ public class DeviceService : IDeviceService
|
|||||||
entity.Code = Guid.NewGuid();
|
entity.Code = Guid.NewGuid();
|
||||||
await _dbContext.InsertAsync(entity);
|
await _dbContext.InsertAsync(entity);
|
||||||
//同时保存注册信息
|
//同时保存注册信息
|
||||||
var registry = await _dbContext.Queryable<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == request.UniqueNo).FirstAsync();
|
var registry = await _dbContext.Queryable<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == request.UniqueNo).SingleAsync();
|
||||||
if (registry == null)
|
if (registry == null)
|
||||||
{
|
{
|
||||||
registry = new DeviceRegistryEntity
|
registry = new DeviceRegistryEntity
|
||||||
@@ -106,6 +106,20 @@ public class DeviceService : IDeviceService
|
|||||||
|
|
||||||
request.Adapt(entity);
|
request.Adapt(entity);
|
||||||
await _dbContext.UpdateAsync(entity);
|
await _dbContext.UpdateAsync(entity);
|
||||||
|
|
||||||
|
var registry = await _dbContext.Queryable<DeviceRegistryEntity>().Where(x => x.DeviceUniqueNo == request.UniqueNo).SingleAsync();
|
||||||
|
if (registry == null)
|
||||||
|
{
|
||||||
|
registry = new DeviceRegistryEntity
|
||||||
|
{
|
||||||
|
DeviceUniqueNo = request.UniqueNo,
|
||||||
|
LastHeartbeatTime = DateTime.Now,
|
||||||
|
RegisterTime = DateTime.Now,
|
||||||
|
BusinessPlaceCode = null,
|
||||||
|
};
|
||||||
|
|
||||||
|
await _dbContext.InsertAsync(registry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await GenerateUploadRecordLogForBeginTimeAsync(entity);
|
await GenerateUploadRecordLogForBeginTimeAsync(entity);
|
||||||
@@ -271,19 +285,25 @@ public class DeviceService : IDeviceService
|
|||||||
var deviceUniqueNos = devices.Select(x => x.UniqueNo).ToList();
|
var deviceUniqueNos = devices.Select(x => x.UniqueNo).ToList();
|
||||||
|
|
||||||
var deviceRegistries = await _dbContext.Queryable<DeviceRegistryEntity>()
|
var deviceRegistries = await _dbContext.Queryable<DeviceRegistryEntity>()
|
||||||
.LeftJoin<DeviceEntity>((x, d) => x.DeviceUniqueNo == d.UniqueNo)
|
|
||||||
.Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo))
|
.Where(x => deviceUniqueNos.Contains(x.DeviceUniqueNo))
|
||||||
.Select((x, d) => new
|
.Select(x => new
|
||||||
{
|
{
|
||||||
d.UniqueNo,
|
x.DeviceUniqueNo,
|
||||||
d.HeartbeatInterval,
|
|
||||||
x.LastHeartbeatTime
|
x.LastHeartbeatTime
|
||||||
})
|
})
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
var offlineUniqueNos = deviceRegistries
|
var offlineUniqueNos = devices.Where(x =>
|
||||||
.Where(x => x.HeartbeatInterval > 0 && x.LastHeartbeatTime.AddSeconds(x.HeartbeatInterval) < now)
|
{
|
||||||
.Select(x => x.UniqueNo);
|
var item = deviceRegistries.FirstOrDefault(p => p.DeviceUniqueNo == x.UniqueNo);
|
||||||
|
|
||||||
|
if (item == null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return x.HeartbeatInterval > 0 && item.LastHeartbeatTime.AddSeconds(x.HeartbeatInterval) < now;
|
||||||
|
}).Select(x => x.UniqueNo);
|
||||||
|
|
||||||
return devices.Where(x => offlineUniqueNos.Contains(x.UniqueNo)).Select(x => x.Id).ToList();
|
return devices.Where(x => offlineUniqueNos.Contains(x.UniqueNo)).Select(x => x.Id).ToList();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user