From 807b318ce81c7ee6eb587e4c7cc194f2e1767fe3 Mon Sep 17 00:00:00 2001 From: "qianhao.xu" Date: Wed, 18 Dec 2024 15:49:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=BB=E5=8A=A1=E8=B0=83?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TaskScheduler/Job_Device_Execute.cs | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 DOAN.Tasks/TaskScheduler/Job_Device_Execute.cs 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); + + } + } +}