예제 #1
0
        public JsonResult ModifyJob()
        {
            try
            {
                int             jobId     = Convert.ToInt32(Request["jobId"]);
                string          jobName   = Request["jobName"];
                CustomJobDetail customJob = CustomJobDetailBLL.CreateInstance().Get(jobId, jobName);

                IScheduler scheduler = QuartzNetHelper.GetScheduler();
                var        jobKey    = JobKey.Create(customJob.JobName, customJob.JobGroup);
                if (scheduler.CheckExists(jobKey))
                {
                    scheduler.DeleteJob(jobKey);
                }

                IJobDetail job = JobBuilder.Create <CustomHttpJob>()
                                 .WithIdentity(customJob.JobName, customJob.JobGroup)
                                 .Build();
                ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
                                       .StartAt(customJob.StartDate)
                                       .EndAt(customJob.EndDate)
                                       .WithIdentity(customJob.JobName, customJob.JobGroup)
                                       .WithCronSchedule(customJob.CronExpression)
                                       .WithDescription(customJob.Description)
                                       .Build();
                scheduler.ScheduleJob(job, trigger);

                return(Json(new { Code = 1, Message = "执行成功!" }));
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteExcepetion(ex);
                return(Json(new { Code = 0, Message = "执行失败!" }));
            }
        }
예제 #2
0
        public int Insert(CustomJobDetail jobDetail)
        {
            CheckValid(jobDetail);
            var newId = _dal.Insert(jobDetail);

            jobDetail.JobId = newId;
            return(newId);
        }
예제 #3
0
        public JsonResult SyncMsSqlData()
        {
            try
            {
                Log4NetHelper.WriteInfo("=============同步服务开始==============");

                List <SqlServerConfigInfo> listSqlServerConfig = SqlServerConfigInfoBLL.CreateInstance().GetAll();

                string          jobName   = Request["jobName"];
                CustomJobDetail jobDetail = CustomJobDetailBLL.CreateInstance().Get(jobName);
                DateTime        startDate = CustomJobDetailBLL.CreateInstance().GetFetchingStartDate(jobDetail.IntervalType, jobDetail.Interval);
                Parallel.ForEach(listSqlServerConfig, new ParallelOptions {
                    MaxDegreeOfParallelism = 5
                }, (sqlServerConfig) =>
                {
                    Monitor.Enter(lockedObj);
                    try
                    {
                        List <EventLogDetail> listEventLogDetail = EventLogDetailBLL.CreateInstance().GetAll(sqlServerConfig.ConnString, startDate);

                        if (listEventLogDetail != null && listEventLogDetail.Count > 0)
                        {
                            int cvsFileCapacity = 1000;
                            if (sqlServerConfig.StoredType == (byte)StoredTypeEnum.PageSize)
                            {
                                cvsFileCapacity = sqlServerConfig.PageSize;
                            }
                            else if (sqlServerConfig.StoredType == (byte)StoredTypeEnum.MaxCapacity)
                            {
                                cvsFileCapacity = sqlServerConfig.MaxCapacity;
                            }

                            ExportCVSFile(listEventLogDetail, sqlServerConfig.EquipmentNum, cvsFileCapacity);
                        }
                    }
                    catch (Exception ex)
                    {
                        Log4NetHelper.WriteExcepetion(ex);
                    }
                    finally
                    {
                        Monitor.Exit(lockedObj);
                    }
                    System.Threading.Thread.Sleep(1000);
                });
                Log4NetHelper.WriteInfo("MsSqlDataSync-SyncMsSqlData 执行成功!");

                Log4NetHelper.WriteInfo("=============同步服务结束==============");

                return(Json(new { Code = 1, Message = "执行成功!" }));
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteExcepetion(ex);
                return(Json(new { Code = 0, Message = "执行失败!" }));
            }
        }
