You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
383 lines
12 KiB
383 lines
12 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using QMTask.Client.TaskService;
|
|
|
|
namespace QMTask.Client
|
|
{
|
|
/// <summary>
|
|
/// 计划编辑
|
|
/// </summary>
|
|
public partial class PlanEditForm : Form
|
|
{
|
|
//任务调度服务
|
|
TaskService.TaskServiceClient tsc = ServiceUtil.GetTaskService();
|
|
|
|
/// <summary>
|
|
/// 计划信息
|
|
/// </summary>
|
|
public PlanInfo Plan { get; set; }
|
|
|
|
/// <summary>
|
|
/// 行为
|
|
/// </summary>
|
|
public string Action { get; set; }
|
|
|
|
public PlanEditForm()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
#region 窗体载入
|
|
|
|
private void PlanEditForm_Load(object sender, EventArgs e)
|
|
{
|
|
//绑定作业列表
|
|
this.BindTask();
|
|
|
|
//绑定执行周期类型
|
|
this.BindPeriodType();
|
|
|
|
//默认选中值
|
|
this.DayStartTime.SelectedText = "00";
|
|
this.DayEndTime.SelectedText = "23";
|
|
|
|
//绑定执行频率类型
|
|
this.BindIntervalType();
|
|
|
|
if (this.Plan != null)
|
|
{
|
|
//绑定计划信息
|
|
this.BindPlan();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 绑定计划信息
|
|
|
|
private void BindPlan()
|
|
{
|
|
this.PlanName.Text = this.Plan.PlanName;
|
|
this.TaskID.SelectedValue = this.Plan.TaskID;
|
|
this.PeriodType.SelectedValue = this.Plan.PeriodType;
|
|
switch (this.Plan.PeriodType)
|
|
{
|
|
case "d":
|
|
this.DayPeriod.Value = this.Plan.Period;
|
|
break;
|
|
case "w":
|
|
string[] weeks = this.Plan.ExecuteDay.Split(",".ToCharArray());
|
|
foreach (string w in weeks)
|
|
{
|
|
switch (w)
|
|
{
|
|
case "1":
|
|
this.cbWeek1.Checked = true;
|
|
break;
|
|
case "2":
|
|
this.cbWeek2.Checked = true;
|
|
break;
|
|
case "3":
|
|
this.cbWeek3.Checked = true;
|
|
break;
|
|
case "4":
|
|
this.cbWeek4.Checked = true;
|
|
break;
|
|
case "5":
|
|
this.cbWeek5.Checked = true;
|
|
break;
|
|
case "6":
|
|
this.cbWeek6.Checked = true;
|
|
break;
|
|
case "7":
|
|
this.cbWeek7.Checked = true;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
case "m":
|
|
if (this.Plan.ExecuteDay.IndexOf("/") > 0)
|
|
{
|
|
//间隔
|
|
this.MonthPeriod2.Value = this.Plan.Period;
|
|
string[] days = this.Plan.ExecuteDay.Split("/".ToCharArray());
|
|
this.monthDay3.Value = int.Parse(days[1]);
|
|
}
|
|
else
|
|
{
|
|
//范围
|
|
this.MonthPeriod1.Value = this.Plan.Period;
|
|
string[] days = this.Plan.ExecuteDay.Split("-".ToCharArray());
|
|
this.monthDay1.Value = int.Parse(days[0]);
|
|
this.monthDay2.Value = int.Parse(days[1]);
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(this.Plan.OnceTime) == false)
|
|
{
|
|
//每天执行一次
|
|
this.rbDayMode1.Checked = true;
|
|
if (string.IsNullOrEmpty(this.Plan.OnceTime) == false)
|
|
this.OnceTime.Value = DateTime.Parse(this.Plan.OnceTime);
|
|
}
|
|
else
|
|
{
|
|
//循环执行
|
|
this.rbDayMode2.Checked = true;
|
|
this.Interval.Value = this.Plan.Interval;
|
|
this.IntervalType.SelectedValue = this.Plan.IntervalType;
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(this.Plan.DayStartTime) == false)
|
|
this.DayStartTime.Text = this.Plan.DayStartTime;
|
|
if (string.IsNullOrEmpty(this.Plan.DayEndTime) == false)
|
|
this.DayEndTime.Text = this.Plan.DayEndTime;
|
|
|
|
if (Convert.ToInt32(this.Plan.DayStartTime) > Convert.ToInt32(this.Plan.DayEndTime))
|
|
{
|
|
MessageBox.Show("起始时间不能大于结束时间。");
|
|
return;
|
|
}
|
|
|
|
this.PlanStartDate.Value = this.Plan.PlanStartDate;
|
|
if (this.Plan.PlanEndDate != new DateTime())
|
|
{
|
|
this.PlanEndDate.Value = this.Plan.PlanEndDate;
|
|
}
|
|
else
|
|
{
|
|
this.PlanEndDate.Value = this.PlanStartDate.Value;
|
|
}
|
|
this.Remark.Text = this.Plan.Remark;
|
|
this.IsUse.Checked = bool.Parse(this.Plan.IsUse);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 绑定作业列表
|
|
|
|
/// <summary>
|
|
/// 绑定作业列表
|
|
/// </summary>
|
|
private void BindTask()
|
|
{
|
|
TaskInfo[] tis = tsc.GetTaskList();
|
|
|
|
DataTable dt = new DataTable();
|
|
dt.Columns.Add("key");
|
|
dt.Columns.Add("value");
|
|
|
|
foreach (var a in tis)
|
|
{
|
|
dt.Rows.Add(a.TaskID, a.TaskName);
|
|
}
|
|
|
|
this.TaskID.DataSource = dt;
|
|
this.TaskID.DisplayMember = "value";
|
|
this.TaskID.ValueMember = "key";
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 绑定执行周期类型
|
|
|
|
private void BindPeriodType()
|
|
{
|
|
DataTable dt = new DataTable();
|
|
dt.Columns.Add("key");
|
|
dt.Columns.Add("value");
|
|
|
|
dt.Rows.Add("d","每天");
|
|
dt.Rows.Add("w", "每周");
|
|
dt.Rows.Add("m", "每月");
|
|
|
|
this.PeriodType.DataSource = dt;
|
|
this.PeriodType.DisplayMember = "value";
|
|
this.PeriodType.ValueMember = "key";
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 绑定执行频率类型
|
|
|
|
private void BindIntervalType()
|
|
{
|
|
DataTable dt = new DataTable();
|
|
dt.Columns.Add("key");
|
|
dt.Columns.Add("value");
|
|
|
|
dt.Rows.Add("s", "秒");
|
|
dt.Rows.Add("m", "分");
|
|
dt.Rows.Add("h", "小时");
|
|
|
|
this.IntervalType.DataSource = dt;
|
|
this.IntervalType.DisplayMember = "value";
|
|
this.IntervalType.ValueMember = "key";
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 保存
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
if (this.PlanName.Text == "")
|
|
{
|
|
MessageBox.Show("计划名称不能为空。");
|
|
return;
|
|
}
|
|
|
|
if (this.TaskID.SelectedValue == null)
|
|
{
|
|
MessageBox.Show("作业内容不能为空。");
|
|
return;
|
|
}
|
|
|
|
if (this.Plan == null)
|
|
{
|
|
this.Plan = new PlanInfo();
|
|
}
|
|
|
|
this.Plan.PlanName=this.PlanName.Text;
|
|
this.Plan.TaskID=this.TaskID.SelectedValue.ToString();
|
|
this.Plan.PeriodType=this.PeriodType.SelectedValue.ToString();
|
|
switch (this.Plan.PeriodType)
|
|
{
|
|
case "d":
|
|
this.Plan.Period=int.Parse(this.DayPeriod.Value.ToString());
|
|
break;
|
|
case "w":
|
|
string weeks = "";
|
|
weeks = string.Format("{0}{1}{2}{3}{4}{5}{6}"
|
|
,this.cbWeek1.Checked==true?",1":""
|
|
, this.cbWeek2.Checked == true ? ",2" : ""
|
|
, this.cbWeek3.Checked == true ? ",3" : ""
|
|
, this.cbWeek4.Checked == true ? ",4" : ""
|
|
, this.cbWeek5.Checked == true ? ",5" : ""
|
|
, this.cbWeek6.Checked == true ? ",6" : ""
|
|
, this.cbWeek7.Checked == true ? ",7" : "");
|
|
|
|
if (weeks != "")
|
|
{
|
|
weeks = weeks.Substring(1);
|
|
}
|
|
this.Plan.ExecuteDay = weeks;
|
|
|
|
if (this.Plan.ExecuteDay == "")
|
|
{
|
|
MessageBox.Show("请至少选择一天。");
|
|
return;
|
|
}
|
|
|
|
break;
|
|
case "m":
|
|
if (this.rbMonthMode1.Checked == true)
|
|
{
|
|
//范围执行
|
|
this.Plan.Period = int.Parse(this.MonthPeriod1.Value.ToString());
|
|
this.Plan.ExecuteDay =string.Format("{0}-{1}",this.monthDay1.Value.ToString(),this.monthDay2.Value.ToString());
|
|
}
|
|
else
|
|
{
|
|
//间隔执行
|
|
this.Plan.Period = int.Parse(this.MonthPeriod2.Value.ToString());
|
|
this.Plan.ExecuteDay = string.Format("1/{0}",this.monthDay3.Value.ToString());
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
if (this.rbDayMode1.Checked == true)
|
|
{
|
|
//每天执行一次
|
|
this.Plan.OnceTime = this.OnceTime.Value.ToString("HH:mm:ss");
|
|
}
|
|
else
|
|
{
|
|
//循环执行
|
|
this.Plan.OnceTime = "";
|
|
this.Plan.Interval = int.Parse(this.Interval.Value.ToString());
|
|
this.Plan.IntervalType = this.IntervalType.SelectedValue.ToString();
|
|
}
|
|
|
|
this.Plan.DayStartTime = this.DayStartTime.Text;
|
|
this.Plan.DayEndTime = this.DayEndTime.Text;
|
|
|
|
if (Convert.ToInt32(this.Plan.DayStartTime) > Convert.ToInt32(this.Plan.DayEndTime))
|
|
{
|
|
MessageBox.Show("起始时间不能大于结束时间。");
|
|
return;
|
|
}
|
|
|
|
this.Plan.PlanStartDate=this.PlanStartDate.Value;
|
|
if (this.radioButton4.Checked == true)
|
|
{
|
|
this.Plan.PlanEndDate = new DateTime();
|
|
}
|
|
else
|
|
{
|
|
this.Plan.PlanEndDate = this.PlanEndDate.Value;
|
|
}
|
|
this.Plan.Remark=this.Remark.Text;
|
|
this.Plan.IsUse=this.IsUse.Checked.ToString().ToLower();
|
|
|
|
if (string.IsNullOrEmpty(this.Plan.PlanID) == true)
|
|
{
|
|
//新增
|
|
this.Plan.PlanID = Guid.NewGuid().ToString("N");
|
|
tsc.AddPlan(this.Plan);
|
|
}
|
|
else
|
|
{
|
|
tsc.UpdatePlan(this.Plan);
|
|
}
|
|
|
|
this.Action = "save";
|
|
this.Close();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 取消
|
|
|
|
private void btCancel_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 切换执行周期
|
|
|
|
private void PeriodType_SelectedValueChanged(object sender, EventArgs e)
|
|
{
|
|
switch (this.PeriodType.SelectedValue.ToString())
|
|
{
|
|
case "d":
|
|
this.panelDay.Visible = true;
|
|
this.panelWeek.Visible = false;
|
|
this.panelMonth.Visible = false;
|
|
break;
|
|
case "w":
|
|
this.panelDay.Visible = false;
|
|
this.panelWeek.Visible = true;
|
|
this.panelMonth.Visible = false;
|
|
break;
|
|
case "m":
|
|
this.panelDay.Visible = false;
|
|
this.panelWeek.Visible = false;
|
|
this.panelMonth.Visible = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
|