From 4a91e38c8839978e10e0ddf0c447f983227f21f7 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期六, 26 十月 2024 11:14:10 +0800
Subject: [PATCH] 计划任务更新

---
 Tiger.Business.MES/Task/TskJob.cs                              |   20 ++++--
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs                   |   73 ++++++++++++------------
 Tiger.Business/Services/Base/InterfaceServiceNew.cs            |   23 ++++---
 Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs |   21 +++++++
 4 files changed, 86 insertions(+), 51 deletions(-)

diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
index 9478f22..5086e8d 100644
--- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
@@ -111,46 +111,47 @@
                 SaveFluentSchedulerLog(Name, "Failed", ex.Message);
             }
         }
+    }//endClass
 
-        public class fTest : TigerJobBase, ITJob
+    public class fTest : TigerJobBase, ITJob
+    {
+        public string Id { get; set; }
+        public string Tag { get; set; }
+        public string Name { get; set; } = typeof(fTest).Name;
+        public fTest()
         {
-            public string Id { get; set; }
-            public string Tag { get; set; }
-            public string Name { get; set; }
-            public fTest()
-            {
-                Id = Guid.NewGuid().ToString("N");
-                Tag = "U9C_MES_GetWo Interface Job";
-                Name = "娴嬭瘯鎺ュ彛";
-            }
+            Id = Guid.NewGuid().ToString("N");
+            Tag = "U9C_MES_GetWo Interface Job";
+        }
 
-            public void Execute()
+        public void Execute()
+        {
+            Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n");
+            try
             {
-                Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n");
-                try
-                {
-                    var _lastRunTime = Biz.SysParam["GetWo_LastRun", "Interface_LastRun"].PARAM_VALUE;
-                    var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddMinutes(-10) : Convert.ToDateTime(_lastRunTime);
-                    //if ((DateTime.Now - LastRunTime).TotalMinutes > 10)
-                    //{
-                    //    GetWoInput input = new GetWoInput
-                    //    {
-                    //        startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"),
-                    //        endTime = LastRunTime.AddMinutes(10).ToString("yyyy-MM-dd HH:mm:ss")
-                    //    };
-                    //    var result = await DI.Resolve<IU9C_MES>().GetBasWo(input);
-                    //    if (!result.IsSuccessed)
-                    //    {
-                    //        Logger.Scheduler.Error($"鑾峰彇宸ュ崟淇℃伅寮傚父:{result.Message}");
-                    //    }
-                    //}
-                    //SaveFluentSchedulerLog("浠嶶9C鑾峰彇宸ュ崟淇℃伅鎴愬姛");
-                    Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚\r\n");
-                }
-                catch (System.Exception ex)
-                {
-                    Logger.Scheduler.Fatal(ex, "鑾峰彇宸ュ崟淇℃伅寮傚父\r\n");
-                }
+                string msg = "";
+                string status = "Successed";
+                var _lastRunTime = Biz.SysParam["GetWo_LastRun", "Interface_LastRun"].PARAM_VALUE;
+                var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddMinutes(-10) : Convert.ToDateTime(_lastRunTime);
+                //if ((DateTime.Now - LastRunTime).TotalMinutes > 10)
+                //{
+                //    GetWoInput input = new GetWoInput
+                //    {
+                //        startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"),
+                //        endTime = LastRunTime.AddMinutes(10).ToString("yyyy-MM-dd HH:mm:ss")
+                //    };
+                //    var result = await DI.Resolve<IU9C_MES>().GetBasWo(input);
+                //    if (!result.IsSuccessed)
+                //    {
+                //        Logger.Scheduler.Error($"鑾峰彇宸ュ崟淇℃伅寮傚父:{result.Message}");
+                //    }
+                //}
+                SaveFluentSchedulerLog(Name, status, "娴嬭瘯浠诲姟鎴愬姛");
+                Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚\r\n");
+            }
+            catch (System.Exception ex)
+            {
+                Logger.Scheduler.Fatal(ex, "娴嬭瘯浠诲姟寮傚父\r\n");
             }
         }
     }
diff --git a/Tiger.Business.MES/Task/TskJob.cs b/Tiger.Business.MES/Task/TskJob.cs
index 5215a8e..6c5d1f9 100644
--- a/Tiger.Business.MES/Task/TskJob.cs
+++ b/Tiger.Business.MES/Task/TskJob.cs
@@ -11,6 +11,7 @@
 using FluentScheduler;
 using Newtonsoft.Json;
 using static Tiger.Model.TrigArgs;