예제 #4
0
        public PageData GetPageList(int pageSize, int curPage, string jobName = "")
        {
            string sqlWhere = "";
            List <MySqlParameter> listParms = new List <MySqlParameter>();

            if (!string.IsNullOrEmpty(jobName))
            {
                sqlWhere = "WHERE JobName LIKE @JobName";
                listParms.Add(new MySqlParameter("@JobName", MySqlDbType.VarChar, 100)
                {
                    Value = "%" + jobName + "%"
                });
            }

            int recordsTotal = MySqlDbHelper.ExecuteScalar <int>("SELECT COUNT(*) FROM custom_job_details " + sqlWhere, listParms.ToArray());

            string sqlText = @" SELECT JobId,
                                JobName,
                                JobGroup,
                                JobChineseName,
                                JobServiceURL,
                                CreatedDate,
                                UpdatedDate,
                                StartDate,
                                EndDate,
                                PageSize,
                                `Interval`,
                                IntervalType,
                                State,
                                Description,
                                ExecutedFreq
                            FROM custom_job_details " + sqlWhere
                             + " ORDER BY JobId DESC LIMIT " + (curPage - 1) * pageSize + "," + pageSize;
            List <CustomJobDetail> list          = new List <CustomJobDetail>();
            MySqlDataReader        sqlDataReader = MySqlDbHelper.ExecuteReader(sqlText, listParms.ToArray());

            PageData pageData = new PageData();

            pageData.PageSize    = pageSize;
            pageData.CurPage     = curPage;
            pageData.RecordCount = Math.Max(1, recordsTotal);
            if (pageData.RecordCount > 0)
            {
                pageData.PageCount = Convert.ToInt32(Math.Ceiling((double)pageData.RecordCount / (double)pageSize));
            }

            while (sqlDataReader.Read())
            {
                CustomJobDetail jobDetail = new CustomJobDetail();
                ReadRecordData(sqlDataReader, jobDetail);
                list.Add(jobDetail);
            }
            sqlDataReader.Close();
            pageData.PageList = list;
            return(pageData);
        }
예제 #5
0
 public static ScheduleJobEdit BindJobDetail(CustomJobDetail job)
 {
     if (instance == null)
     {
         instance = new ScheduleJobEdit();
     }
     instance.jobDetail = job;    // 创建新的关联对象,可以在“数据实体层”中指定对象的默认值。
     instance.BindObjectToForm(); // 每次返回该控件的实例前,都将关联对象的默认值,绑定至界面控件进行显示。
     return(instance);
 }
예제 #6
0
        public void Execute(IJobExecutionContext context)
        {
            string jobName = context.JobDetail.Key.Name;

            Task.Factory.StartNew(() =>
            {
                try
                {
                    CustomJobDetail customJob = CustomJobDetailBLL.CreateInstance().Get(jobName);
                    HttpHelper.SendPost(customJob.JobServiceURL + "?jobName=" + customJob.JobName, "");
                }
                catch (Exception ex)
                {
                    Log4NetHelper.WriteExcepetion(ex);
                }
            });
        }
예제 #7
0
        public CustomJobDetail Get(int jobId, string jobName)
        {
            CustomJobDetail jobDetail = null;
            string          sqlText   = @" SELECT `JobId`,
                                `JobName`,
                                `JobGroup`,
                                `JobChineseName`,
                                `JobServiceURL`,
                                `CreatedDate`,
                                `UpdatedDate`,
                                `StartDate`,
                                `EndDate`,
                                `ExecutedFreq`,
                                `PageSize`,
                                `Interval`,
                                `State`,
                                `Description`,
                                `IntervalType`
                            FROM `custom_job_details`
                            WHERE `JobId` = @JobId AND `JobName` = @JobName;";

            MySqlParameter[] parameters =
            {
                new MySqlParameter("@JobId",   MySqlDbType.Int32)
                {
                    Value = jobId
                },
                new MySqlParameter("@JobName", MySqlDbType.VarChar, 100)
                {
                    Value = jobName
                }
            };

            MySqlDataReader sqlDataReader = MySqlDbHelper.ExecuteReader(sqlText, parameters);

            if (sqlDataReader.Read())
            {
                jobDetail = new CustomJobDetail();
                ReadRecordData(sqlDataReader, jobDetail);
            }
            sqlDataReader.Close();
            return(jobDetail);
        }
예제 #8
0
        public JsonResult DeleteJob()
        {
            try
            {
                IScheduler scheduler = QuartzNetHelper.GetScheduler();
                if (!scheduler.IsStarted)
                {
                    scheduler.Start();
                }
                int             jobId     = Convert.ToInt32(Request["jobId"]);
                string          jobName   = Request["jobName"];
                CustomJobDetail customJob = CustomJobDetailBLL.CreateInstance().Get(jobId, jobName);
                scheduler.PauseTrigger(new TriggerKey(customJob.JobName, customJob.JobGroup));
                scheduler.UnscheduleJob(new TriggerKey(customJob.JobName, customJob.JobGroup));

                var jobKey = JobKey.Create(customJob.JobName, customJob.JobGroup);
                if (scheduler.CheckExists(jobKey))
                {
                    var result = scheduler.DeleteJob(jobKey);

                    if (result)
                    {
                        CustomJobDetailBLL.CreateInstance().Delete(customJob.JobId, customJob.JobName);
                    }

                    if (result)
                    {
                        return(Json(new { Code = 1, Message = "执行成功!" }));
                    }
                    else
                    {
                        return(Json(new { Code = 0, Message = "执行失败!" }));
                    }
                }
                return(Json(new { Code = 1, Message = "执行成功!" }));
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteExcepetion(ex);
                return(Json(new { Code = 0, Message = "执行失败!" }));
            }
        }
