using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Enums; using Dlhis.ScheduledTask.Attributes; namespace Dlhis.ScheduledTask.Jobs; /// /// 创建上传设备数据任务 /// [RecurringJob(nameof(CreateGetUploadRecordJob), "0 0/10 * * * ?", Name = "创建上传设备数据任务")] public class CreateGetUploadRecordJob : BaseJob { public CreateGetUploadRecordJob(IServiceProvider serviceProvider) : base(serviceProvider) { } protected override async Task RunAsync(IServiceProvider serviceProvider) { var devices = await DbContext.Queryable() .Where(x => x.Enable) .Where(x => x.Type == DeviceTypeEnumType.Attendance || x.Type == DeviceTypeEnumType.Door) .ToListAsync(); //过滤处理中的任务 var currentUniqueNos = await DbContext.Queryable() .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, Status = DeviceTaskStatusEnumType.Wait, DeviceType = x.Type, TenantId = x.TenantId, Version = 0, Type = DeviceTaskEnumType.UploadRecord, Priority = 50, Source = "定时任务创建设备获取通行记录任务" }).ToList(); await DbContext.InsertAsync(tasks); } }