From baaa18ee787727779745ebf0de7f2be66353ada2 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期四, 19 十二月 2024 12:09:08 +0800 Subject: [PATCH] 一些更改 --- Tiger.Business/Services/Base/TigerJobBase.cs | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 166 insertions(+), 10 deletions(-) diff --git a/Tiger.Business/Services/Base/TigerJobBase.cs b/Tiger.Business/Services/Base/TigerJobBase.cs index 0cac359..fce3b38 100644 --- a/Tiger.Business/Services/Base/TigerJobBase.cs +++ b/Tiger.Business/Services/Base/TigerJobBase.cs @@ -1,8 +1,11 @@ -锘縰sing Rhea.Common; +锘縰sing FluentScheduler; +using Newtonsoft.Json; +using Rhea.Common; using Sundial; using System; using Tiger.IBusiness; using Tiger.Model; +using Tiger.Model.Entitys.MES.Position; namespace Tiger.Business { @@ -11,25 +14,31 @@ /// </summary> public class TigerJobBase { - public string Id { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } - public string Tag { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } - public string Name { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } - + 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 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); - 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(), Status = "Successed", - StartTime = context.Trigger.StartTime, + StartTime = StartTime, EndTime = context.Trigger.EndTime, ElapsedTime = context.Trigger.ElapsedTime, Remark = remark @@ -48,5 +57,152 @@ return action; } + /// <summary> + /// 淇濆瓨鏃ュ織 + /// </summary> + /// <param name="JobName"></param> + /// <param name="remark"></param> + /// <returns></returns> + public ApiAction SaveFluentSchedulerLog(string status, string remark) + { + ApiAction action = new ApiAction(); + 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.LastRunTime, q.ElapsedTime, q.UpdatedTime, q.UPDATE_USER }).ExecuteCommand(); + db.Insertable(logentity).ExecuteCommand(); + }); + if (!dbTran.IsSuccess) + { + action.GetResponse().CatchExceptionWithLog(dbTran.ErrorException, $"浣滀笟鏃ュ織淇濆瓨鍒版暟鎹簱寮傚父"); + } + Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Job.JobName})浣滀笟鏃ュ織淇濆瓨鍒版暟鎹簱瀹屾垚\r\n"); + return action; + } + + /// <summary> + /// 鑾峰彇浠诲姟 + /// </summary> + 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); + Trig = Job.Triggers[0]; + } + + /// <summary> + /// 鍒ゆ柇鏃堕棿锛岃繑鍥炴槸鍚﹀彲浠ョ户缁伐浣滀换鍔� + /// </summary> + /// <returns></returns> + public TskJobInput CheckIFCanGo() + { + TskJobInput tskJobInput = new TskJobInput(); + var dateTime = DateTime.Now; + + //鎸夋椂闂寸被鍨嬫潵杩愯 + switch (Args.Type) + { + 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; + } } } -- Gitblit v1.9.3