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 |   35 ++++++++++++++++++++++++++++++-----
 1 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/Tiger.Business.MES/Task/TskJob.cs b/Tiger.Business.MES/Task/TskJob.cs
index 5215a8e..a3b3afa 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,28 @@
             var result = new ApiAction();
             try
             {
-                var _job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == input.JobName).First()??new() { 
+                if (input.type == EveryType.Milliseconds && input.ToRunEvery<100)
+                {
+                    result.IsSuccessed = false;
+                    result.LocaleMsg = new($"鏃堕棿鏄绉掓椂锛岃嚦灏戣澶т簬100姣");
+                    return result;
+                }
+                if (Biz.Db.Queryable<TSK_JOB>().Any(x =>
+                    (x.JobName != input.JobName && x.JobType == input.JobType) ||
+                    (x.JobName == input.JobName && x.JobType != input.JobType)))
+                {
+                    result.IsSuccessed = false;
+                    result.LocaleMsg = new($"鐩稿悓鐨勭被鍚嶄笉鑳芥湁涓嶅悓鐨勪换鍔″悕鎴栬�呯浉鍚岀殑浠诲姟鍚嶄笉鑳芥湁涓嶅悓鐨勭被鍚�");
+                    return result;
+                }
+                var _job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == input.JobName && x.JobType == input.JobType).First() ?? new()
+                {
                     JobName = input.JobName,
                     JobType = input.JobType,
                     AssemblyName = input.AssemblyName,
-                    Remark = input.Remark,
                 };
+                _job.Remark = input.Remark;
+
                 //璁″垝浠诲姟鍙傛暟
                 var Args = new TrigArgs()
                 {
@@ -48,24 +65,32 @@
                     Minutes = input.Minutes,
                     Hours = input.Hours,
                     Days = input.Days,
+                    Interval = input.Interval,
                 };
-                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.LastRunTime = input.LastRunTime;
+                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.JobType, 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)
                 {

--
Gitblit v1.9.3