| | |
| | | /// <summary> |
| | | /// 保存日志 |
| | | /// </summary> |
| | | public static ApiAction SaveLog(JobExecutingContext context,string remark) { |
| | | 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<TSK_JOB>().Where(x=>x.JobName == context.JobId && x.JobType == type.Name).First(); |
| | | var logentity = new TSK_LOG { |
| | | var job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == context.JobId && x.JobType == type.Name).First(); |
| | | var logentity = new TSK_LOG |
| | | { |
| | | JobId = job.ID, |
| | | TriggerType =context.JobDetail.JobType, |
| | | TriggerType = context.JobDetail.JobType, |
| | | AssemblyName = context.JobDetail.AssemblyName, |
| | | Args = context.Trigger.Args, |
| | | Operation = context.Trigger.Status.ToString(), |
| | |
| | | ApiAction action = new ApiAction(); |
| | | if (Trig != null) |
| | | { |
| | | Trig.ElapsedTime = (long)Math.Ceiling((DateTime.Now-StartTime).TotalMilliseconds); |
| | | Trig.StartTime = StartTime; |
| | | Trig.ElapsedTime = (long)Math.Ceiling((DateTime.Now - StartTime).TotalMilliseconds); |
| | | Trig.StartTime = StartTime; |
| | | Trig.EndTime = DateTime.Now; |
| | | } |
| | | else { |
| | | else |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = new($"工作任务不存在"); |
| | | Logger.Scheduler.Error("工作任务不存在\r\n"); |
| | |
| | | //保存到数据库 |
| | | var dbTran = db.UseTran(() => |
| | | { |
| | | db.Updateable(Trig, "System_Job").UpdateColumns(q => new { q.StartTime,q.LastRunTime, q.ElapsedTime,q.UpdatedTime,q.UPDATE_USER}).ExecuteCommand(); |
| | | db.Updateable(Trig, "System_Job").UpdateColumns(q => new { q.StartTime, q.LastRunTime, q.ElapsedTime, q.UpdatedTime, q.UPDATE_USER }).ExecuteCommand(); |
| | | db.Insertable(logentity).ExecuteCommand(); |
| | | }); |
| | | if (!dbTran.IsSuccess) |
| | |
| | | { |
| | | TskJobInput tskJobInput = new TskJobInput(); |
| | | var dateTime = DateTime.Now; |
| | | //按时间类型来运行 |
| | | switch (Args.Type) |
| | | if (Args.Interval > 0) |
| | | { |
| | | case TrigArgs.EveryType.Milliseconds: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddMilliseconds(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalMilliseconds > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddMilliseconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Seconds: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddSeconds(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalSeconds > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddSeconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Minutes: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddMinutes(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalMinutes > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddMinutes(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Hours: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddHours(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalHours > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddHours(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Days: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Weeks: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-7); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * 7; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Weekdays: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Months: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddMonths(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddMonths(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | tskJobInput.result = true; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | } |
| | | else |
| | | { |
| | | //按时间类型来运行 |
| | | switch (Args.Type) |
| | | { |
| | | case TrigArgs.EveryType.Milliseconds: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddMilliseconds(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalMilliseconds > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddMilliseconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Seconds: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddSeconds(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalSeconds > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddSeconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Minutes: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddMinutes(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalMinutes > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddMinutes(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Hours: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddHours(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalHours > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddHours(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Days: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Weeks: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-7); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * 7; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Weekdays: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | case TrigArgs.EveryType.Months: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddMonths(-Args.ToRunEvery); |
| | | tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = dateTime.AddMonths(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | } |
| | | } |
| | | return tskJobInput; |
| | | } |