From d9a21b385ae39c16d99b89a7962d5448c9961b40 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Tue, 1 Jul 2025 11:43:19 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96,?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E6=95=B0=E6=8D=AE=E7=94=9F=E6=88=90=E8=BF=87?= =?UTF-8?q?=E5=A4=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Jobs/CreateGetUploadRecordJob.cs | 53 ++++++++++++------- 1 file changed, 35 insertions(+), 18 deletions(-) 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