| | |
| | | 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() |
| | |
| | | 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) |
| | |
| | | // 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"); |
| | | } |
| | | } |
| | | } |
| | |
| | | using FluentScheduler; |
| | | using Newtonsoft.Json; |
| | | using static Tiger.Model.TrigArgs; |
| | | using System.Reflection; |
| | | |
| | | namespace Tiger.Business.MES |
| | | { |
| | |
| | | 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() |
| | | { |
| | |
| | | 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(() => |
| | |
| | | .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) |
| | | { |
| | |
| | | } |
| | | |
| | | 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) |
| | |
| | | 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); |
| | |
| | | GenerateSchedule(args, schedule); |
| | | } |
| | | } |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | Logger.Console.Fatal(ex, "Add Job From DB Exception"); |
| | |
| | | } |
| | | 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); |
| | | } |
| | | } |
| | | } |