服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-10-28 c5c41deac02df2ac552f7eb51e8b9b5f5dcc5472
计划任务更新
已修改4个文件
182 ■■■■ 文件已修改
Tiger.Business.MES/Task/TskJob.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business/Services/Base/TigerJobBase.cs 179 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/TSK/TSK_TRIG.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Task/TskJob.cs
@@ -65,6 +65,7 @@
                    Minutes = input.Minutes,
                    Hours = input.Hours,
                    Days = input.Days,
                    Interval = input.Interval,
                };
                TSK_TRIG tskTrig = Biz.Db.Queryable<TSK_TRIG>().Where(x => x.JobId == _job.ID).First() ?? new()
                {
Tiger.Business/Services/Base/TigerJobBase.cs
@@ -25,13 +25,15 @@
        /// <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(),
@@ -66,11 +68,12 @@
            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");
@@ -93,7 +96,7 @@
            //保存到数据库
            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)
@@ -122,81 +125,93 @@
        {
            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;
        }
Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs
@@ -24,6 +24,7 @@
        public int Minutes { get; set; }
        public int Hours { get; set; }
        public int Days { get; set; }
        public double Interval { get; set; }
    }
    public class TskJobInput
Tiger.Model.Net/Entitys/TSK/TSK_TRIG.cs
@@ -197,6 +197,7 @@
        public int Hours { get; set; }
        public int Days { get; set; }
        public int Weekday { get; set; }
        public double Interval { get; set; }
        public enum EveryType
        {