fix 删除任务设置所有为取消判断

This commit is contained in:
2024-03-14 20:53:56 +08:00
parent 7a6bedf3f4
commit 7da5fdcb2f

View File

@@ -64,34 +64,48 @@ public class CancelDuplicationTaskHandler : IAsyncChannelHandler<CancelDuplicati
.Where(x => x.Status == DeviceTaskStatusEnumType.Wait) .Where(x => x.Status == DeviceTaskStatusEnumType.Wait)
.Where(x => x.Id != item.Id) .Where(x => x.Id != item.Id)
.Select(x => new IdVersion { Id = x.Id, Version = x.Version }).ToList(); .Select(x => new IdVersion { Id = x.Id, Version = x.Version }).ToList();
ignoreData.ForEach(p =>
{
where = where.Or(x => x.Id == p.Id && x.Version == p.Version && x.Status == DeviceTaskStatusEnumType.Wait);
});
} }
//最新一条删除人员信息
else if (item.Type == DeviceTaskEnumType.Delete && item.Status == DeviceTaskStatusEnumType.Wait) else if (item.Type == DeviceTaskEnumType.Delete && item.Status == DeviceTaskStatusEnumType.Wait)
{ {
ignoreData = data.Where(x => (x.Type == DeviceTaskEnumType.Add || x.Type == DeviceTaskEnumType.Delete)) //判断是否成功
.Where(x => x.Status == DeviceTaskStatusEnumType.Wait) if (await db.Queryable<DeviceTaskEntity>().Where(x => x.UserNo == item.UserNo)
.Where(x => x.Id != item.Id) .Where(x => x.DeviceUniqueNo == item.DeviceUniqueNo)
.Select(x => new IdVersion { Id = x.Id, Version = x.Version }).ToList(); .Where(x => x.TenantId == item.TenantId).Where(x => x.Status == DeviceTaskStatusEnumType.Success).AnyAsync())
ignoreData.ForEach(p =>
{ {
where = where.Or(x => x.Id == p.Id && x.Version == p.Version && x.Status == DeviceTaskStatusEnumType.Wait); 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);
if (beforeTask != null) ignoreData.Add(beforeTask);
}
else
{
ignoreData.AddRange(data.Where(x => x.Type == DeviceTaskEnumType.Add
|| x.Type == DeviceTaskEnumType.Delete
|| x.Type == DeviceTaskEnumType.Update)
.Where(x => x.Status == DeviceTaskStatusEnumType.Wait)
.Where(x => x.Id != item.Id)
.Select(x => new IdVersion { Id = x.Id, Version = x.Version })
);
}
} }
if (ignoreData.Any()) if (ignoreData.Any())
{ {
ignoreData.ForEach(p =>
{
where = where.Or(x => x.Id == p.Id && x.Version == p.Version && x.Status == DeviceTaskStatusEnumType.Wait);
});
await db.Updateable<DeviceTaskEntity>() await db.Updateable<DeviceTaskEntity>()
.SetColumns(x => x.Version == x.Version + 1) .SetColumns(x => x.Version == x.Version + 1)
.SetColumns(x => x.Status == DeviceTaskStatusEnumType.Cancel) .SetColumns(x => x.Status == DeviceTaskStatusEnumType.Cancel)
.SetColumns(x => x.CancellationId == item.Id) .SetColumns(x => x.CancellationId == item.Id)
.SetColumns(x => x.ModifiedTime == DateTime.Now) .SetColumns(x => x.ModifiedTime == DateTime.Now)
.Where(where) .Where(where)
.ExecuteCommandAsync(); .ExecuteCommandAsync();
data.ForEach(x => data.ForEach(x =>
{ {