using Dlhis.Entity.Basic.Entity; using Dlhis.ScheduledTask.Common.Services; using Hangfire; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Scheduled; using Kurisu.Scheduled.Attributes; namespace Dlhis.ScheduledTask.Jobs; /// /// SAP人员信息同步(按人事范围拆分) /// [RecurringJob(nameof(SyncPersonJob), "0 0 3,12,18 * * ?", Name = "SAP人员信息同步")] public class SyncPersonJob : BaseJob { public SyncPersonJob(IServiceProvider serviceProvider) : base(serviceProvider) { } public override async Task RunAsync(IServiceProvider serviceProvider) { var werks = await DbContext.Queryable() .Where(x => x.Enable) .ToListAsync(); foreach (var werk in werks) { if (werk.BackgroundJobKey.IsEmpty()) { var jobKey = BackgroundJob.Enqueue(x => x.TodoByWerkAsync(werk.Werk)); werk.BackgroundJobKey = jobKey; await DbContext.UpdateAsync(werk); Logger.LogInformation("SAP创建人事范围{werk}后台调度任务", werk.Werk); } } } }