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;
namespace Tiger.Business.MES
{
///
/// 任务相关
///
public partial class TskJob : ITskJob
{
///
/// 保存计划任务
///
///
///
public async Task SaveTskJob(TskParameter input)
{
var result = new ApiAction();
try
{
var _job = Biz.Db.Queryable().Where(x => x.JobName == input.JobName).First()??new() {
JobName = input.JobName,
JobType = input.JobType,
AssemblyName = input.AssemblyName,
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,
};
TSK_TRIG tskTrig = new TSK_TRIG()
{
JobId = _job.ID,
Args = JsonConvert.SerializeObject(Args),
Status = TSK_TRIG.Statuss.Ready.GetValue(),
StartTime = DateTime.Now,
NumberOfRuns = 1,
};
var db = Biz.Db;
var dbTran = db.UseTran(() =>
{
var y = db.Storageable(_job)
.WhereColumns(t => new { t.JobName, t.GHOST_ROW })
.ToStorage();
y.AsInsertable.ExecuteCommand();
y.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
}