diff --git a/Src/Dlhis.ScheduledTask/Jobs/CreateGetUploadRecordJob.cs b/Src/Dlhis.ScheduledTask/Jobs/CreateGetUploadRecordJob.cs index 433ca81a..f62dcaee 100644 --- a/Src/Dlhis.ScheduledTask/Jobs/CreateGetUploadRecordJob.cs +++ b/Src/Dlhis.ScheduledTask/Jobs/CreateGetUploadRecordJob.cs @@ -22,25 +22,42 @@ public class CreateGetUploadRecordJob : BaseJob .Where(x => x.Type == DeviceTypeEnumType.Attendance || x.Type == DeviceTypeEnumType.Door) .ToListAsync(); - //过滤处理中的任务 - var currentUniqueNos = await DbContext.Queryable() - .Where(x => x.Type == DeviceTaskEnumType.UploadRecord) - .Where(x => x.Status == DeviceTaskStatusEnumType.Process || x.Status == DeviceTaskStatusEnumType.Wait) - .Select(x => x.DeviceUniqueNo) - .ToListAsync(); - - var tasks = devices.Where(x => !currentUniqueNos.Contains(x.UniqueNo)).Select(x => new DeviceTaskEntity + foreach (var device in devices) { - DeviceUniqueNo = x.UniqueNo, - Status = DeviceTaskStatusEnumType.Wait, - DeviceType = x.Type, - TenantId = x.TenantId, - Version = 0, - Type = DeviceTaskEnumType.UploadRecord, - Priority = 50, - Source = "定时任务创建设备获取通行记录任务" - }).ToList(); + var deviceTask = await DbContext.Queryable() + .Where(x => x.DeviceUniqueNo == device.UniqueNo) + .Where(x => x.Type == DeviceTaskEnumType.UploadRecord) + .OrderByDescending(x => x.ModifiedTime) + .FirstAsync(); - await DbContext.InsertAsync(tasks); + if (deviceTask == null) + { + deviceTask = new DeviceTaskEntity + { + DeviceUniqueNo = device.UniqueNo, + Status = DeviceTaskStatusEnumType.Wait, + DeviceType = device.Type, + TenantId = device.TenantId, + Version = 0, + Type = DeviceTaskEnumType.UploadRecord, + Priority = 50, + Source = "定时任务创建设备获取通行记录任务" + }; + + await DbContext.InsertAsync(deviceTask); + } + else + { + if (deviceTask.Status == DeviceTaskStatusEnumType.Success) + { + deviceTask.Status = DeviceTaskStatusEnumType.Wait; + deviceTask.Version = 0; + deviceTask.CreateTime = DateTime.Now; + deviceTask.ModifiedTime = DateTime.Now; + + await DbContext.UpdateAsync(deviceTask); + } + } + } } } \ No newline at end of file