Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business/Services/Base/InterfaceServiceNew.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business/Services/Base/TigerJobBase.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business/Services/ServicesBus.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Model.Net/Entitys/TSK/TSK_TRIG.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
@@ -17,9 +17,11 @@ /// </summary> public class U9C_MES_GetWo : TigerJobBase, ITigerJob { public string Id { get; set; } = Guid.NewGuid().ToString("N"); public string Tag { get; set; } = "U9C_MES_GetWo Interface Job"; public string Name { get; set; } = "U9C_MES_GetWo Interface Job"; public U9C_MES_GetWo() { Id = Guid.NewGuid().ToString("N"); Tag = "U9C_MES_GetWo Interface Job"; Name = "U9C_MES_GetWo Interface Job"; } public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { @@ -50,4 +52,46 @@ await Task.CompletedTask; } } /// <summary> /// 从U9C获取工单信息 FluentScheduler版 /// </summary> public class fU9C_MES_GetWo : TigerJobBase, FluentScheduler.IJob { public fU9C_MES_GetWo() { Id = Guid.NewGuid().ToString("N"); Tag = "U9C_MES_GetWo Interface Job"; Name = "从U9C同步工单信息"; } public void Execute() { 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}"); // } //} //SaveLog(context, "从U9C获取工单信息成功"); Logger.Scheduler.Info($"计划调度(名称:{Name})完成\r\n"); } catch (System.Exception ex) { Logger.Scheduler.Fatal(ex, "获取工单信息异常"); } } } } Tiger.Business/Services/Base/InterfaceServiceNew.cs
@@ -266,10 +266,10 @@ /// </summary> public void JobInitialize() { JobManager.Initialize(); JobManager.Initialize(AddJobsFromDB()); JobManager.JobException += info => Logger.Scheduler.Error("An error just happened with a scheduled job: " + info.Exception); JobManager.JobStart += info => Logger.Scheduler.Info($"{info.Name}: started"); JobManager.JobEnd += info => Logger.Scheduler.Info($"{info.Name}: ended ({info.Duration})"); JobManager.JobStart += info => Logger.Scheduler.Info($"{info.Name}: started\r\n"); JobManager.JobEnd += info => Logger.Scheduler.Info($"{info.Name}: ended ({info.Duration})\r\n"); } /// <summary> @@ -284,7 +284,8 @@ ApiAction apiAction = new(); try { JobManager.AddJob<TJob>((s) => s.ToRunEvery(5).Seconds()); JobManager.AddJob<TJob>((s) => GenerateSchedule(jobParam.Args, s.WithName(jobParam.JobName))); //Sundial.TriggerBuilder triggerBuilder = Sundial.Triggers.Period(jobParam.Period * 60 * 1000).LoadFrom(new //{ // TriggerId = jobParam.JobName + "_trigger1", @@ -311,25 +312,58 @@ /// <summary> /// 从数据库批量添加任务 /// </summary> public void AddJobsFromDB() public Registry AddJobsFromDB() { // 声明一个Registry类 var registry = new Registry(); try { var jobs = Biz.Db.Queryable<TSK_JOB>().IncludesAllFirstLayer().ToList(); // 声明一个Registry类 var registry = new Registry(); 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); } } catch (System.Exception ex) { Logger.Console.Fatal(ex, "Add Job From DB Exception"); } return registry; } /// <summary> /// 根据实体名注册计划 /// </summary> /// <typeparam name="TJob"></typeparam> /// <param name="entity"></param> /// <param name="JobName"></param> /// <param name="registry"></param> /// <returns></returns> private Schedule Schedule<TJob>(TJob entity, string JobName, Registry registry) where TJob : class, IJob { return registry.Schedule<TJob>().WithName(JobName); } /// <summary> /// 生成计划 /// </summary> /// <param name="args"></param> /// <param name="schedule"></param> private void GenerateSchedule(TrigArgs args, Schedule schedule) { SpecificTimeUnit specificTimeUnit = null; TimeUnit timeUnit = null; if (args.NonReentrant == "Y") { schedule = schedule.NonReentrant(); } if (args.ToRunNow == "Y") { specificTimeUnit = schedule.ToRunNow(); } if (args.ToRunOnceAt == "Y") { specificTimeUnit = schedule.ToRunOnceAt(args.ToRunOnceAtDt.AddMinutes(args.NowAddMinutes)); } if (args.ToRunOnceIn > 0) { timeUnit = schedule.ToRunOnceIn(args.ToRunOnceIn); } else if (args.ToRunEvery >= 0) { timeUnit = schedule.ToRunEvery(args.ToRunEvery); } if (specificTimeUnit != null && args.AndEvery>0) { timeUnit = specificTimeUnit.AndEvery(args.AndEvery); } //按时间类型来运行 switch (args.Type) { @@ -383,26 +417,6 @@ } break; } } } catch (System.Exception ex) { Logger.Console.Fatal(ex, "Add Job From DB Exception"); } } /// <summary> /// 根据实体名注册计划 /// </summary> /// <typeparam name="TJob"></typeparam> /// <param name="entity"></param> /// <param name="JobName"></param> /// <param name="registry"></param> /// <returns></returns> private Schedule Schedule<TJob>(TJob entity, string JobName, Registry registry) where TJob : class, IJob { return registry.Schedule<TJob>().WithName(JobName); } /// <summary> @@ -416,7 +430,8 @@ /// <summary> /// 在任务完成后等待或者停止 /// </summary> public void StopAndBlock() { public void StopAndBlock() { JobManager.StopAndBlock(); } Tiger.Business/Services/Base/TigerJobBase.cs
@@ -11,9 +11,9 @@ /// </summary> public class TigerJobBase { public string Id { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public string Tag { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public string Name { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public string Id { get; set; } public string Tag { get; set; } public string Name { get; set; } /// <summary> /// 保存日志 Tiger.Business/Services/ServicesBus.cs
@@ -20,7 +20,7 @@ { if (ApiConfig.RunInterface) { //BizContext.InterfaceService = DI.Resolve<IInterfaceService>(); BizContext.InterfaceService = DI.Resolve<IInterfaceService>(); //BizContext.InterfaceService.SetSchedulerFactory(schedulerFactory); ////启动时从服务器加载所有作业 //BizContext.InterfaceService.AddJobFromDB(); Tiger.Model.Net/Entitys/TSK/TSK_TRIG.cs
@@ -183,6 +183,10 @@ public class TrigArgs { public string ToRunNow { get; set; } public string ToRunOnceAt { get; set; } public DateTime ToRunOnceAtDt { get; set; } public int NowAddMinutes { get; set; } public int AndEvery { get; set; } public int ToRunEvery { get; set; } public int ToRunOnceIn { get; set; } public string NonReentrant { get; set; } //Y不重复,N重复