Exemple #1
0
        /// <summary>
        /// 根据条件查询任务
        /// </summary>
        /// <param name="condition">查询条件</param>
        /// <returns>符合条件的任务</returns>
        public static JsonBaseModel <List <TaskUtil> > Query(QueryCondition condition)
        {
            JsonBaseModel <List <TaskUtil> > result = new JsonBaseModel <List <TaskUtil> >();

            if (string.IsNullOrEmpty(condition.SortField))
            {
                condition.SortField = "CreatedOn";
                condition.SortOrder = "DESC";
            }
            Hashtable ht = Pagination.QueryBase <TaskUtil>("SELECT * FROM p_Task", condition);

            result.Result     = ht["data"] as List <TaskUtil>;
            result.TotalCount = Convert.ToInt32(ht["total"]);
            result.TotalPage  = result.CalculateTotalPage(condition.PageSize, result.TotalCount.Value, condition.IsPagination);
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// 计算任务下次运行时间
        /// </summary>
        /// <param name="CronExpressionString"></param>
        /// <returns>下次运行时间</returns>
        private static JsonBaseModel <DateTime> GetTaskeLastRunTime(string CronExpressionString)
        {
            JsonBaseModel <DateTime> result = new JsonBaseModel <DateTime>();

            try
            {
                //计算下次任务运行时间
                result.Result = QuartzHelper.GetTaskeFireTime(CronExpressionString, 1)[0];
            }
            catch (Exception ex)
            {
                result.HasError = true;
                result.Message  = "任务Cron表达式设置错误";
                LogHelper.WriteLog("任务Cron表达式设置错误", ex);
            }
            return(result);
        }
Exemple #3
0
        /// <summary>
        /// 根据条件查询任务
        /// </summary>
        /// <param name="condition">查询条件</param>
        /// <returns>符合条件的任务</returns>
        public static JsonBaseModel <List <TaskLogUtil> > QueryLog(QueryCondition condition)
        {
            JsonBaseModel <List <TaskLogUtil> > result = new JsonBaseModel <List <TaskLogUtil> >();

            if (string.IsNullOrEmpty(condition.SortField))
            {
                condition.SortField = "RunTime";
                condition.SortOrder = "DESC";
            }
            Hashtable ht = Pagination.QueryBase <TaskLogUtil>(
                @"SELECT p_Tasklog.*,p_Task.TaskName FROM dbo.p_Tasklog
                    LEFT JOIN dbo.p_Task ON dbo.p_Task.TaskID = p_Tasklog.TaskId", condition);

            result.Result     = ht["data"] as List <TaskLogUtil>;
            result.TotalCount = Convert.ToInt32(ht["total"]);
            result.TotalPage  = result.CalculateTotalPage(condition.PageSize, result.TotalCount.Value, condition.IsPagination);
            return(result);
        }
Exemple #4
0
        /// <summary>
        /// 保存日志任务
        /// </summary>
        /// <param name="value">日志</param>
        /// <returns>保存日志结果</returns>
        public static JsonBaseModel <string> SaveTaskLog(TaskLogUtil value)
        {
            JsonBaseModel <string> result = new JsonBaseModel <string>();

            result.HasError = true;
            if (value == null)
            {
                result.Message = "参数空异常";
                return(result);
            }
            try
            {
                SQLHelper.ExecuteNonQuery(InsertLogSQL, value);
                result.HasError = false;
                result.Result   = value.TaskID.ToString();
            }
            catch (Exception ex)
            {
                result.HasError = true;
                result.Message  = ex.Message;
            }
            return(result);
        }
Exemple #5
0
        /// <summary>
        /// 保存任务
        /// </summary>
        /// <param name="value">任务</param>
        /// <returns>保存结果</returns>
        public static JsonBaseModel <string> SaveTask(TaskUtil value)
        {
            JsonBaseModel <string> result = new JsonBaseModel <string>();

            result.HasError = true;
            if (value == null)
            {
                result.Message = "参数空异常";
                return(result);
            }

            #region "校验"
            if (string.IsNullOrEmpty(value.TaskName))
            {
                result.Message = "任务名称不能为空";
                return(result);
            }
            if (string.IsNullOrEmpty(value.Assembly))
            {
                result.Message = "程序集名称不能为空";
                return(result);
            }
            if (string.IsNullOrEmpty(value.CronExpressionString))
            {
                result.Message = "Cron表达式不能为空";
                return(result);
            }
            if (!QuartzHelper.ValidExpression(value.CronExpressionString))
            {
                result.Message = "Cron表达式格式不正确";
                return(result);
            }
            if (string.IsNullOrEmpty(value.CronRemark))
            {
                result.Message = "表达式说明不能为空";
                return(result);
            }
            if (string.IsNullOrEmpty(value.Class))
            {
                result.Message = "类名不能为空";
                return(result);
            }
            #endregion

            JsonBaseModel <DateTime> cronResult = null;
            try
            {
                //新增
                if (value.TaskID == Guid.Empty)
                {
                    value.TaskID = Guid.NewGuid();
                    //任务状态处理

                    cronResult = GetTaskeLastRunTime(value.CronExpressionString);
                    if (cronResult.HasError)
                    {
                        result.Message = cronResult.Message;
                        return(result);
                    }
                    else
                    {
                        value.LastRunTime = cronResult.Result;
                    }
                    //添加新任务
                    QuartzHelper.ScheduleJob(value);

                    SQLHelper.ExecuteNonQuery(InsertSQL, value);
                }
                else
                {
                    value.ModifyOn = DateTime.Now;
                    TaskUtil srcTask = GetById(value.TaskID.ToString());

                    //表达式改变了重新计算下次运行时间
                    if (!value.CronExpressionString.Equals(srcTask.CronExpressionString, StringComparison.OrdinalIgnoreCase))
                    {
                        cronResult = GetTaskeLastRunTime(value.CronExpressionString);
                        if (cronResult.HasError)
                        {
                            result.Message = cronResult.Message;
                            return(result);
                        }
                        else
                        {
                            value.LastRunTime = cronResult.Result;
                        }

                        //更新任务
                        QuartzHelper.ScheduleJob(value, true);
                    }
                    else
                    {
                        value.LastRunTime = srcTask.LastRunTime;
                    }

                    SQLHelper.ExecuteNonQuery(UpdateSQL, value);
                }

                result.HasError = false;
                result.Result   = value.TaskID.ToString();
            }
            catch (Exception ex)
            {
                result.HasError = true;
                result.Message  = ex.Message;
            }
            return(result);
        }