From c5c41deac02df2ac552f7eb51e8b9b5f5dcc5472 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期一, 28 十月 2024 12:51:38 +0800
Subject: [PATCH] 计划任务更新

---
 Tiger.Business.MES/Task/TskJob.cs                           |    1 
 Tiger.Business/Services/Base/TigerJobBase.cs                |  179 ++++++++++++++++++++++++--------------------
 Tiger.Model.Net/Entitys/TSK/TSK_TRIG.cs                     |    1 
 Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs |    1 
 4 files changed, 100 insertions(+), 82 deletions(-)

diff --git a/Tiger.Business.MES/Task/TskJob.cs b/Tiger.Business.MES/Task/TskJob.cs
index be82be3..a3b3afa 100644
--- a/Tiger.Business.MES/Task/TskJob.cs
+++ b/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()
                 {
diff --git a/Tiger.Business/Services/Base/TigerJobBase.cs b/Tiger.Business/Services/Base/TigerJobBase.cs
index da8665f..af7a6f8 100644
--- a/Tiger.Business/Services/Base/TigerJobBase.cs
+++ b/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;
         }
diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs
index a84304d..5400955 100644
--- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs
+++ b/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
diff --git a/Tiger.Model.Net/Entitys/TSK/TSK_TRIG.cs b/Tiger.Model.Net/Entitys/TSK/TSK_TRIG.cs
index 5f0ab0b..a1a74df 100644
--- a/Tiger.Model.Net/Entitys/TSK/TSK_TRIG.cs
+++ b/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
         {

--
Gitblit v1.9.3