fix 逻辑优化
This commit is contained in:
@@ -83,11 +83,29 @@ public class CancelDuplicationTaskHandler : IAsyncChannelHandler<CancelDuplicati
|
||||
}
|
||||
else
|
||||
{
|
||||
var currentIds = new List<long> { item.Id };
|
||||
var beforeTask = data.Where(x => x.Type == DeviceTaskEnumType.Add || x.Type == DeviceTaskEnumType.Update)
|
||||
.Select(x => new IdVersion { Id = x.Id, Version = x.Version })
|
||||
.FirstOrDefault(x => x.Id != item.Id);
|
||||
.Where(x => !currentIds.Contains(x.Id))
|
||||
.Where(x => x.Status == DeviceTaskStatusEnumType.Wait)
|
||||
.FirstOrDefault();
|
||||
|
||||
if (beforeTask != null) ignoreData.Add(beforeTask);
|
||||
//逻辑正确,最终beforeTask.type == DeviceTaskEnumType.Add
|
||||
while (beforeTask != null && beforeTask.Type == DeviceTaskEnumType.Update)
|
||||
{
|
||||
ignoreData.Add(new IdVersion() { Id = beforeTask.Id, Version = beforeTask.Version });
|
||||
currentIds.Add(beforeTask.Id);
|
||||
|
||||
beforeTask = data.Where(x => x.Type == DeviceTaskEnumType.Add || x.Type == DeviceTaskEnumType.Update)
|
||||
.Where(x => !currentIds.Contains(x.Id))
|
||||
.Where(x => x.Status == DeviceTaskStatusEnumType.Wait)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
if (beforeTask != null)
|
||||
{
|
||||
ignoreData.Add(new IdVersion() { Id = beforeTask.Id, Version = beforeTask.Version });
|
||||
ignoreData.Add(new IdVersion() { Id = item.Id, Version = item.Version });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user