| | |
| | | /// </summary> |
| | | public class TigerJobBase |
| | | { |
| | | public static Schedule Schedule; |
| | | public static TSK_JOB Job = new TSK_JOB(); |
| | | public static TSK_TRIG Trig = new TSK_TRIG(); |
| | | public static TrigArgs Args = new TrigArgs(); |
| | | public Schedule Schedule; |
| | | public TSK_JOB Job = new TSK_JOB(); |
| | | public TSK_TRIG Trig = new TSK_TRIG(); |
| | | public TrigArgs Args = new TrigArgs(); |
| | | /// <summary> |
| | | /// 开始时间 |
| | | /// </summary> |
| | | public static DateTime StartTime { get; set; } |
| | | public DateTime StartTime { get; set; } |
| | | /// <summary> |
| | | /// 保存日志 |
| | | /// </summary> |
| | | public static ApiAction SaveLog(JobExecutingContext context, string remark) |
| | | public ApiAction SaveLog(JobExecutingContext context, string remark) |
| | | { |
| | | ApiAction action = new ApiAction(); |
| | | Type type = Type.GetType(context.JobDetail.JobType, throwOnError: true); |
| | |
| | | /// <param name="JobName"></param> |
| | | /// <param name="remark"></param> |
| | | /// <returns></returns> |
| | | public static ApiAction SaveFluentSchedulerLog(string status, string remark) |
| | | public ApiAction SaveFluentSchedulerLog(string status, string remark) |
| | | { |
| | | ApiAction action = new ApiAction(); |
| | | if (Trig != null) |
| | |
| | | /// <summary> |
| | | /// 获取任务 |
| | | /// </summary> |
| | | public static void GetJob(string jobType) |
| | | public void GetJob(string jobType) |
| | | { |
| | | Job = Biz.Db.Queryable<TSK_JOB>().Where(q => q.JobType == jobType).IncludesAllFirstLayer().First(); |
| | | Args = JsonConvert.DeserializeObject<TrigArgs>(Job.Triggers[0].Args); |
| | |
| | | /// 判断时间,返回是否可以继续工作任务 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static TskJobInput CheckIFCanGo() |
| | | public TskJobInput CheckHowToDo() |
| | | { |
| | | TskJobInput tskJobInput = new TskJobInput(); |
| | | var dateTime = DateTime.Now; |
| | | if (Args.Interval > 0) |
| | | |
| | | //按时间类型来运行 |
| | | switch (Args.Type) |
| | | { |
| | | 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; |
| | | } |
| | | case TrigArgs.EveryType.Milliseconds: |
| | | dateTime = Trig.LastRunTime ?? DateTime.Now.AddMilliseconds(-Args.ToRunEvery); |
| | | tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalMilliseconds > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = Args.ByInterval == "Y"? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : 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 = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalSeconds > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : 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 = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalMinutes > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : 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 = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalHours > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : 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 = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : 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 = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * 7; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : 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 = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery; |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : 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 = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); |
| | | tskJobInput.input = new() |
| | | { |
| | | startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : dateTime.AddMonths(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | }; |
| | | break; |
| | | } |
| | | return tskJobInput; |
| | | } |