fix 逻辑优化,避免数据生成过多
This commit is contained in:
@@ -22,25 +22,42 @@ public class CreateGetUploadRecordJob : BaseJob
|
|||||||
.Where(x => x.Type == DeviceTypeEnumType.Attendance || x.Type == DeviceTypeEnumType.Door)
|
.Where(x => x.Type == DeviceTypeEnumType.Attendance || x.Type == DeviceTypeEnumType.Door)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
//过滤处理中的任务
|
foreach (var device in devices)
|
||||||
var currentUniqueNos = await DbContext.Queryable<DeviceTaskEntity>()
|
|
||||||
.Where(x => x.Type == DeviceTaskEnumType.UploadRecord)
|
|
||||||
.Where(x => x.Status == DeviceTaskStatusEnumType.Process || x.Status == DeviceTaskStatusEnumType.Wait)
|
|
||||||
.Select(x => x.DeviceUniqueNo)
|
|
||||||
.ToListAsync();
|
|
||||||
|
|
||||||
var tasks = devices.Where(x => !currentUniqueNos.Contains(x.UniqueNo)).Select(x => new DeviceTaskEntity
|
|
||||||
{
|
{
|
||||||
DeviceUniqueNo = x.UniqueNo,
|
var deviceTask = await DbContext.Queryable<DeviceTaskEntity>()
|
||||||
|
.Where(x => x.DeviceUniqueNo == device.UniqueNo)
|
||||||
|
.Where(x => x.Type == DeviceTaskEnumType.UploadRecord)
|
||||||
|
.OrderByDescending(x => x.ModifiedTime)
|
||||||
|
.FirstAsync();
|
||||||
|
|
||||||
|
if (deviceTask == null)
|
||||||
|
{
|
||||||
|
deviceTask = new DeviceTaskEntity
|
||||||
|
{
|
||||||
|
DeviceUniqueNo = device.UniqueNo,
|
||||||
Status = DeviceTaskStatusEnumType.Wait,
|
Status = DeviceTaskStatusEnumType.Wait,
|
||||||
DeviceType = x.Type,
|
DeviceType = device.Type,
|
||||||
TenantId = x.TenantId,
|
TenantId = device.TenantId,
|
||||||
Version = 0,
|
Version = 0,
|
||||||
Type = DeviceTaskEnumType.UploadRecord,
|
Type = DeviceTaskEnumType.UploadRecord,
|
||||||
Priority = 50,
|
Priority = 50,
|
||||||
Source = "定时任务创建设备获取通行记录任务"
|
Source = "定时任务创建设备获取通行记录任务"
|
||||||
}).ToList();
|
};
|
||||||
|
|
||||||
await DbContext.InsertAsync(tasks);
|
await DbContext.InsertAsync(deviceTask);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (deviceTask.Status == DeviceTaskStatusEnumType.Success)
|
||||||
|
{
|
||||||
|
deviceTask.Status = DeviceTaskStatusEnumType.Wait;
|
||||||
|
deviceTask.Version = 0;
|
||||||
|
deviceTask.CreateTime = DateTime.Now;
|
||||||
|
deviceTask.ModifiedTime = DateTime.Now;
|
||||||
|
|
||||||
|
await DbContext.UpdateAsync(deviceTask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user