From 20a0c7b19c248617fb1852a63834bb668831f86e Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期一, 28 十月 2024 03:01:16 +0800 Subject: [PATCH] 计划任务更新 --- Tiger.Business.MES/Task/TskJob.cs | 22 ++ Tiger.Business.MES/iERP/U9C_MES.cs | 23 +- Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs | 50 +++--- Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs | 52 ++++-- Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs | 52 ++++-- Tiger.IBusiness.MES/iERP/IU9C_MES.cs | 10 Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs | 7 Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs | 52 ++++-- Tiger.Business/Services/Base/TigerJobBase.cs | 133 ++++++++++++++-- Tiger.Business/Services/Base/InterfaceServiceNew.cs | 25 ++- Tiger.Api/Controllers/Test/TestController.B.cs | 2 Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs | 47 +++-- Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs | 1 13 files changed, 332 insertions(+), 144 deletions(-) diff --git a/Tiger.Api/Controllers/Test/TestController.B.cs b/Tiger.Api/Controllers/Test/TestController.B.cs index 056f4e9..df3fc2a 100644 --- a/Tiger.Api/Controllers/Test/TestController.B.cs +++ b/Tiger.Api/Controllers/Test/TestController.B.cs @@ -116,7 +116,7 @@ ApiAction response = new(); try { - response = response.GetResponse(await DI.Resolve<IU9C_MES>().GetBasItem(action.Data)); + response = response.GetResponse(DI.Resolve<IU9C_MES>().GetBasItem(action.Data)); } catch (System.Exception ex) { diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs index b192ab2..0458c8f 100644 --- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs +++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs @@ -1,5 +1,5 @@ 锘縰sing Rhea.Common; -using Sundial; +using FluentScheduler; using System; using System.Collections.Generic; using System.Linq; @@ -15,39 +15,53 @@ /// <summary> /// 浠嶶9C鑾峰彇瀹㈡埛鏉$爜淇℃伅 /// </summary> - public class U9C_ME_GetCustSn : TigerJobBase, ITigerJob + public class U9C_ME_GetCustSn : TigerJobBase, ITJob { public string Id { get; set; } = Guid.NewGuid().ToString("N"); - public string Tag { get; set; } = "U9C_ME_GetCustSn Interface Job"; - public string Name { get; set; } = "U9C_ME_GetCustSn Interface Job"; - - public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + public string Tag { get; set; } + public string Name { get; set; } + public U9C_ME_GetCustSn() { - Logger.Scheduler.Info(context.Trigger.ConvertToMonitor()); + Id = Guid.NewGuid().ToString("N"); + Tag = "U9C_ME_GetCustSn Interface Job"; + GetJob(typeof(U9C_ME_GetCustSn).Name); + Name = Job.JobName; + } + + public void Execute() + { + Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n"); try { - var _lastRunTime = Biz.SysParam["GetCustBar_LastTime", "Interface_LastRun"].PARAM_VALUE; - var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddMinutes(-30) : Convert.ToDateTime(_lastRunTime); - if ((DateTime.Now - LastRunTime).TotalMinutes > 30) + Schedule = JobManager.GetSchedule(Name); + StartTime = DateTime.Now; + string msg = ""; + string status = "Successed"; + GetJob(typeof(U9C_ME_GetCustSn).Name); + TskJobInput tskJobInput = CheckIFCanGo(); + if (tskJobInput.result) { - GetCustBarcodeInput input = new GetCustBarcodeInput - { - startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"), - endTime = LastRunTime.AddMinutes(30).ToString("yyyy-MM-dd HH:mm:ss") - }; - var result = await DI.Resolve<IU9C_MES>().GetCustBarCode(input); + var result = DI.Resolve<IU9C_MES>().GetCustBarCode(tskJobInput.input); if (!result.IsSuccessed) { - Logger.Scheduler.Error($"鑾峰彇瀹㈡埛鏉$爜淇℃伅寮傚父:{result.Message}"); + msg = $"鑾峰彇瀹㈡埛鏉$爜淇℃伅寮傚父:{result.Message}"; + Logger.Scheduler.Error(msg); + status = "Failed"; + } + else + { + msg = $"浠嶶9C鑾峰彇瀹㈡埛鏉$爜淇℃伅鎴愬姛:{result.Message}"; + Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); } } - //SaveLog(context, "浠嶶9C鑾峰彇瀹㈡埛鏉$爜淇℃伅鎴愬姛"); + SaveFluentSchedulerLog(status, $"{msg}"); + Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚锛岃繑鍥炰俊鎭�:{msg}\r\n"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "鑾峰彇瀹㈡埛鏉$爜淇℃伅寮傚父"); + SaveFluentSchedulerLog("Failed", ex.Message); } - await Task.CompletedTask; } } } diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs index e5776c3..5aeef52 100644 --- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs +++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs @@ -1,5 +1,5 @@ 锘縰sing Rhea.Common; -using Sundial; +using FluentScheduler; using System; using System.Collections.Generic; using System.Linq; @@ -15,39 +15,53 @@ /// <summary> /// 浠嶶9C鑾峰彇瀹㈡埛淇℃伅 /// </summary> - public class U9C_MES_GetCustomer : TigerJobBase, ITigerJob + public class U9C_MES_GetCustomer : TigerJobBase, ITJob { public string Id { get; set; } = Guid.NewGuid().ToString("N"); - public string Tag { get; set; } = "U9C_MES_GetCustomer Interface Job"; - public string Name { get; set; } = "U9C_MES_GetCustomer Interface Job"; - - public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + public string Tag { get; set; } + public string Name { get; set; } + public U9C_MES_GetCustomer() { - Logger.Scheduler.Info(context.Trigger.ConvertToMonitor()); + Id = Guid.NewGuid().ToString("N"); + Tag = "U9C_MES_GetCustomer Interface Job"; + GetJob(typeof(U9C_MES_GetCustomer).Name); + Name = Job.JobName; + } + + public void Execute() + { + Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n"); try { - var _lastRunTime = Biz.SysParam["GetCust_LastRun", "Interface_LastRun"].PARAM_VALUE; - var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddDays(-1) : Convert.ToDateTime(_lastRunTime); - if ((DateTime.Now - LastRunTime).TotalDays > 1) + Schedule = JobManager.GetSchedule(Name); + StartTime = DateTime.Now; + string msg = ""; + string status = "Successed"; + GetJob(typeof(U9C_MES_GetCustomer).Name); + TskJobInput tskJobInput = CheckIFCanGo(); + if (tskJobInput.result) { - GetCustomerInput input = new GetCustomerInput - { - startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"), - endTime = LastRunTime.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss") - }; - var result = await DI.Resolve<IU9C_MES>().GetCustomer(input); + var result = DI.Resolve<IU9C_MES>().GetCustomer(tskJobInput.input); if (!result.IsSuccessed) { - Logger.Scheduler.Error($"鑾峰彇瀹㈡埛淇℃伅寮傚父:{result.Message}"); + msg = $"鑾峰彇瀹㈡埛淇℃伅寮傚父:{result.Message}"; + Logger.Scheduler.Error(msg); + status = "Failed"; + } + else + { + msg = $"浠嶶9C鑾峰彇瀹㈡埛淇℃伅鎴愬姛:{result.Message}"; + Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); } } - //SaveLog(context, "浠嶶9C鑾峰彇瀹㈡埛淇℃伅鎴愬姛"); + SaveFluentSchedulerLog(status, $"{msg}"); + Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚锛岃繑鍥炰俊鎭�:{msg}\r\n"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "鑾峰彇瀹㈡埛淇℃伅寮傚父"); + SaveFluentSchedulerLog("Failed", ex.Message); } - await Task.CompletedTask; } } } diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs index c67e11f..d6e6081 100644 --- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs +++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs @@ -1,5 +1,5 @@ 锘縰sing Rhea.Common; -using Sundial; +using FluentScheduler; using System; using System.Collections.Generic; using System.Linq; @@ -15,39 +15,54 @@ /// <summary> /// 浠嶶9C鑾峰彇鐗╂枡淇℃伅 /// </summary> - public class U9C_MES_GetItem : TigerJobBase, ITigerJob + public class U9C_MES_GetItem : TigerJobBase, ITJob { public string Id { get; set; } = Guid.NewGuid().ToString("N"); public string Tag { get; set; } = "U9C_MES_GetItem Interface Job"; public string Name { get; set; } = "U9C_MES_GetItem Interface Job"; - public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + public U9C_MES_GetItem() { - Logger.Scheduler.Info(context.Trigger.ConvertToMonitor()); + Id = Guid.NewGuid().ToString("N"); + Tag = "U9C_MES_GetItem Interface Job"; + GetJob(typeof(U9C_MES_GetItem).Name); + Name = Job.JobName; + } + + public void Execute() + { + Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n"); try { - var _lastRunTime = Biz.SysParam["GetItem_LastRun", "Interface_LastRun"].PARAM_VALUE; - var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddDays(-1) : Convert.ToDateTime(_lastRunTime); - if ((DateTime.Now - LastRunTime).TotalDays > 1) + Schedule = JobManager.GetSchedule(Name); + StartTime = DateTime.Now; + string msg = ""; + string status = "Successed"; + GetJob(typeof(U9C_MES_GetItem).Name); + TskJobInput tskJobInput = CheckIFCanGo(); + if (tskJobInput.result) { - GetBasItemInput input = new GetBasItemInput - { - startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"), - endTime = LastRunTime.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss") - }; - var result = await DI.Resolve<IU9C_MES>().GetBasItem(input); + var result = DI.Resolve<IU9C_MES>().GetBasItem(tskJobInput.input); if (!result.IsSuccessed) { - Logger.Scheduler.Error($"鑾峰彇鐗╂枡淇℃伅寮傚父:{result.Message}"); + msg = $"鑾峰彇鐗╂枡淇℃伅寮傚父:{result.Message}"; + Logger.Scheduler.Error(msg); + status = "Failed"; + } + else + { + msg = $"浠嶶9C鑾峰彇鐗╂枡淇℃伅鎴愬姛:{result.Message}"; + Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); } } - //SaveLog(context, "浠嶶9C鑾峰彇鐗╂枡淇℃伅鎴愬姛"); + SaveFluentSchedulerLog(status, $"{msg}"); + Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚锛岃繑鍥炰俊鎭�:{msg}\r\n"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "鑾峰彇鐗╂枡淇℃伅寮傚父"); + SaveFluentSchedulerLog("Failed", ex.Message); } - await Task.CompletedTask; } } } diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs index eaaf92f..5619878 100644 --- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs +++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs @@ -1,11 +1,12 @@ 锘縰sing Rhea.Common; -using Sundial; +using FluentScheduler; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; +using Newtonsoft.Json; using Tiger.IBusiness; using Tiger.Model; using Tiger.Model.Minsun; @@ -15,39 +16,54 @@ /// <summary> /// 浠嶶9C鑾峰彇渚涘簲鍟嗕俊鎭� /// </summary> - public class U9C_ME_GetSupplier : TigerJobBase, ITigerJob + public class U9C_ME_GetSupplier : TigerJobBase, ITJob { public string Id { get; set; } = Guid.NewGuid().ToString("N"); - public string Tag { get; set; } = "U9C_ME_GetSupplier Interface Job"; - public string Name { get; set; } = "U9C_ME_GetSupplier Interface Job"; + public string Tag { get; set; } + public string Name { get; set; } - public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + public U9C_ME_GetSupplier() { - Logger.Scheduler.Info(context.Trigger.ConvertToMonitor()); + Id = Guid.NewGuid().ToString("N"); + Tag = "U9C_ME_GetSupplier Interface Job"; + GetJob(typeof(U9C_ME_GetSupplier).Name); + Name = Job.JobName; + } + + public void Execute() + { + Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n"); try { - var _lastRunTime = Biz.SysParam["Vender_LastTime", "Interface_LastRun"].PARAM_VALUE; - var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddDays(-1) : Convert.ToDateTime(_lastRunTime); - if ((DateTime.Now - LastRunTime).TotalDays > 1) + Schedule = JobManager.GetSchedule(Name); + StartTime = DateTime.Now; + string msg = ""; + string status = "Successed"; + GetJob(typeof(U9C_ME_GetSupplier).Name); + TskJobInput tskJobInput = CheckIFCanGo(); + if (tskJobInput.result) { - GetSupplierInput input = new GetSupplierInput - { - startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"), - endTime = LastRunTime.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss") - }; - var result = await DI.Resolve<IU9C_MES>().GetSupplier(input); + var result = DI.Resolve<IU9C_MES>().GetSupplier(tskJobInput.input); if (!result.IsSuccessed) { - Logger.Scheduler.Error($"鑾峰彇渚涘簲鍟嗕俊鎭紓甯�:{result.Message}"); + msg = $"鑾峰彇渚涘簲鍟嗕俊鎭紓甯�:{result.Message}"; + Logger.Scheduler.Error(msg); + status = "Failed"; + } + else + { + msg = $"浠嶶9C鑾峰彇渚涘簲鍟嗕俊鎭垚鍔�:{result.Message}"; + Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); } } - //SaveLog(context, "浠嶶9C鑾峰彇渚涘簲鍟嗕俊鎭垚鍔�"); + SaveFluentSchedulerLog(status, $"{msg}"); + Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚锛岃繑鍥炰俊鎭�:{msg}\r\n"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "鑾峰彇渚涘簲鍟嗕俊鎭紓甯�"); + SaveFluentSchedulerLog("Failed", ex.Message); } - await Task.CompletedTask; } } } diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs index 0e538c0..0188002 100644 --- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs +++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs @@ -5,11 +5,14 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Newtonsoft.Json; using Tiger.IBusiness; using Tiger.Model; using Tiger.Model.Minsun; using FluentScheduler; -using static Microsoft.CodeAnalysis.CSharp.SyntaxTokenParser; +using Sundial; +using Microsoft.IdentityModel.Tokens; +using Tiger.Model.Entitys.MES.Position; namespace Tiger.Business.MES { @@ -66,11 +69,13 @@ { public string Id { get; set; } public string Tag { get; set; } - public string Name { get; set; } = typeof(fU9C_MES_GetWo).Name; + public string Name { get; set; } public fU9C_MES_GetWo() { Id = Guid.NewGuid().ToString("N"); Tag = "U9C_MES_GetWo Interface Job"; + GetJob(typeof(fU9C_MES_GetWo).Name); + Name = Job.JobName; } public void Execute() @@ -78,37 +83,34 @@ Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n"); try { + Schedule = JobManager.GetSchedule(Name); + StartTime = DateTime.Now; 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); - StartTime = DateTime.Now; - if ((DateTime.Now - LastRunTime).TotalMinutes > 10) + GetJob(typeof(fU9C_MES_GetWo).Name); + TskJobInput tskJobInput = CheckIFCanGo(); + if (tskJobInput.result) { - GetWoInput input = new GetWoInput + var result = DI.Resolve<IU9C_MES>().GetU9CBasWo(tskJobInput.input); + if (!result.IsSuccessed) { - startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"), - endTime = LastRunTime.AddMinutes(10).ToString("yyyy-MM-dd HH:mm:ss") - }; - //var result = DI.Resolve<IU9C_MES>().GetU9CBasWo(input); - //if (!result.IsSuccessed) - //{ - // msg = $"鑾峰彇宸ュ崟淇℃伅寮傚父:{result.Message}"; - // Logger.Scheduler.Error(msg); - // status = "Failed"; - //} - //else - //{ - // msg = $"浠嶶9C鑾峰彇宸ュ崟淇℃伅鎴愬姛:{result.Message}"; - //} + msg = $"鑾峰彇宸ュ崟淇℃伅寮傚父:{result.Message}"; + Logger.Scheduler.Error(msg); + status = "Failed"; + } + else + { + msg = $"浠嶶9C鑾峰彇宸ュ崟淇℃伅鎴愬姛:{result.Message}"; + Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime(); + } } - SaveFluentSchedulerLog(Name, status, $"{msg}"); + SaveFluentSchedulerLog(status, $"{msg}"); Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚锛岃繑鍥炰俊鎭�:{msg}\r\n"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "鑾峰彇宸ュ崟淇℃伅寮傚父"); - SaveFluentSchedulerLog(Name, "Failed", ex.Message); + SaveFluentSchedulerLog("Failed", ex.Message); } } }//endClass @@ -147,7 +149,7 @@ // Logger.Scheduler.Error($"鑾峰彇宸ュ崟淇℃伅寮傚父:{result.Message}"); // } //} - SaveFluentSchedulerLog(Name, status, "娴嬭瘯浠诲姟鎴愬姛"); + SaveFluentSchedulerLog(status, "娴嬭瘯浠诲姟鎴愬姛"); Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚\r\n"); } catch (System.Exception ex) diff --git a/Tiger.Business.MES/Task/TskJob.cs b/Tiger.Business.MES/Task/TskJob.cs index 6c5d1f9..be82be3 100644 --- a/Tiger.Business.MES/Task/TskJob.cs +++ b/Tiger.Business.MES/Task/TskJob.cs @@ -30,8 +30,23 @@ var result = new ApiAction(); try { - var _job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == input.JobType).First()??new() { - JobName = input.JobType, + 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, }; @@ -58,13 +73,14 @@ 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(); diff --git a/Tiger.Business.MES/iERP/U9C_MES.cs b/Tiger.Business.MES/iERP/U9C_MES.cs index 1d5e8f1..c337fc4 100644 --- a/Tiger.Business.MES/iERP/U9C_MES.cs +++ b/Tiger.Business.MES/iERP/U9C_MES.cs @@ -26,7 +26,7 @@ /// </summary> /// <param name="input"></param> /// <returns></returns> - public async Task<ApiAction> GetBasItem(GetBasItemInput input) + public ApiAction GetBasItem(U9C_MES_Input input) { var action = new ApiAction(); Logger.Scheduler.Info($"鐗╂枡淇℃伅寮�濮嬪悓姝ャ�傘�傘�傛暟鎹鏌ヨ繘琛屼腑銆傘�傘��"); @@ -83,12 +83,8 @@ } } Logger.Scheduler.Info($"鐗╂枡淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]"); - db = Biz.Db; - var LastRun = await db.Queryable<SYS_PARAM>().Where(q => q.PRMG_CODE == "Interface_LastRun" && q.PARAM_CODE == "GetItem_LastRun").SingleAsync(); - LastRun.PARAM_VALUE = (input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? LastRun.PARAM_VALUE : input.endTime; var dbTran = db.UseTran(() => { - db.Storageable(LastRun, "U9C_MES_GetItem").ExecuteCommand(); if (items.Any()) { if (items.Count > 150) @@ -309,14 +305,14 @@ /// <param name="input"></param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> - public async Task<ApiAction> GetCustomer(GetCustomerInput input) + public ApiAction GetCustomer(U9C_MES_Input input) { var action = new ApiAction(); Logger.Scheduler.Info($"瀹㈡埛淇℃伅寮�濮嬪悓姝ャ�傘�傘�傛暟鎹鏌ヨ繘琛屼腑銆傘�傘��"); Logger.Scheduler.Info($"{input.triggerDetail}"); DbClient db = Biz.DataSource["YadaU9C"].Client; var list = db.Queryable<dynamic>().AS("mes_Customer").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList(); - var orgs = await Biz.Db.Queryable<SYS_ORGANIZATION>().ToListAsync(); + var orgs = Biz.Db.Queryable<SYS_ORGANIZATION>().ToList(); List<BAS_CUSTOMER> items = new(); if (list != null && list.Count > 0) { @@ -388,14 +384,14 @@ /// </summary> /// <param name="input"></param> /// <returns></returns> - public async Task<ApiAction> GetSupplier(GetSupplierInput input) + public ApiAction GetSupplier(U9C_MES_Input input) { var action = new ApiAction(); Logger.Scheduler.Info($"渚涘簲鍟嗕俊鎭紑濮嬪悓姝ャ�傘�傘�傛暟鎹鏌ヨ繘琛屼腑銆傘�傘��"); Logger.Scheduler.Info($"{input.triggerDetail}"); DbClient db = Biz.DataSource["YadaU9C"].Client; var list = db.Queryable<dynamic>().AS("mes_Supplier").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList(); - var orgs = await Biz.Db.Queryable<SYS_ORGANIZATION>().ToListAsync(); + var orgs = Biz.Db.Queryable<SYS_ORGANIZATION>().ToList(); List<BAS_SUPPLIER> items = new(); if (list != null && list.Count > 0) { @@ -464,7 +460,7 @@ /// </summary> /// <param name="input"></param> /// <returns></returns> - public async Task<ApiAction> GetCustBarCode(GetCustBarcodeInput input) + public ApiAction GetCustBarCode(U9C_MES_Input input) { var action = new ApiAction(); Logger.Scheduler.Info($"瀹㈡埛鏉$爜淇℃伅寮�濮嬪悓姝ャ�傘�傘�傛暟鎹鏌ヨ繘琛屼腑銆傘�傘��"); @@ -483,7 +479,7 @@ { if (di["MoDoc"] != null) { - var _MES_WO = await Biz.Db.Queryable<BIZ_MES_WO>().Where(x => x.ORDER_NO == di["MoDoc"].ToString()).FirstAsync(); + var _MES_WO = Biz.Db.Queryable<BIZ_MES_WO>().Where(x => x.ORDER_NO == di["MoDoc"].ToString()).First(); MES_CUST_SN snItem = new() { CUST_CODE = _MES_WO?.CUST_CODE ?? "", @@ -540,7 +536,7 @@ return action; } - public ApiAction GetU9CBasWo(GetWoInput input) + public ApiAction GetU9CBasWo(U9C_MES_Input input) { var action = new ApiAction(); Logger.Scheduler.Info($"宸ュ崟淇℃伅寮�濮嬪悓姝ャ�傘�傘�傛暟鎹鏌ヨ繘琛屼腑銆傘�傘��"); @@ -594,11 +590,8 @@ } Logger.Scheduler.Info($"宸ュ崟淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]"); db = Biz.Db; - var LastRun = db.Queryable<SYS_PARAM>().Where(q => q.PRMG_CODE == "Interface_LastRun" && q.PARAM_CODE == "GetWo_LastRun").Single(); - LastRun.PARAM_VALUE = (input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? LastRun.PARAM_VALUE : input.endTime; var dbTran = db.UseTran(() => { - db.Storageable(LastRun, "U9C_MES_GetWo").ExecuteCommand(); if (items.Any()) { if (items.Count > 150) diff --git a/Tiger.Business/Services/Base/InterfaceServiceNew.cs b/Tiger.Business/Services/Base/InterfaceServiceNew.cs index 93e4aea..5b362a3 100644 --- a/Tiger.Business/Services/Base/InterfaceServiceNew.cs +++ b/Tiger.Business/Services/Base/InterfaceServiceNew.cs @@ -6,6 +6,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Security.Cryptography; using System.Text; using System.Threading; @@ -324,14 +325,22 @@ { JobManager.AddJob<TJob>((s) => GenerateSchedule(jobParam.Args, s.WithName(jobParam.JobName))); string guid = Guid.NewGuid().ToString("N"); - TSK_JOB job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == jobParam.JobName).First() ?? new() + if (Biz.Db.Queryable<TSK_JOB>().Any(x => + (x.JobName != jobParam.JobName && x.JobType == jobParam.DataType) || + (x.JobName == jobParam.JobName && x.JobType != jobParam.DataType))) + { + apiAction.IsSuccessed = false; + apiAction.LocaleMsg = new($"鐩稿悓鐨勭被鍚嶄笉鑳芥湁涓嶅悓鐨勪换鍔″悕鎴栬�呯浉鍚岀殑浠诲姟鍚嶄笉鑳芥湁涓嶅悓鐨勭被鍚�"); + return apiAction; + } + TSK_JOB job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == jobParam.JobName && x.JobType == jobParam.DataType).First() ?? new() { ID = guid, - Remark = jobParam.Remark, - JobType = jobParam.JobName, - AssemblyName = jobParam.AssemblyName, - JobName = jobParam.JobName, }; + job.Remark = jobParam.Remark; + job.JobType = jobParam.DataType; + job.AssemblyName = jobParam.AssemblyName; + job.JobName = jobParam.JobName; var trigger = Biz.Db.Queryable<TSK_TRIG>().Where(x => x.JobId == job.ID).First() ?? new TSK_TRIG() { JobId = guid, @@ -345,7 +354,7 @@ 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(); @@ -409,7 +418,7 @@ var jobs = Biz.Db.Queryable<TSK_JOB>().IncludesAllFirstLayer().ToList(); foreach (var job in jobs) { - if (job.JobName == "fU9C_MES_GetWo" || job.JobName == "fTest") + //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); @@ -437,7 +446,7 @@ /// <returns></returns> private Schedule Schedule<TJob>(TJob entity, string JobName, Registry registry) where TJob : class, ITJob { - return registry.Schedule<TJob>().WithName(typeof(TJob).Name); + return registry.Schedule<TJob>().WithName(JobName); } /// <summary> diff --git a/Tiger.Business/Services/Base/TigerJobBase.cs b/Tiger.Business/Services/Base/TigerJobBase.cs index 226c523..da8665f 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,6 +14,10 @@ /// </summary> public class TigerJobBase { + public static Schedule Schedule; + public static TSK_JOB Job = new TSK_JOB(); + public static TSK_TRIG Trig = new TSK_TRIG(); + public static TrigArgs Args = new TrigArgs(); /// <summary> /// 寮�濮嬫椂闂� /// </summary> @@ -54,16 +61,14 @@ /// <param name="JobName"></param> /// <param name="remark"></param> /// <returns></returns> - public static ApiAction SaveFluentSchedulerLog(string JobName,string status, string remark) + public static ApiAction SaveFluentSchedulerLog(string status, string remark) { ApiAction action = new ApiAction(); - var job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == JobName).IncludesAllFirstLayer().First(); - var trig = job.Triggers?[0]; - if (trig != null) + if (Trig != null) { - trig.ElapsedTime = (long)Math.Ceiling((DateTime.Now-StartTime).TotalMilliseconds); - trig.StartTime = StartTime; - trig.EndTime = DateTime.Now; + Trig.ElapsedTime = (long)Math.Ceiling((DateTime.Now-StartTime).TotalMilliseconds); + Trig.StartTime = StartTime; + Trig.EndTime = DateTime.Now; } else { action.IsSuccessed = false; @@ -73,14 +78,14 @@ } var logentity = new TSK_LOG { - JobId = job.ID, - AssemblyName = job.AssemblyName, - Args = trig.Args, + 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, + StartTime = Trig.StartTime, + EndTime = Trig.EndTime, + ElapsedTime = Trig.ElapsedTime, Remark = remark }; @@ -88,16 +93,112 @@ //淇濆瓨鍒版暟鎹簱 var dbTran = db.UseTran(() => { - db.Updateable(trig, "System_Job").UpdateColumns(q => new { q.StartTime, q.ElapsedTime,q.UpdatedTime,q.UPDATE_USER}).ExecuteCommand(); + 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($"璁″垝璋冨害(鍚嶇О:{JobName})浣滀笟鏃ュ織淇濆瓨鍒版暟鎹簱瀹屾垚\r\n"); + Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Job.JobName})浣滀笟鏃ュ織淇濆瓨鍒版暟鎹簱瀹屾垚\r\n"); return action; } + /// <summary> + /// 鑾峰彇浠诲姟 + /// </summary> + public static 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 static TskJobInput CheckIFCanGo() + { + 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 = (DateTime.Now - dateTime).TotalMilliseconds > Args.ToRunEvery; + tskJobInput.input = new() + { + startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), + endTime = 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 = (DateTime.Now - dateTime).TotalSeconds > Args.ToRunEvery; + tskJobInput.input = new() + { + startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), + endTime = 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 = (DateTime.Now - dateTime).TotalMinutes > Args.ToRunEvery; + tskJobInput.input = new() + { + startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), + endTime = 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 = (DateTime.Now - dateTime).TotalHours > Args.ToRunEvery; + tskJobInput.input = new() + { + startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), + endTime = 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 = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery; + tskJobInput.input = new() + { + startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), + endTime = 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 = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * 7; + tskJobInput.input = new() + { + startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), + endTime = 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 = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery; + tskJobInput.input = new() + { + startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), + endTime = 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 = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); + tskJobInput.input = new() + { + startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"), + endTime = dateTime.AddMonths(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"), + }; + break; + } + return tskJobInput; + } } } diff --git a/Tiger.IBusiness.MES/iERP/IU9C_MES.cs b/Tiger.IBusiness.MES/iERP/IU9C_MES.cs index 1ef6b60..7591b50 100644 --- a/Tiger.IBusiness.MES/iERP/IU9C_MES.cs +++ b/Tiger.IBusiness.MES/iERP/IU9C_MES.cs @@ -11,11 +11,11 @@ { public interface IU9C_MES { - public Task<ApiAction> GetBasItem(GetBasItemInput input); - public Task<ApiAction> GetCustomer(GetCustomerInput input); - public Task<ApiAction> GetSupplier(GetSupplierInput input); + public ApiAction GetBasItem(U9C_MES_Input input); + public ApiAction GetCustomer(U9C_MES_Input input); + public ApiAction GetSupplier(U9C_MES_Input input); public Task<ApiAction> GetBasWo(GetWoInput input); - public Task<ApiAction> GetCustBarCode(GetCustBarcodeInput input); - public ApiAction GetU9CBasWo(GetWoInput input); + public ApiAction GetCustBarCode(U9C_MES_Input input); + public ApiAction GetU9CBasWo(U9C_MES_Input input); } } diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs index 2d5550f..a84304d 100644 --- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs +++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/TskParameter.cs @@ -15,6 +15,7 @@ public string Remark { get; set; } public string NonReentrant { get; set; } public DateTime ToRunOnceAtDt { get; set; } + public DateTime LastRunTime { get; set; } public TrigArgs.RunType runType { get; set; } public TrigArgs.EveryType type { get; set; } public int NowAddMinutes { get; set; } //涓婇潰鏃堕棿鍔犲灏戝垎閽燂紝琛ㄧず寤惰繜澶氬皯鍒嗛挓杩愯 @@ -24,4 +25,10 @@ public int Hours { get; set; } public int Days { get; set; } } + + public class TskJobInput + { + public bool result { get; set; } + public U9C_MES_Input input { get; set; } + } } diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs index 9472194..7f7ebf4 100644 --- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs +++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs @@ -11,6 +11,7 @@ public string startTime { get; set; } public string endTime { get; set; } public string triggerDetail { get; set; } + public DateTime LastRunTime { get; set; } } public class GetBasItemInput : U9C_MES_Input -- Gitblit v1.9.3