fix 设备任务获取结合心跳

This commit is contained in:
2024-04-04 15:15:18 +08:00
parent 82ef9e8cd6
commit 53e796ff53
3 changed files with 21 additions and 3 deletions

View File

@@ -14,6 +14,7 @@ using Kurisu.SqlSugar.Extensions;
using Newtonsoft.Json.Linq;
using Kurisu.Core.CustomClass;
using Kurisu.AspNetCore;
using Kurisu.AspNetCore.Utils;
namespace Dlhis.ScheduledTask.TaskAssignment.Services.Implements;
@@ -21,15 +22,21 @@ public class AssignmentService : IAssignmentService
{
private readonly IDbContext _dbContext;
private readonly ILogger<AssignmentService> _logger;
private readonly RedisCache _redisCache;
public AssignmentService(IDbContext dbContext, ILogger<AssignmentService> logger)
public AssignmentService(IDbContext dbContext, ILogger<AssignmentService> logger, RedisCache redisCache)
{
_dbContext = dbContext;
_logger = logger;
_redisCache = redisCache;
}
public async Task<List<DeviceTaskToDeviceByDeviceResponse>> DeviceGetTasksAsync(DeviceTaskGetRequest request)
{
//获取心跳设备
var key = "heardbeat-devices";
var heartbeatDeviceNos = (await _redisCache.ListRangeAsync(key))?.Select(x => x.ToString()).ToList();
var data = await ContinueUpdateAsync(async () =>
{
var page = await _dbContext.Queryable<DeviceTaskEntity>()
@@ -42,6 +49,7 @@ public class AssignmentService : IAssignmentService
.WhereIF(request.Types.IsPresent(), deviceTask => request.Types.Contains(deviceTask.Type))
.WhereIF(!request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Wait)
.WhereIF(request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Process)
.Where(deviceTask => heartbeatDeviceNos.Contains(deviceTask.DeviceUniqueNo))
.OrderBy(deviceTask => deviceTask.CreateTime)
.Select((deviceTask, deivce, deivceTamplate, ga, department) => new
{