예제 #9
0
        public void CheckValid(CustomJobDetail jobDetail)
        {
            if (string.IsNullOrEmpty(jobDetail.JobChineseName))
            {
                throw new CustomException("请输入任务名称。", ExceptionType.Warn);
            }

            if (string.IsNullOrEmpty(jobDetail.JobName))
            {
                throw new CustomException("请输入任务代号。", ExceptionType.Warn);
            }

            if (string.IsNullOrEmpty(jobDetail.JobServiceURL))
            {
                throw new CustomException("请输入需要执行的服务地址。", ExceptionType.Warn);
            }

            if (Exists(jobDetail.JobId, jobDetail.JobName))
            {
                throw new CustomException("任务代号已存在,请重新输入。", ExceptionType.Warn);
            }
        }
예제 #10
0
        void ReadRecordData(IDataReader dataReader, CustomJobDetail jobDetail)
        {
            if (dataReader["JobId"] != DBNull.Value)
            {
                jobDetail.JobId = Convert.ToInt32(dataReader["JobId"]);
            }

            if (dataReader["JobName"] != DBNull.Value)
            {
                jobDetail.JobName = Convert.ToString(dataReader["JobName"]);
            }

            if (dataReader["JobGroup"] != DBNull.Value)
            {
                jobDetail.JobGroup = Convert.ToString(dataReader["JobGroup"]);
            }

            if (dataReader["JobChineseName"] != DBNull.Value)
            {
                jobDetail.JobChineseName = Convert.ToString(dataReader["JobChineseName"]);
            }

            if (dataReader["JobServiceURL"] != DBNull.Value)
            {
                jobDetail.JobServiceURL = Convert.ToString(dataReader["JobServiceURL"]);
            }

            if (dataReader["CreatedDate"] != DBNull.Value)
            {
                jobDetail.CreatedDate = Convert.ToDateTime(dataReader["CreatedDate"]);
            }

            if (dataReader["UpdatedDate"] != DBNull.Value)
            {
                jobDetail.UpdatedDate = Convert.ToDateTime(dataReader["UpdatedDate"]);
            }

            if (dataReader["StartDate"] != DBNull.Value)
            {
                jobDetail.StartDate = Convert.ToDateTime(dataReader["StartDate"]);
            }

            if (dataReader["EndDate"] != DBNull.Value)
            {
                jobDetail.EndDate = Convert.ToDateTime(dataReader["EndDate"]);
            }

            if (dataReader["PageSize"] != DBNull.Value)
            {
                jobDetail.PageSize = Convert.ToInt32(dataReader["PageSize"]);
            }

            if (dataReader["Interval"] != DBNull.Value)
            {
                jobDetail.Interval = Convert.ToInt32(dataReader["Interval"]);
            }

            if (dataReader["IntervalType"] != DBNull.Value)
            {
                jobDetail.IntervalType = Convert.ToByte(dataReader["IntervalType"]);
            }

            if (dataReader["State"] != DBNull.Value)
            {
                jobDetail.State = Convert.ToByte(dataReader["State"]);
            }

            if (dataReader["Description"] != DBNull.Value)
            {
                jobDetail.Description = Convert.ToString(dataReader["Description"]);
            }

            if (dataReader["ExecutedFreq"] != DBNull.Value)
            {
                jobDetail.ExecutedFreq = Convert.ToByte(dataReader["ExecutedFreq"]);
            }
        }