+using System.Reflection;
 
 namespace Tiger.Business.MES
 {
@@ -29,12 +30,13 @@
             var result = new ApiAction();
             try
             {
-                var _job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == input.JobName).First()??new() { 
-                    JobName = input.JobName,
+                var _job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == input.JobType).First()??new() { 
+                    JobName = input.JobType,
                     JobType = input.JobType,
                     AssemblyName = input.AssemblyName,
-                    Remark = input.Remark,
                 };
+                _job.Remark = input.Remark;
+
                 //璁″垝浠诲姟鍙傛暟
                 var Args = new TrigArgs()
                 {
@@ -49,23 +51,29 @@
                     Hours = input.Hours,
                     Days = input.Days,
                 };
-                TSK_TRIG tskTrig = new TSK_TRIG()
+                TSK_TRIG tskTrig = Biz.Db.Queryable<TSK_TRIG>().Where(x => x.JobId == _job.ID).First() ?? new()
                 {
                     JobId = _job.ID,
-                    Args = JsonConvert.SerializeObject(Args),
                     Status = TSK_TRIG.Statuss.Ready.GetValue(),
                     StartTime = DateTime.Now,
                     NumberOfRuns = 1,
                 };
+                tskTrig.Args = JsonConvert.SerializeObject(Args);
 
                 var db = Biz.Db;
                 var dbTran = db.UseTran(() =>
                 {
                     var y = db.Storageable(_job)
-                       .WhereColumns(t => new { t.JobName, t.GHOST_ROW })
+                       .WhereColumns(t => new { t.JobName,t.GHOST_ROW })
                        .ToStorage();
                     y.AsInsertable.ExecuteCommand();
                     y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
+
+                    var z = db.Storageable(tskTrig)
+                       .WhereColumns(t => new { t.JobId, t.GHOST_ROW })
+                       .ToStorage();
+                    z.AsInsertable.ExecuteCommand();
+                    z.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                 });
                 if (!dbTran.IsSuccess)
                 {
diff --git a/Tiger.Business/Services/Base/InterfaceServiceNew.cs b/Tiger.Business/Services/Base/InterfaceServiceNew.cs
index c876b3d..01edbce 100644
--- a/Tiger.Business/Services/Base/InterfaceServiceNew.cs
+++ b/Tiger.Business/Services/Base/InterfaceServiceNew.cs
@@ -278,24 +278,26 @@
         }
 
         private void SaveRunningStatus() {
-            TSK_TRIG trig = new TSK_TRIG();
+            List<TSK_TRIG> listTrig = new List<TSK_TRIG>();
             foreach (var schedule in JobManager.RunningSchedules)
             {
                 var job = Biz.Db.Queryable<TSK_JOB>().Where(q => q.JobName == schedule.Name).First();
                 if (job != null)
                 {
+                    TSK_TRIG trig = new TSK_TRIG();
                     trig = Biz.Db.Queryable<TSK_TRIG>().Where(q => q.JobId == job.ID).First();
                     trig.Status = TSK_TRIG.Statuss.Running.GetValue();
                     trig.StartTime = DateTime.Now;
+                    listTrig.Add(trig);
                 }
             }
             var db = Biz.Db;
             //淇濆瓨鍒版暟鎹簱
             var dbTran = db.UseTran(() =>
             {
-                if (trig != null)
+                if (listTrig.Count>0)
                 {
-                    db.Updateable(trig, "system").UpdateColumns(q => new { q.Status, q.UPDATE_USER, q.UPDATE_TIME }).ExecuteCommand();
+                    db.Updateable(listTrig, "system").UpdateColumns(q => new { q.Status, q.UPDATE_USER, q.UPDATE_TIME }).ExecuteCommand();
                 }
             });
             if (!dbTran.IsSuccess)
@@ -387,12 +389,15 @@
                 var jobs = Biz.Db.Queryable<TSK_JOB>().IncludesAllFirstLayer().ToList();
                 foreach (var job in jobs)
                 {
-                    Type type = Type.GetType($"{job.AssemblyName}.{job.JobType},{job.AssemblyName}", throwOnError: true);
-                    dynamic _type = Activator.CreateInstance(type);
-                    TrigArgs args = JsonConvert.DeserializeObject<TrigArgs>(job.Triggers[0].Args);
-                    Schedule schedule = Schedule(_type, job.JobName, registry);
-                    //鐢熸垚璁″垝
-                    GenerateSchedule(args, schedule);
+                    if (job.JobName == "fU9C_MES_GetWo" || job.JobName == "fTest")
+                    {
+                        Type type = Type.GetType($"{job.AssemblyName}.{job.JobType},{job.AssemblyName}", throwOnError: true);
+                        dynamic _type = Activator.CreateInstance(type);
+                        TrigArgs args = JsonConvert.DeserializeObject<TrigArgs>(job.Triggers[0].Args);
+                        Schedule schedule = Schedule(_type, job.JobName, registry);
+                        //鐢熸垚璁″垝
+                        GenerateSchedule(args, schedule);
+                    }
                 }
             }
             catch (System.Exception ex)
diff --git a/Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs b/Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs
index 58bea14..6722efd 100644
--- a/Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs
+++ b/Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs
@@ -147,5 +147,26 @@
             }
             return Ok(response);
         }
+
+        /// <summary>
+        /// 淇濆瓨浣滀笟
+        /// </summary>
+        /// <param name="action"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("api/[controller]/[action]")]
+        public async Task<IActionResult> SaveTskJob(ApiAction<TskParameter> action)
+        {
+            ApiAction response = new();
+            try
+            {
+                response = response.GetResponse(DI.Resolve<ITskJob>().SaveTskJob(action.Data));
+            }
+            catch (System.Exception ex)
+            {
+                response = response.GetResponse().CatchExceptionWithLog(ex);
+            }
+            return Ok(response);
+        }
     }
 }

--
Gitblit v1.9.3