From 7896af53e190bcecea516b1203d5020a0103f155 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期五, 10 一月 2025 09:39:41 +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 842287b..26c6bc2 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; set; }
-        public string Tag { get; set; }
-        public string Name { get; set; }
-
+        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 CheckHowToDo()
+        {
+            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