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