¶Ô±ÈÐÂÎļþ |
| | |
| | | using Rhea.Common; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using Tiger.IBusiness; |
| | | using Tiger.Model; |
| | | using Tiger.Model.Minsun; |
| | | using FluentScheduler; |
| | | using Newtonsoft.Json; |
| | | using static Tiger.Model.TrigArgs; |
| | | using System.Reflection; |
| | | |
| | | namespace Tiger.Business.MES |
| | | { |
| | | /// <summary> |
| | | /// ä»»å¡ç¸å
³ |
| | | /// </summary> |
| | | public partial class TskJob : ITskJob |
| | | { |
| | | /// <summary> |
| | | /// ä¿å计åä»»å¡ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | public async Task<ApiAction> SaveTskJob(TskParameter input) |
| | | { |
| | | var result = new ApiAction(); |
| | | try |
| | | { |
| | | 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, |
| | | }; |
| | | _job.Remark = input.Remark; |
| | | |
| | | //计åä»»å¡åæ° |
| | | var Args = new TrigArgs() |
| | | { |
| | | ToRunOnceAtDt = input.ToRunOnceAtDt, |
| | | NowAddMinutes = input.NowAddMinutes, |
| | | ToRunEvery = input.ToRunEvery, |
| | | ToRunOnceIn = input.ToRunOnceIn, |
| | | NonReentrant = input.NonReentrant, |
| | | Type = input.type, |
| | | runType = input.runType, |
| | | Minutes = input.Minutes, |
| | | Hours = input.Hours, |
| | | Days = input.Days, |
| | | Interval = input.Interval, |
| | | }; |
| | | TSK_TRIG tskTrig = Biz.Db.Queryable<TSK_TRIG>().Where(x => x.JobId == _job.ID).First() ?? new() |
| | | { |
| | | JobId = _job.ID, |
| | | 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.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) |
| | | { |
| | | result.IsSuccessed = false; |
| | | result.Message = $"ä¿å计åä»»å¡å¼å¸¸"; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | result.CatchExceptionWithLog(ex, "ä¿å计åä»»å¡å¼å¸¸"); |
| | | } |
| | | return await Task.FromResult(result); |
| | | } |
| | | } //endClass |
| | | } |