예제 #11
0
        public int Insert(CustomJobDetail jobDetail)
        {
            jobDetail.UpdatedDate = DateTime.Now;
            jobDetail.CreatedDate = DateTime.Now;

            string sqlText = @"INSERT INTO custom_job_details
                            (`JobId`,
                            `JobName`,
                            `JobGroup`,
                            `JobChineseName`,
                            `JobServiceURL`,
                            `CreatedDate`,
                            `UpdatedDate`,
                            `StartDate`,
                            `EndDate`,
                            `ExecutedFreq`,
                            `PageSize`,
                            `Interval`,
                            `State`,
                            `Description`,
                            `IntervalType`)
                            VALUES
                            (@JobId,
                            @JobName,
                            @JobGroup,
                            @JobChineseName,
                            @JobServiceURL,
                            @CreatedDate,
                            @UpdatedDate,
                            @StartDate,
                            @EndDate,
                            @ExecutedFreq,
                            @PageSize,
                            @Interval,
                            @State,
                            @Description,
                            @IntervalType); SELECT LAST_INSERT_ID();";

            MySqlParameter[] parameters =
            {
                new MySqlParameter("@JobId",          MySqlDbType.Int32)
                {
                    Value = jobDetail.JobId
                },
                new MySqlParameter("@JobName",        MySqlDbType.VarChar, 100)
                {
                    Value = jobDetail.JobName
                },
                new MySqlParameter("@JobGroup",       MySqlDbType.VarChar, 50)
                {
                    Value = jobDetail.JobGroup
                },
                new MySqlParameter("@JobChineseName", MySqlDbType.VarChar, 100)
                {
                    Value = jobDetail.JobChineseName
                },
                new MySqlParameter("@JobServiceURL",  MySqlDbType.VarChar, 200)
                {
                    Value = jobDetail.JobServiceURL
                },
                new MySqlParameter("@CreatedDate",    MySqlDbType.DateTime)
                {
                    Value = jobDetail.CreatedDate
                },
                new MySqlParameter("@UpdatedDate",    MySqlDbType.DateTime)
                {
                    Value = jobDetail.UpdatedDate
                },
                new MySqlParameter("@StartDate",      MySqlDbType.DateTime)
                {
                    Value = jobDetail.StartDate
                },
                new MySqlParameter("@EndDate",        MySqlDbType.DateTime)
                {
                    Value = jobDetail.EndDate
                },
                new MySqlParameter("@PageSize",       MySqlDbType.Int32)
                {
                    Value = jobDetail.PageSize
                },
                new MySqlParameter("@Interval",       MySqlDbType.Int32)
                {
                    Value = jobDetail.Interval
                },
                new MySqlParameter("@IntervalType",   MySqlDbType.Byte)
                {
                    Value = jobDetail.IntervalType
                },
                new MySqlParameter("@State",          MySqlDbType.Byte)
                {
                    Value = jobDetail.State
                },
                new MySqlParameter("@Description",    MySqlDbType.VarChar, 255)
                {
                    Value = jobDetail.Description
                },
                new MySqlParameter("@ExecutedFreq",   MySqlDbType.Byte)
                {
                    Value = jobDetail.ExecutedFreq
                }
            };
            return(MySqlDbHelper.ExecuteScalar <int>(sqlText, parameters));
        }
예제 #12
0
        public int Update(CustomJobDetail jobDetail)
        {
            jobDetail.UpdatedDate = DateTime.Now;

            string sqlText = @"UPDATE custom_job_details
                                SET `JobName` = @JobName,
                                `JobGroup` = @JobGroup,
                                `JobChineseName` = @JobChineseName,
                                `JobServiceURL` = @JobServiceURL,
                                `CreatedDate` = @CreatedDate,
                                `UpdatedDate` = @UpdatedDate,
                                `StartDate` = @StartDate,
                                `EndDate` = @EndDate,
                                `PageSize` = @PageSize,
                                `Interval` = @Interval,
                                `IntervalType`=@IntervalType,
                                `State` = @State,
                                `Description` = @Description,
                                `ExecutedFreq`=@ExecutedFreq
                                WHERE `JobId` = @JobId;";

            MySqlParameter[] parameters =
            {
                new MySqlParameter("@JobId",          MySqlDbType.Int32)
                {
                    Value = jobDetail.JobId
                },
                new MySqlParameter("@JobName",        MySqlDbType.VarChar, 100)
                {
                    Value = jobDetail.JobName
                },
                new MySqlParameter("@JobGroup",       MySqlDbType.VarChar, 50)
                {
                    Value = jobDetail.JobGroup
                },
                new MySqlParameter("@JobChineseName", MySqlDbType.VarChar, 100)
                {
                    Value = jobDetail.JobChineseName
                },
                new MySqlParameter("@JobServiceURL",  MySqlDbType.VarChar, 200)
                {
                    Value = jobDetail.JobServiceURL
                },
                new MySqlParameter("@CreatedDate",    MySqlDbType.DateTime)
                {
                    Value = jobDetail.CreatedDate
                },
                new MySqlParameter("@UpdatedDate",    MySqlDbType.DateTime)
                {
                    Value = jobDetail.UpdatedDate
                },
                new MySqlParameter("@StartDate",      MySqlDbType.DateTime)
                {
                    Value = jobDetail.StartDate
                },
                new MySqlParameter("@EndDate",        MySqlDbType.DateTime)
                {
                    Value = jobDetail.EndDate
                },
                new MySqlParameter("@PageSize",       MySqlDbType.Int32)
                {
                    Value = jobDetail.PageSize
                },
                new MySqlParameter("@Interval",       MySqlDbType.Int32)
                {
                    Value = jobDetail.Interval
                },
                new MySqlParameter("@IntervalType",   MySqlDbType.Byte)
                {
                    Value = jobDetail.IntervalType
                },
                new MySqlParameter("@State",          MySqlDbType.Byte)
                {
                    Value = jobDetail.State
                },
                new MySqlParameter("@Description",    MySqlDbType.VarChar, 255)
                {
                    Value = jobDetail.Description
                },
                new MySqlParameter("@ExecutedFreq",   MySqlDbType.Byte)
                {
                    Value = jobDetail.ExecutedFreq
                }
            };
            return(MySqlDbHelper.ExecuteNonQuery(sqlText, parameters));
        }
