fix 标识任务的设备状态

This commit is contained in:
2024-06-21 14:33:38 +08:00
parent e7b5271377
commit 4cc90ec5cc
2 changed files with 24 additions and 4 deletions

View File

@@ -82,4 +82,17 @@ public class DeviceTaskAssignmentResponse
/// 部署点
/// </summary>
public string DeployPlace { get; set; }
}
public int HeartbeatInterval { get; set; }
public DateTime LastHeartbeatTime { get; set; }
public bool IsOffline
{
get
{
if (HeartbeatInterval == 0) return false;
return LastHeartbeatTime.AddSeconds(HeartbeatInterval) > DateTime.Now;
}
}
}

View File

@@ -30,6 +30,7 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
.LeftJoin<GainfoEntity>((deviceTask, device, ga) => deviceTask.UserNo == ga.No)
.LeftJoin<GainfoLeaveEntity>((deviceTask, device, ga, gaLeave) => deviceTask.UserNo == gaLeave.No)
.LeftJoin<GainfoLeaveEntity>((deviceTask, device, ga, gaLeave, gaEx) => deviceTask.UserNo == gaEx.No)
.LeftJoin<DeviceRegistryEntity>((deviceTask, device, ga, gaLeave, gaEx, deviceRegistry) => deviceRegistry.DeviceUniqueNo == deviceTask.DeviceUniqueNo)
.Where(deviceTask => deviceTask.TenantId == request.Factory)
.WhereIF(request.Type.HasValue, deviceTask => deviceTask.DeviceType == request.Type)
.WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true && request.SearchDateTimePeriod?.End.HasValue == true,
@@ -44,7 +45,7 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
|| deviceTask.DeviceUniqueNo == request.Search
)
.OrderBy(deviceTask => deviceTask.CreateTime, OrderByType.Desc)
.Select((deviceTask, device, ga, gaLeave, gaEx) => new DeviceTaskAssignmentResponse
.Select((deviceTask, device, ga, gaLeave, gaEx, deviceRegistry) => new DeviceTaskAssignmentResponse
{
Id = deviceTask.Id,
DeviceUniqueNo = deviceTask.DeviceUniqueNo,
@@ -52,12 +53,18 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
RetryCount = deviceTask.Version,
Status = deviceTask.Status,
UserNo = deviceTask.UserNo,
UserName = SqlFunc.IsNull(SqlFunc.IsNull(ga.Name, gaLeave.Name), gaEx.Name),
UserCode = SqlFunc.IsNull(SqlFunc.IsNull(ga.Code, gaLeave.Code), gaEx.Code),
UserName = SqlFunc.IsNull(SqlFunc.IsNull(ga.Name,
gaLeave.Name),
gaEx.Name),
UserCode = SqlFunc.IsNull(SqlFunc.IsNull(ga.Code,
gaLeave.Code),
gaEx.Code),
Type = deviceTask.Type,
CreateTime = deviceTask.CreateTime,
LastUpdateTime = deviceTask.ModifiedTime,
TenantId = deviceTask.TenantId,
LastHeartbeatTime = deviceRegistry.LastHeartbeatTime,
HeartbeatInterval = device.HeartbeatInterval,
DeployPlace = device.DeployPlace,
})
.ToPageListAsync(request);