/// <summary> /// 页面加载 /// </summary> public override void RenderPage() { if (PlanID.IsNoNull()) { objWork_Plan = objWorkRule.Work_Plan.First(s => s.PlanID == PlanID); ReadXml(objWork_Plan.PlanConfig); Page.DataBind(); } else { panExecute.Enabled = false; panFrequency.Enabled = true; panDay.Visible = false; panMonth.Visible = false; PanExecuteMonthWeek.Enabled = false; panExecuteTimeTimeInterval.Enabled = false; txtDayInterval.CheckValueEmpty = true; txtWeekInterval.CheckValueEmpty = true; txtExecuteTime.CheckValueEmpty = true;; txtStartDate.CheckValueEmpty = true;; chkWeek.SelectedValue = "0"; } }
/// <summary> /// 保存信息DateTime.Now.DayOfWeek /// </summary> public void SaveInfo() { if (PlanID.IsNull()) { objWork_Plan.WorkInfoID = WorkInfoID; //是否启用 objWork_Plan.IsEnable = false; //计划名称 objWork_Plan.PlanName = txtPlanName.TextCutWord(50); //计划配置 objWork_Plan.PlanConfig = GetConfigXML(); if (radPlanType.SelectValueInt == 1) { objWork_Plan.StartDate = txtExecute.TextDateTime.AddDays(-1); objWork_Plan.EndDate = txtExecute.TextDateTime; } else { objWork_Plan.StartDate = txtStartDate.TextDateTime.AddDays(-1); if (!string.IsNullOrEmpty(txtEndDate.Text)) { objWork_Plan.EndDate = DateTime.Parse(txtEndDate.Text + " " + (radExecuteTime.Checked ? txtExecuteTime.Text : txtIntervalEndTime.Text)); } else { objWork_Plan.EndDate = DateTime.Parse(DateTime.MaxValue.ToString("yyyy-MM-dd HH:mm:ss")); } } objWork_Plan.LastRunDate = DateTime.Parse(DateTime.MaxValue.ToString("yyyy-MM-dd HH:mm:ss")); //计划说明 objWork_Plan.PlanRemark = Remark; objWork_Plan.ConfigInfo = txtConfigInfo.Text; objWorkRule.InsertPlan(objWork_Plan); MessageDialog("新增成功", "PlanList.aspx?WorkInfoID=" + WorkInfoID); } else { objWork_Plan = objWorkRule.Work_Plan.First(p => p.PlanID == PlanID); //计划名称 objWork_Plan.PlanName = txtPlanName.TextCutWord(50); if (radPlanType.SelectValueInt == 1) { objWork_Plan.StartDate = txtExecute.TextDateTime.AddDays(-1); objWork_Plan.EndDate = txtExecute.TextDateTime; } else { objWork_Plan.StartDate = txtStartDate.TextDateTime.AddDays(-1); if (!string.IsNullOrEmpty(txtEndDate.Text)) { objWork_Plan.EndDate = DateTime.Parse(txtEndDate.Text + " " + (radExecuteTime.Checked ? txtExecuteTime.Text : txtIntervalEndTime.Text)); } else { objWork_Plan.EndDate = DateTime.Parse(DateTime.MaxValue.ToString("yyyy-MM-dd HH:mm:ss")); } } objWork_Plan.LastRunDate = DateTime.Parse(DateTime.MaxValue.ToString("yyyy-MM-dd HH:mm:ss")); //计划配置 objWork_Plan.PlanConfig = GetConfigXML(); //计划说明 objWork_Plan.PlanRemark = Remark; objWork_Plan.ConfigInfo = txtConfigInfo.Text; objWorkRule.UpdatePlan(objWork_Plan); MessageDialog("修改成功", "PlanList.aspx?WorkInfoID=" + WorkInfoID); } }
public void InsertPlan(Work_Plan objWork_Plan) { objWork_Plan.PlanName.CheckIsNull("请输入计划名称", "WorkLog"); this.CurrentEntities.AddTowork_plan(objWork_Plan); this.CurrentEntities.SaveChanges(); }
public void UpdatePlan(Work_Plan objWork_Plan) { objWork_Plan.PlanName.CheckIsNull("请输入计划名称", "WorkLog"); this.DeletePlanRunByPlanID(objWork_Plan.PlanID); this.CurrentEntities.SaveChanges(); }
private void ProcessWorkRun(object state) { PlanInfo objPlanInfo = (PlanInfo)state; WorkRule workRule = new WorkRule(); (objPlanInfo.FullName + " 开始执行").WriteLineYellow(""); try { DateTime now = DateTime.Now; Work_WorkLog work_WorkLog = new Work_WorkLog(); work_WorkLog.WorkInfoID = objPlanInfo.WorkInfoID; work_WorkLog.WorkLogID = objPlanInfo.WorkLogID; work_WorkLog.RunIP = this._RunWorkIP; work_WorkLog.PlanID = objPlanInfo.PlanID; work_WorkLog.HostName = Environment.MachineName; work_WorkLog.CreateDate = DateTime.Now; work_WorkLog.StartDate = now; work_WorkLog.EndDate = DateTime.Parse(DateTime.MaxValue.ToString("yyyy-MM-dd HH:mm:ss")); work_WorkLog.ResultType = 0; workRule.InsertWorkLog(work_WorkLog); bool flag = true; InvokeResult invokeResult = new InvokeResult(); InvokeResult previousStepResult = null; foreach (PlanStepInfo current in from s in objPlanInfo.ProcessInfoList orderby s.SortIndex select s) { current.RunCurrentCount = 0; invokeResult = this.RunPlanStep(current, previousStepResult); if (invokeResult.ResultCode != "0") { for (int i = 0; i < current.RunCount; i++) { Thread.Sleep(current.RunInterval * 60 * 1000); invokeResult = this.RunPlanStep(current, previousStepResult); if (invokeResult.ResultCode == "0") { break; } } } previousStepResult = new InvokeResult { ResultCode = invokeResult.ResultCode, ResultMessage = invokeResult.ResultMessage, Data = invokeResult.Data }; if (invokeResult.ResultCode == "0") { if (current.SucessProcessType == 1) { invokeResult.ResultCode = "-1"; break; } if (current.SucessProcessType != 2) { if (current.SucessProcessType == 3) { break; } } } else { if (current.FailProcessType == 1) { break; } if (current.FailProcessType == 2) { invokeResult.ResultCode = "0"; } else if (current.FailProcessType == 3) { invokeResult.ResultCode = "0"; break; } } flag = (flag && invokeResult.ResultCode == "0"); } flag = (flag && invokeResult.ResultCode == "0"); Work_Plan work_Plan = workRule.Work_Plan.FirstOrDefault((Work_Plan s) => s.PlanID == objPlanInfo.PlanID); if (work_Plan != null) { work_Plan.LastRunDate = objPlanInfo.RunDateTime; workRule.CurrentEntities.SaveChanges(); } DateTime now2 = DateTime.Now; string.Concat(new string[] { objPlanInfo.FullName, "执行结束,", now.ToString("yyyy-MM-dd HH:mm:ss"), "~", now2.ToString("yyyy-MM-dd HH:mm:ss") }).WriteLineYellow(""); Work_WorkInfo work_WorkInfo = workRule.Work_WorkInfo.FirstOrDefault((Work_WorkInfo s) => s.WorkInfoID == objPlanInfo.WorkInfoID); work_WorkLog.EndDate = now2; work_WorkLog.ResultType = (flag ? 1 : -1); if (work_WorkInfo != null) { work_WorkInfo.LastProcessDate = objPlanInfo.RunDateTime; } foreach (Work_PlanNotifyInfo current2 in from s in workRule.Work_PlanNotifyInfo where s.PlanID == objPlanInfo.PlanID select s) { if ((current2.PlanResult == -1 && !flag) || (current2.PlanResult == 1 && flag) || current2.PlanResult == 2) { string text = objPlanInfo.FullName + "在" + DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss") + (flag ? "执行成功" : "执行失败"); switch (current2.NotifyType) { case 1: //MailQueueHelper.SendMail(SendPriority.High, current2.Address, text, text, false, true); break; case 2: { //InvokeResult message = NotifyHelper.SendSMS(current2.Address, text, PriorityLevelType.Normal, 0, null); //message.WriteLineRed(objPlanInfo.FullName + " 短信通知完成"); ConsoleHelper.WriteLineRed(objPlanInfo.FullName + " 短信通知完成"); break; } } } } workRule.CurrentEntities.SaveChanges(); workRule.DeletePlanRunByKey(objPlanInfo.PlanRunID.ToString()); (objPlanInfo.FullName + " 执行结束").WriteLineYellow(""); } catch (Exception ex) { (objPlanInfo.FullName + "执行异常" + ex.Message).WriteLineRed(""); LogHelper.Write("WorkLog", objPlanInfo.FullName + "执行异常", ex, ""); } }