fix 删除任务设置所有为取消判断
This commit is contained in:
@@ -64,27 +64,41 @@ 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))
|
//判断是否成功
|
||||||
|
if (await db.Queryable<DeviceTaskEntity>().Where(x => x.UserNo == item.UserNo)
|
||||||
|
.Where(x => x.DeviceUniqueNo == item.DeviceUniqueNo)
|
||||||
|
.Where(x => x.TenantId == item.TenantId).Where(x => x.Status == DeviceTaskStatusEnumType.Success).AnyAsync())
|
||||||
|
{
|
||||||
|
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.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 })
|
||||||
|
);
|
||||||
ignoreData.ForEach(p =>
|
}
|
||||||
{
|
|
||||||
where = where.Or(x => x.Id == p.Id && x.Version == p.Version && x.Status == DeviceTaskStatusEnumType.Wait);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user