From f3df724edb00949d52d4d8065a15eca49b621c42 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Sat, 5 Jul 2025 14:11:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=A7=BB=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Jobs/CreateGetUploadRecordJob.cs | 28 ++++++++--------- .../Jobs/CreateSyncServerDateTimeJob.cs | 25 ++++++--------- .../Services/Implements/AssignmentService.cs | 31 +++++-------------- 3 files changed, 30 insertions(+), 54 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/Jobs/CreateGetUploadRecordJob.cs b/Src/Dlhis.ScheduledTask/Jobs/CreateGetUploadRecordJob.cs index d4e3c48a..b17db4e9 100644 --- a/Src/Dlhis.ScheduledTask/Jobs/CreateGetUploadRecordJob.cs +++ b/Src/Dlhis.ScheduledTask/Jobs/CreateGetUploadRecordJob.cs @@ -30,6 +30,19 @@ public class CreateGetUploadRecordJob : BaseJob .OrderByDescending(x => x.Id) .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().Where(x => x.Id == id).ExecuteCommandAsync(); + deviceTask = null; + } + } + if (deviceTask == null) { await DbContext.InsertAsync(new DeviceTaskEntity @@ -44,21 +57,6 @@ public class CreateGetUploadRecordJob : BaseJob 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); - } - } } } } \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/Jobs/CreateSyncServerDateTimeJob.cs b/Src/Dlhis.ScheduledTask/Jobs/CreateSyncServerDateTimeJob.cs index 8b580825..9417c7cb 100644 --- a/Src/Dlhis.ScheduledTask/Jobs/CreateSyncServerDateTimeJob.cs +++ b/Src/Dlhis.ScheduledTask/Jobs/CreateSyncServerDateTimeJob.cs @@ -29,6 +29,16 @@ public class CreateSyncServerDateTimeJob : BaseJob .OrderByDescending(x => x.Id) .FirstAsync(); + if (deviceTask != null) + { + if (deviceTask.Status is DeviceTaskStatusEnumType.Success or DeviceTaskStatusEnumType.Process or DeviceTaskStatusEnumType.Error) + { + var id = deviceTask.Id; + await DbContext.Deleteable().Where(x => x.Id == id).ExecuteCommandAsync(); + deviceTask = null; + } + } + if (deviceTask == null) { await DbContext.InsertAsync(new DeviceTaskEntity @@ -44,21 +54,6 @@ public class CreateSyncServerDateTimeJob : BaseJob 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); - } - } } } } \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs index 840c49bb..d412ef31 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs @@ -241,8 +241,8 @@ public class AssignmentService : IAssignmentService private async Task> GetDataAsync(DeviceTaskGetRequest request) { - (long? startId, List otherIds) = await GetStartIdAndOtherIdsAsync(request.DeviceUniqueNo); - if (!startId.HasValue && otherIds.IsEmpty()) + var startId = await GetStartIdAsync(request.DeviceUniqueNo); + if (!startId.HasValue) { return new List(); } @@ -255,12 +255,10 @@ public class AssignmentService : IAssignmentService .LeftJoin((deviceTask, device, ga, gaLeave) => deviceTask.UserNo == gaLeave.No) .LeftJoin((deviceTask, device, ga, gaLeave, department) => department.No == ga.DepartmentNo) .LeftJoin((deviceTask, device, ga, gaLeave, department, deviceRegistry) => deviceRegistry.DeviceUniqueNo == deviceTask.DeviceUniqueNo) - .WhereIF(startId.HasValue, (deviceTask, device) => - (deviceTask.Id >= startId || otherIds.Contains(deviceTask.Id)) + .Where( (deviceTask, device) => + deviceTask.Id >= startId && 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.Process && SqlFunc.DateDiff(DateType.Minute, deviceTask.ModifiedTime, DateTime.Now) > 10 @@ -331,35 +329,20 @@ public class AssignmentService : IAssignmentService } - private async Task<(long? StartId, List OtherIds)> GetStartIdAndOtherIdsAsync(string deviceUniqueNo) + private async Task GetStartIdAsync(string deviceUniqueNo) { var limitTime = DateTime.Now.AddDays(-3); - var types = new List - { - DeviceTaskEnumType.UploadRecord, - DeviceTaskEnumType.SyncDateTime - }; - //获取其他任务ID - var otherIds = await _dbContext.Queryable() - .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() .Where(x => x.ModifiedTime >= limitTime) .Where(x => x.DeviceUniqueNo == deviceUniqueNo) - .Where(x => !otherIds.Contains(x.Id)) .OrderBy(x => x.Id) .Select(x => new { x.Id }) .FirstAsync(); var startId = limitData?.Id; - return (startId, otherIds); + return startId; }