using Quartz;
using System.Diagnostics;
using WIDESEA_Comm.LogInfo;
namespace WIDESEA_WCS.Jobs
{
public class JobBase
{
///
/// 执行指定任务
///
///
///
public string ExecuteJob(IJobExecutionContext context, Func func)
{
//记录Job时间
Stopwatch stopwatch = new Stopwatch();
//JOBID
string jobid = context.JobDetail.Key.Name;
//JOB组名
string groupName = context.JobDetail.Key.Group;
//日志
string jobHistory = $"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行开始】【Id:{jobid},组别:{groupName}】";
//耗时
double taskSeconds = 0;
try
{
stopwatch.Start();
func();//执行任务
stopwatch.Stop();
jobHistory += $",【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行成功】";
}
catch (Exception ex)
{
JobExecutionException e2 = new JobExecutionException(ex);
//true 是立即重新执行任务
e2.RefireImmediately = true;
jobHistory += $",【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行失败:{ex.Message}】";
}
finally
{
taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds, 3);
jobHistory += $",【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行结束】(耗时:{taskSeconds}秒)";
}
return jobHistory;
}
public void ExecuteJob(IJobExecutionContext context, Action action)
{
//记录Job时间
Stopwatch stopwatch = new Stopwatch();
//JOBID
string jobid = context.JobDetail.Key.Name;
//JOB组名
string groupName = context.JobDetail.Key.Group;
//日志
string jobHistory = $"【组别:{groupName}】";
//耗时
double taskSeconds = 0;
try
{
stopwatch.Start();
action(context);//执行任务
stopwatch.Stop();
jobHistory += $",【执行成功】";
}
catch (Exception ex)
{
jobHistory += $",【执行失败:{ex.Message}】+";
}
finally
{
taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds, 3);
jobHistory += $"(耗时:{taskSeconds}秒)";
if (taskSeconds > 1 || jobHistory.Contains("执行失败"))
WriteLog.Info(jobid + "执行记录").Write(jobHistory, jobid + "执行记录");
}
}
}
}