using Quartz;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
namespace IStation.Server
|
{
|
/// <summary>
|
/// 单个任务
|
/// </summary>
|
[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;
|
}
|
});
|
|
}
|
|
|
|
}
|
}
|