using Quartz; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.Server { /// /// 单个任务 /// [DisallowConcurrentExecution]//此特性标识 必须等待这次任务执行完成后,才能执行下次任务 internal class DataDockingSingleJob : IJob { public const string ProblemTagName = "Problem"; public Task Execute(IJobExecutionContext context) { return Task.Run(() => { //获取配置 var dataMap = context.MergedJobDataMap; var problem = (Model.DataDockingProblem)dataMap[ProblemTagName]; if (problem == null) return; try { var lastFlowRecord = new RedisCache.MonitorDataDockingFlowRecordCacheHelper().GetLastRecord(problem.CorpID,problem.ConfigureID); if (lastFlowRecord == null || (DateTime.Now - lastFlowRecord.DockingTime).TotalSeconds > problem.Interruption) { switch (problem.HandleMethod) { case Model.DataDockingProblem.eHandleMethod: { var handleParas = Model.DataDockingProblem.SmsHandleParameters.ToModel(problem.HandleParas); if (handleParas == null||handleParas.Account==null||handleParas.Telephones==null||handleParas.Telephones.Count<1) { LogHelper.Error($"数据对接问题,配置名称:{problem.Name},处理参数配置错误:{problem.HandleParas}"); } else { DataDockingSmsHelper.Send(problem,handleParas); } } break; } } } catch (Exception ex) { LogHelper.Error($"数据对接问题,任务执行出错,配置名称:{problem.Name}", ex); var e = new JobExecutionException(ex); throw e; } }); } } }