fix 通过id比较查询任务

This commit is contained in:
2025-07-03 19:26:40 +08:00
parent ed56457688
commit dfb7aaf840

View File

@@ -242,6 +242,13 @@ public class AssignmentService : IAssignmentService
private async Task<List<TaskDto>> GetDataAsync(DeviceTaskGetRequest request) private async Task<List<TaskDto>> GetDataAsync(DeviceTaskGetRequest request)
{ {
var limitTime = DateTime.Now.AddDays(-3); var limitTime = DateTime.Now.AddDays(-3);
var limitData = _dbContext.Queryable<DeviceTaskEntity>().Where(x => x.CreateTime >= limitTime).FirstAsync();
if (limitData == null)
{
return new List<TaskDto>();
}
var startId = limitData.Id;
var data = await CommonHelper.RetryAsync(async () => var data = await CommonHelper.RetryAsync(async () =>
{ {
@@ -252,14 +259,14 @@ public class AssignmentService : IAssignmentService
.LeftJoin<DepartmentEntity>((deviceTask, device, ga, gaLeave, department) => department.No == ga.DepartmentNo) .LeftJoin<DepartmentEntity>((deviceTask, device, ga, gaLeave, department) => department.No == ga.DepartmentNo)
.LeftJoin<DeviceRegistryEntity>((deviceTask, device, ga, gaLeave, department, deviceRegistry) => deviceRegistry.DeviceUniqueNo == deviceTask.DeviceUniqueNo) .LeftJoin<DeviceRegistryEntity>((deviceTask, device, ga, gaLeave, department, deviceRegistry) => deviceRegistry.DeviceUniqueNo == deviceTask.DeviceUniqueNo)
.Where((deviceTask, device) => .Where((deviceTask, device) =>
deviceTask.CreateTime >= limitTime && deviceTask.Id >= startId &&
deviceTask.DeviceUniqueNo == request.DeviceUniqueNo && deviceTask.DeviceUniqueNo == request.DeviceUniqueNo
deviceTask.Version < 10
) )
.WhereIF(!request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Wait) .WhereIF(!request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Wait)
.WhereIF(request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Process .WhereIF(request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Process
&& SqlFunc.DateDiff(DateType.Minute, deviceTask.ModifiedTime, DateTime.Now) > 10) && SqlFunc.DateDiff(DateType.Minute, deviceTask.ModifiedTime, DateTime.Now) > 10)
.WhereIF(request.Types.IsPresent(), deviceTask => request.Types.Contains(deviceTask.Type)) .WhereIF(request.Types.IsPresent(), deviceTask => request.Types.Contains(deviceTask.Type))
.Where(deviceTask => deviceTask.Version < 10)
#if !DEBUG #if !DEBUG
.Where((deviceTask, device, ga, gaLeave, department, deviceRegistry) => .Where((deviceTask, device, ga, gaLeave, department, deviceRegistry) =>
device.HeartbeatInterval == 0 || SqlFunc.DateAdd(deviceRegistry.LastHeartbeatTime, device.HeartbeatInterval, DateType.Second) > DateTime.Now) device.HeartbeatInterval == 0 || SqlFunc.DateAdd(deviceRegistry.LastHeartbeatTime, device.HeartbeatInterval, DateType.Second) > DateTime.Now)