diff --git a/DOAN.Tasks/TaskScheduler/Job_Device_Execute.cs b/DOAN.Tasks/TaskScheduler/Job_Device_Execute.cs new file mode 100644 index 0000000..e2b3794 --- /dev/null +++ b/DOAN.Tasks/TaskScheduler/Job_Device_Execute.cs @@ -0,0 +1,53 @@ +using Infrastructure; +using Infrastructure.Attribute; +using Microsoft.Extensions.DependencyInjection; +using Quartz; +using Quartz.Impl.Triggers; +using Quartz.Impl; +using SqlSugar.IOC; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using DOAN.Model.System; +using DOAN.Model.MES.dev; +using DOAN.Model.MES.dev.Dto; +using DOAN.Service.MES.dev.IService; + +namespace DOAN.Tasks.TaskScheduler +{ + /// + /// 设备管理 调度每日的巡检 + /// + [AppService(ServiceType = typeof(Job_Device_Execute), ServiceLifetime = LifeTime.Scoped)] + public class Job_Device_Execute : JobBase, IJob + { + private readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); + + private IDeviceTaskExecuteService deviceTaskExecute; + public Job_Device_Execute(IDeviceTaskExecuteService deviceTaskExecute) + { + this.deviceTaskExecute = deviceTaskExecute; + } + public async Task Execute(IJobExecutionContext context) + { + await ExecuteJob(context, async () => await Run(context)); + } + public async Task Run(IJobExecutionContext context) + { + AbstractTrigger trigger = (context as JobExecutionContextImpl).Trigger as AbstractTrigger; + //var info = await tasksQzService.CopyNew().GetByIdAsync(trigger.JobName); + // CopyNew 在多线程环境中,为每个线程或任务创建新的 SugarScope 实例以避免线程安全问题 + var info = await DbScoped.SugarScope.CopyNew().Queryable().FirstAsync(f => f.ID == trigger.JobName); + if (info == null) + { + throw new CustomException($"任务{trigger?.JobName}设备管理调度请求执行失败,任务不存在"); + } + + int result = deviceTaskExecute.ScanEveryTask(); + logger.Info($"(job)任务【{info.Name}】设备管理调度请求执行结果=" + result); + + } + } +}