fix 移除多余的处理

This commit is contained in:
2025-07-05 14:11:29 +08:00
parent e3720d6905
commit f3df724edb
3 changed files with 30 additions and 54 deletions

View File

@@ -30,6 +30,19 @@ public class CreateGetUploadRecordJob : BaseJob
.OrderByDescending(x => x.Id) .OrderByDescending(x => x.Id)
.FirstAsync(); .FirstAsync();
if (deviceTask != null)
{
if (deviceTask.Status == DeviceTaskStatusEnumType.Success
|| (deviceTask.Status == DeviceTaskStatusEnumType.Process && deviceTask.Version == 8)
|| deviceTask.Status == DeviceTaskStatusEnumType.Error
)
{
var id = deviceTask.Id;
await DbContext.Deleteable<DeviceEntity>().Where(x => x.Id == id).ExecuteCommandAsync();
deviceTask = null;
}
}
if (deviceTask == null) if (deviceTask == null)
{ {
await DbContext.InsertAsync(new DeviceTaskEntity await DbContext.InsertAsync(new DeviceTaskEntity
@@ -44,21 +57,6 @@ public class CreateGetUploadRecordJob : BaseJob
Source = "定时任务创建设备获取通行记录任务" Source = "定时任务创建设备获取通行记录任务"
}); });
} }
else
{
if (deviceTask.Status == DeviceTaskStatusEnumType.Success
|| (deviceTask.Status == DeviceTaskStatusEnumType.Process
&& deviceTask.ModifiedTime.AddMinutes(10) > DateTime.Now)
)
{
deviceTask.Status = DeviceTaskStatusEnumType.Wait;
deviceTask.Version = 0;
deviceTask.CreateTime = DateTime.Now;
deviceTask.ModifiedTime = DateTime.Now;
await DbContext.UpdateAsync(deviceTask);
}
}
} }
} }
} }

View File

@@ -29,6 +29,16 @@ public class CreateSyncServerDateTimeJob : BaseJob
.OrderByDescending(x => x.Id) .OrderByDescending(x => x.Id)
.FirstAsync(); .FirstAsync();
if (deviceTask != null)
{
if (deviceTask.Status is DeviceTaskStatusEnumType.Success or DeviceTaskStatusEnumType.Process or DeviceTaskStatusEnumType.Error)
{
var id = deviceTask.Id;
await DbContext.Deleteable<DeviceEntity>().Where(x => x.Id == id).ExecuteCommandAsync();
deviceTask = null;
}
}
if (deviceTask == null) if (deviceTask == null)
{ {
await DbContext.InsertAsync(new DeviceTaskEntity await DbContext.InsertAsync(new DeviceTaskEntity
@@ -44,21 +54,6 @@ public class CreateSyncServerDateTimeJob : BaseJob
Source = "定时任务创建设备同步时间任务" Source = "定时任务创建设备同步时间任务"
}); });
} }
else
{
if (deviceTask.Status == DeviceTaskStatusEnumType.Success
|| (deviceTask.Status == DeviceTaskStatusEnumType.Process
&& deviceTask.ModifiedTime.AddMinutes(10) > DateTime.Now)
)
{
deviceTask.Status = DeviceTaskStatusEnumType.Wait;
deviceTask.Version = 0;
deviceTask.CreateTime = DateTime.Now;
deviceTask.ModifiedTime = DateTime.Now;
await DbContext.UpdateAsync(deviceTask);
}
}
} }
} }
} }

View File

@@ -241,8 +241,8 @@ public class AssignmentService : IAssignmentService
private async Task<List<TaskDto>> GetDataAsync(DeviceTaskGetRequest request) private async Task<List<TaskDto>> GetDataAsync(DeviceTaskGetRequest request)
{ {
(long? startId, List<long> otherIds) = await GetStartIdAndOtherIdsAsync(request.DeviceUniqueNo); var startId = await GetStartIdAsync(request.DeviceUniqueNo);
if (!startId.HasValue && otherIds.IsEmpty()) if (!startId.HasValue)
{ {
return new List<TaskDto>(); return new List<TaskDto>();
} }
@@ -255,12 +255,10 @@ public class AssignmentService : IAssignmentService
.LeftJoin<GainfoLeaveEntity>((deviceTask, device, ga, gaLeave) => deviceTask.UserNo == gaLeave.No) .LeftJoin<GainfoLeaveEntity>((deviceTask, device, ga, gaLeave) => deviceTask.UserNo == gaLeave.No)
.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)
.WhereIF(startId.HasValue, (deviceTask, device) => .Where( (deviceTask, device) =>
(deviceTask.Id >= startId || otherIds.Contains(deviceTask.Id)) deviceTask.Id >= startId
&& deviceTask.DeviceUniqueNo == request.DeviceUniqueNo && deviceTask.DeviceUniqueNo == request.DeviceUniqueNo
).WhereIF(!startId.HasValue, (deviceTask, device) => )
otherIds.Contains(deviceTask.Id)
&& deviceTask.DeviceUniqueNo == request.DeviceUniqueNo)
.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
@@ -331,35 +329,20 @@ public class AssignmentService : IAssignmentService
} }
private async Task<(long? StartId, List<long> OtherIds)> GetStartIdAndOtherIdsAsync(string deviceUniqueNo) private async Task<long?> GetStartIdAsync(string deviceUniqueNo)
{ {
var limitTime = DateTime.Now.AddDays(-3); var limitTime = DateTime.Now.AddDays(-3);
var types = new List<DeviceTaskEnumType>
{
DeviceTaskEnumType.UploadRecord,
DeviceTaskEnumType.SyncDateTime
};
//获取其他任务ID
var otherIds = await _dbContext.Queryable<DeviceTaskEntity>()
.Where(x => x.DeviceUniqueNo == deviceUniqueNo)
.Where(x => types.Contains(x.Type))
.Where(x => x.Status == DeviceTaskStatusEnumType.Wait)
.Select(x => x.Id)
.ToListAsync();
//排除UploadRecord,SyncDateTime的任务,获取最近的任务ID
var limitData = await _dbContext.Queryable<DeviceTaskEntity>() var limitData = await _dbContext.Queryable<DeviceTaskEntity>()
.Where(x => x.ModifiedTime >= limitTime) .Where(x => x.ModifiedTime >= limitTime)
.Where(x => x.DeviceUniqueNo == deviceUniqueNo) .Where(x => x.DeviceUniqueNo == deviceUniqueNo)
.Where(x => !otherIds.Contains(x.Id))
.OrderBy(x => x.Id) .OrderBy(x => x.Id)
.Select(x => new { x.Id }) .Select(x => new { x.Id })
.FirstAsync(); .FirstAsync();
var startId = limitData?.Id; var startId = limitData?.Id;
return (startId, otherIds); return startId;
} }