diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs index daf39754..fcfce900 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs @@ -39,7 +39,7 @@ public class AssignmentService : IAssignmentService var data = await GetDataAsync(request); if (data.IsEmpty()) return new List(); - //await HandlerOldDeviceGainfoAsync(data); + await HandlerOldDeviceGainfoAsync(data); await HandlerTimePeriodAsync(data); var deviceUploadInfos = await GetDeviceUploadRecordInfosAsync(data); @@ -194,42 +194,45 @@ public class AssignmentService : IAssignmentService task.ModifiedTime = now; }); - // if (await _dbContext.Queryable().Where(x => x.Status != OldDeviceGainfoEnumType.Deleted).AnyAsync()) - // { - // var dCodes = await _dbContext.Queryable() - // .LeftJoin((x, ga) => x.UserNo == ga.No) - // .Where(x => taskIds.Contains(x.Id)) - // .Where(x => x.Status == DeviceTaskStatusEnumType.Process) - // .Select((x, ga) => new - // { - // x.DeviceUniqueNo, - // ga.Code, - // ga.No - // }) - // .ToListAsync(); - // - // var oldDeviceGainfoWhere = LinqExpressionExtensions.False(); - // dCodes.ForEach(item => { oldDeviceGainfoWhere = oldDeviceGainfoWhere.Or(x => x.Code == item.Code && x.DeviceUniqueNo == item.DeviceUniqueNo); }); - // var oldData = await _dbContext.Queryable().Where(x => x.Status == OldDeviceGainfoEnumType.Wait) - // .Where(oldDeviceGainfoWhere) - // .ToListAsync(); - // - // oldData.ForEach(d => - // { - // var current = dCodes.First(x => x.Code == d.Code); - // var task = deviceTasks.FirstOrDefault(x => x.UserNo == current.No && x.DeviceUniqueNo == current.DeviceUniqueNo); - // if (task != null) - // { - // d.Status = task.Status == DeviceTaskStatusEnumType.Success - // ? OldDeviceGainfoEnumType.Deleted - // : OldDeviceGainfoEnumType.Error; - // - // d.Remark = task.ResultMessage; - // } - // }); - // - // await _dbContext.UpdateAsync(oldData); - // } + if (await _dbContext.Queryable().Where(x => x.Status != OldDeviceGainfoEnumType.Deleted).AnyAsync()) + { + var dCodes = await _dbContext.Queryable() + .LeftJoin((x, ga) => x.UserNo == ga.No) + .Where(x => taskIds.Contains(x.Id)) + .Where(x => x.Status == DeviceTaskStatusEnumType.Process) + .Select((x, ga) => new + { + x.DeviceUniqueNo, + ga.Code, + ga.No + }) + .ToListAsync(); + + var oldDeviceGainfoWhere = LinqExpressionExtensions.False(); + dCodes.ForEach(item => { oldDeviceGainfoWhere = oldDeviceGainfoWhere.Or(x => x.Code == item.Code && x.DeviceUniqueNo == item.DeviceUniqueNo); }); + var oldData = await _dbContext.Queryable().Where(x => x.Status == OldDeviceGainfoEnumType.Wait) + .Where(oldDeviceGainfoWhere) + .ToListAsync(); + + oldData.ForEach(d => + { + var current = dCodes.FirstOrDefault(x => x.Code == d.Code); + if (current != null) + { + var task = deviceTasks.FirstOrDefault(x => x.UserNo == current.No && x.DeviceUniqueNo == current.DeviceUniqueNo); + if (task != null) + { + d.Status = task.Status == DeviceTaskStatusEnumType.Success + ? OldDeviceGainfoEnumType.Deleted + : OldDeviceGainfoEnumType.Error; + + d.Remark = task.ResultMessage; + } + } + }); + + await _dbContext.UpdateAsync(oldData); + } await _dbContext.UpdateAsync(deviceTasks); @@ -391,7 +394,8 @@ public class AssignmentService : IAssignmentService { var oldDeviceGainfoWhere = LinqExpressionExtensions.False(); data.ForEach(item => { oldDeviceGainfoWhere = oldDeviceGainfoWhere.Or(x => x.Code == item.UserCode && x.DeviceUniqueNo == item.DeviceUniqueNo); }); - var oldData = await _dbContext.Queryable().Where(x => x.Status == OldDeviceGainfoEnumType.Wait || x.Status == OldDeviceGainfoEnumType.Error) + var oldData = await _dbContext.Queryable() + .Where(x => x.Status == OldDeviceGainfoEnumType.Wait || x.Status == OldDeviceGainfoEnumType.Error) .Where(oldDeviceGainfoWhere) .ToListAsync();