using jiajie; using jiajie.Model.Entity; using jiajie.Services.Sys.TasksQzs; using Quartz; using System; using System.Diagnostics; using System.Threading.Tasks; namespace jiajie.Tasks { public class JobBase { public ITasksQzServices _tasksQzServices; /// /// 执行指定任务 /// /// /// public async Task ExecuteJob(IJobExecutionContext context, Func func) { //记录Job时间 Stopwatch stopwatch = new Stopwatch(); //JOBID long jobid = context.JobDetail.Key.Name.ObjToInt(); //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(); await 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}秒)"; if (_tasksQzServices != null) { var model = await _tasksQzServices.GetOneById(jobid); if (model != null) { model.RunTimes += 1; var separator = "
"; // 这里注意数据库字段的长度问题,超过限制,会造成数据库remark不更新问题。 model.Remark = jobHistory; //model.Remark = $"{jobHistory}{separator}" + string.Join(separator, StringHelper.GetTopDataBySeparator(model.Remark, separator, 9)); await _tasksQzServices.UpdOne(model); } } } Console.Out.WriteLine(jobHistory); return jobHistory; } } }