服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-10-26 4a91e38c8839978e10e0ddf0c447f983227f21f7
计划任务更新
已修改4个文件
61 ■■■■ 文件已修改
Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Task/TskJob.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business/Services/Base/InterfaceServiceNew.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
@@ -111,17 +111,17 @@
                SaveFluentSchedulerLog(Name, "Failed", ex.Message);
            }
        }
    }//endClass
        public class fTest : TigerJobBase, ITJob
        {
            public string Id { get; set; }
            public string Tag { get; set; }
            public string Name { get; set; }
        public string Name { get; set; } = typeof(fTest).Name;
            public fTest()
            {
                Id = Guid.NewGuid().ToString("N");
                Tag = "U9C_MES_GetWo Interface Job";
                Name = "测试接口";
            }
            public void Execute()
@@ -129,6 +129,8 @@
                Logger.Scheduler.Info($"进入计划调度(名称:{Name})...\r\n");
                try
                {
                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)
@@ -144,13 +146,12 @@
                    //        Logger.Scheduler.Error($"获取工单信息异常:{result.Message}");
                    //    }
                    //}
                    //SaveFluentSchedulerLog("从U9C获取工单信息成功");
                SaveFluentSchedulerLog(Name, status, "测试任务成功");
                    Logger.Scheduler.Info($"计划调度(名称:{Name})完成\r\n");
                }
                catch (System.Exception ex)
                {
                    Logger.Scheduler.Fatal(ex, "获取工单信息异常\r\n");
                }
                Logger.Scheduler.Fatal(ex, "测试任务异常\r\n");
            }
        }
    }
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,14 +51,14 @@
                    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(() =>
@@ -66,6 +68,12 @@
                       .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)
                {
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,6 +389,8 @@
                var jobs = Biz.Db.Queryable<TSK_JOB>().IncludesAllFirstLayer().ToList();
                foreach (var job in jobs)
                {
                    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);
@@ -395,6 +399,7 @@
                    GenerateSchedule(args, schedule);
                }
            }
            }
            catch (System.Exception ex)
            {
                Logger.Console.Fatal(ex, "Add Job From DB Exception");
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);
        }
    }
}