fix 逻辑优化,避免数据生成过多

This commit is contained in:
2025-07-01 11:43:19 +08:00
parent 991ab4afeb
commit d9a21b385a

View File

@@ -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);
}
}
}
}
}