| | |
| | | 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() { |
| | | 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() |
| | | { |
| | |
| | | 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) |
| | | { |