From 34380836fee980ccb7bdff70d4f72c66bdb3d3dc Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期一, 28 十月 2024 22:20:57 +0800
Subject: [PATCH] 计划任务优化

---
 Tiger.Business/Services/Base/InterfaceServiceNew.cs |   41 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/Tiger.Business/Services/Base/InterfaceServiceNew.cs b/Tiger.Business/Services/Base/InterfaceServiceNew.cs
index 5b362a3..d827d0a 100644
--- a/Tiger.Business/Services/Base/InterfaceServiceNew.cs
+++ b/Tiger.Business/Services/Base/InterfaceServiceNew.cs
@@ -541,6 +541,47 @@
         }
 
         /// <summary>
+        /// 绔嬪嵆杩愯
+        /// </summary>
+        /// <param name="jobname"></param>
+        public ApiAction ImmediateRun<TJob>(TJob newEntity, string jobname) where TJob : class, ITJob
+        {
+            ApiAction apiAction = new();
+            try
+            {
+                if (JobManager.AllSchedules.Any(q => q.Name == jobname))
+                {
+                    JobManager.RemoveJob(jobname);
+                    string guid = Guid.NewGuid().ToString("N");
+                    TSK_JOB job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == jobname).First();
+                    var trigger = Biz.Db.Queryable<TSK_TRIG>().Where(x => x.JobId == job.ID).First();
+                    TrigArgs args = JsonConvert.DeserializeObject<TrigArgs>(job.Triggers[0].Args);
+                    args.runType = RunType.ToRunNow;
+                    JobManager.AddJob<TJob>((s) => GenerateSchedule(args, s.WithName(jobname)));
+                    trigger.Status = TSK_TRIG.Statuss.Running.GetValue();
+                    trigger.Args = JsonConvert.SerializeObject(args);
+
+                    var db = Biz.Db;
+                    //淇濆瓨鍒版暟鎹簱
+                    var dbTran = db.UseTran(() =>
+                    {
+                        db.Updateable(trigger, "system_ImmediateRun_job").UpdateColumns(q => new { q.Status, q.Args, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
+                    });
+                    if (!dbTran.IsSuccess)
+                    {
+                        Logger.Scheduler.Fatal(dbTran.ErrorException, $"绔嬪嵆杩愯宸ヤ綔浠诲姟鏃朵繚瀛樼姸鎬佸埌鏁版嵁搴撳紓甯�");
+                    }
+                    apiAction.LocaleMsg = new($"绔嬪嵆杩愯宸ヤ綔浠诲姟鎴愬姛");
+                }
+            }
+            catch (System.Exception ex)
+            {
+                apiAction.CatchExceptionWithLog(ex);
+            }
+            return apiAction;
+        }
+
+        /// <summary>
         /// 鍋滄鏈嶅姟
         /// </summary>
         public void Stop()

--
Gitblit v1.9.3