using Rhea.Common; using Sundial; using System; using Tiger.IBusiness; using Tiger.Model; namespace Tiger.Business { /// /// 作业基类 /// public class TigerJobBase { /// /// 开始时间 /// public static DateTime StartTime { get; set; } /// /// 保存日志 /// public static ApiAction SaveLog(JobExecutingContext context,string remark) { ApiAction action = new ApiAction(); Type type = Type.GetType(context.JobDetail.JobType, throwOnError: true); var job = Biz.Db.Queryable().Where(x=>x.JobName == context.JobId && x.JobType == type.Name).First(); var logentity = new TSK_LOG { JobId = job.ID, TriggerType =context.JobDetail.JobType, AssemblyName = context.JobDetail.AssemblyName, Args = context.Trigger.Args, Operation = context.Trigger.Status.ToString(), Status = "Successed", StartTime = StartTime, EndTime = context.Trigger.EndTime, ElapsedTime = context.Trigger.ElapsedTime, Remark = remark }; var db = Business.Biz.Db; //保存到数据库 var dbTran = db.UseTran(() => { db.Insertable(logentity).ExecuteCommand(); }); if (!dbTran.IsSuccess) { action.GetResponse().CatchExceptionWithLog(dbTran.ErrorException, $"作业保存到数据库异常"); } return action; } /// /// 保存日志 /// /// /// /// public static ApiAction SaveFluentSchedulerLog(string JobName,string status, string remark) { ApiAction action = new ApiAction(); var job = Biz.Db.Queryable().Where(x => x.JobName == JobName).IncludesAllFirstLayer().First(); var trig = job.Triggers?[0]; if (trig != null) { trig.ElapsedTime = (long)Math.Ceiling((DateTime.Now-StartTime).TotalMilliseconds); trig.StartTime = StartTime; trig.EndTime = DateTime.Now; } else { action.IsSuccessed = false; action.LocaleMsg = new($"工作任务不存在"); Logger.Scheduler.Error("工作任务不存在\r\n"); return action; } var logentity = new TSK_LOG { JobId = job.ID, AssemblyName = job.AssemblyName, Args = trig.Args, //Operation = job.Triggers?[0].Status.ToString(), Status = status, //job.Triggers?[0].Status.ToString(), StartTime = trig.StartTime, EndTime = trig.EndTime, ElapsedTime = trig.ElapsedTime, Remark = remark }; var db = Business.Biz.Db; //保存到数据库 var dbTran = db.UseTran(() => { db.Updateable(trig, "System_Job").UpdateColumns(q => new { q.StartTime, q.ElapsedTime,q.UpdatedTime,q.UPDATE_USER}).ExecuteCommand(); db.Insertable(logentity).ExecuteCommand(); }); if (!dbTran.IsSuccess) { action.GetResponse().CatchExceptionWithLog(dbTran.ErrorException, $"作业日志保存到数据库异常"); } Logger.Scheduler.Info($"计划调度(名称:{JobName})作业日志保存到数据库完成\r\n"); return action; } } }