예제 #13
0
 public int Update(CustomJobDetail jobDetail)
 {
     CheckValid(jobDetail);
     return(_dal.Update(jobDetail));
 }
예제 #14
0
        private void DgvGrid_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }

            int             jobId       = Convert.ToInt32(DgvGrid["ColAction", e.RowIndex].Value.ToString()); // 获取所要修改关联对象的主键。
            string          jobIdentity = DgvGrid["ScheduleJobName", e.RowIndex].Value.ToString();
            CustomJobDetail jobDetail   = CustomJobDetailBLL.CreateInstance().Get(jobId, jobIdentity);

            #region 修改

            //用户单击DataGridView“操作”列中的“修改”按钮。
            if (JobDataGridViewActionButtonCell.IsModifyButtonClick(sender, e))
            {
                FormMain.LoadNewControl(ScheduleJobEdit.BindJobDetail(jobDetail));                            // 载入该模块的修改信息界面至主窗体显示。
            }
            #endregion

            #region  除

            //用户单击DataGridView“操作”列中的“删除”按钮。
            if (JobDataGridViewActionButtonCell.IsDeleteButtonClick(sender, e))
            {
                DialogResult dialogResult = FormSysMessage.ShowMessage("确定要删除该任务计划吗?");
                if (dialogResult == DialogResult.OK)
                {
                    var formSysMessage = FormSysMessage.ShowLoading();
                    int effected       = CustomJobDetailBLL.CreateInstance().Delete(jobId, jobIdentity);
                    if (effected > 0)
                    {
                        CustomJobDetailBLL.CreateInstance().DeleteHostJob(
                            jobHostSite,
                            jobId,
                            jobIdentity,
                            () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "删除任务计划成功。"); },
                            () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "删除任务计划失败。"); });
                    }
                    BindDataGrid();
                }
            }
            #endregion

            #region 启动任务计划

            //用户单击DataGridView“操作”列中的“启动”按钮。
            if (JobDataGridViewActionButtonCell.IsStartButtonClick(sender, e))
            {
                var formSysMessage = FormSysMessage.ShowLoading();
                CustomJobDetailBLL.CreateInstance().StartHostJob(jobHostSite, jobId, jobIdentity,
                                                                 () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "启动任务计划成功。"); },
                                                                 () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "启动任务计划失败。"); });
            }

            #endregion

            #region 停止任务计划

            //用户单击DataGridView“操作”列中的“停止”按钮。
            if (JobDataGridViewActionButtonCell.IsStopButtonClick(sender, e))
            {
                var formSysMessage = FormSysMessage.ShowLoading();
                CustomJobDetailBLL.CreateInstance().StopHostJob(jobHostSite, jobId, jobIdentity,
                                                                () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "停止任务计划成功。"); },
                                                                () => { this.Invoke(new RefreshDataGrid(SetLoadingDialog), formSysMessage, "停止任务计划失败。"); });
            }

            #endregion
        }