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
|
{
|
var _job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == input.JobType).First()??new() {
|
JobName = input.JobType,
|
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,
|
};
|
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.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 })
|
.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
|
}
|