using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.ServiceModel; using DBFactory; using System.Net.Sockets; using System.Threading; using Microsoft.VisualBasic; namespace wcfControlMonitorClient { /// /// Creator:Richard.liu /// 调度任务管理 /// public partial class FrmModifyManage : Form { string _manstatus= " F_Status>=-1 "; private static FrmModifyManage _formInstance; public static FrmModifyManage FormInstance { get { if (_formInstance == null) { _formInstance = new FrmModifyManage(); } return _formInstance; } set { _formInstance = value; } } Model.MDevice devinfo; DBOperator dbo = CStaticClass.dbo; DBOperator dboM = CStaticClass.dboM; public FrmModifyManage() { InitializeComponent(); _formInstance = this; } private void TSMrefresh_Click() { //青岛思锐新改 qdsr string StrSql = string.Format("select V_Manage_Task.* from V_Manage_Task,T_Base_Device where V_Manage_Task.起点=T_Base_Device.F_DeviceIndex and F_WorkArea like '%{0}%' and {1}", CStaticClass.UserArea, _manstatus); //this.dgvManager.DataSource = dbo.ExceSQL(StrSql).Tables[0].DefaultView; if (this.dgvManager.HorizontalScrollingOffset <= this.dgvManager.MaximumSize.Width) { this.dgvManager.DataSource = dbo.ExceSQL(StrSql).Tables[0].DefaultView; } this.dgvManager.HorizontalScrollingOffset = 0; } private void button1_Click(object sender, EventArgs e) { try { //if (this.textBox1.Text.Trim().Length == 0) return; if (this.comboBox1.Text == "条码") { //20091016 //_manstatus = " 条码='" + this.textBox1.Text.Trim() + "' "; _manstatus = string.Format(" 条码 like '%{0}%' ", this.textBox1.Text.Trim()); } if (this.comboBox1.Text == "调度任务索引") { //_manstatus = " 调度任务索引='" + this.textBox1.Text.Trim() + "' "; _manstatus = string.Format(" 调度任务索引 like '%{0}%' ", this.textBox1.Text.Trim()); } string Type = comboTaskType.Text.Trim();//出入库任务类型 string Floor = comboFloor.SelectedIndex <= 0 ? string.Empty : Convert.ToString(comboFloor.SelectedIndex);//任务所在楼层 ,入库和移库任务判断起点,出库任务判断终点 string Lane = comboLane.SelectedIndex <= 0 ? string.Empty : string.Format("1800{0}", comboLane.SelectedIndex); //任务所在巷道,入库任务判断终点,出库任务判断起点 // string str1 = string.Format(" And (作业类型 like '%{0}%') And (((作业类型!='出库') and (起点 like '{1}%')) OR ((作业类型='出库') and (终点 like '{2}%')))", Type, Floor, Floor); string str1 = string.Format(" And (任务状态 = '开始执行') And (作业类型 like '%{0}%') And (((作业类型='入库' OR 作业类型 like'%手工临时搬运任务%'OR 作业类型 like'%移库%') and (起点 like '{1}%')) OR ((作业类型='出库') and (终点 like '{2}%')))", Type, Floor, Floor); string str2 = string.Format(" And ((终点 like '{0}%') OR (起点 like '{1}%'))", Lane, Lane); //string str2 = string.Format(" And (((作业类型!='出库') and (终点 like '{0}%')) OR ((作业类型='出库') and (起点 like '{1}%')))", Lane, Lane); _manstatus = string.Format("{0}{1}{2}", _manstatus, str1, str2);//开始执行 TSMrefresh_Click(); } catch (Exception ex) { MessageBox.Show(ex.Message, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void button2_Click(object sender, EventArgs e) { _manstatus = " F_Status>=-1 "; TSMrefresh_Click(); } private void dgvManager_DataSourceChanged(object sender, EventArgs e) { dgvManager.Columns["F_Status"].Visible = false; } private void cmManager_Opening(object sender, CancelEventArgs e) { if (this.dgvManager.CurrentRow == null) { TSMmanagerOK.Visible = false; //TSMrefresh.Visible = false; TSManager.Visible = false; toolStripSeparator1.Visible = false; //TSMmanagerDisassemble.Visible = false; toolStripMenuItem1.Visible = false; toolStripSeparator2.Visible = false; return; } if (Convert.ToInt32(this.dgvManager.CurrentRow.Cells["调度任务索引"].Value) > 0) { TSMmanagerOK.Visible = true; TSManager.Visible = true; toolStripSeparator1.Visible = true; toolStripSeparator2.Visible = true; //TSMmanagerDisassemble.Visible = true; toolStripMenuItem1.Visible = true; TSManager.Text = "任务类型:" + this.dgvManager.CurrentRow.Cells["任务类型"].Value.ToString() + ";调度任务索引:" + this.dgvManager.CurrentRow.Cells["调度任务索引"].Value.ToString(); } } private void TSMmanagerOK_Click(object sender, EventArgs e) { char[] cc = new char[1] { ':' }; string[] split = TSManager.Text.Split(cc); if ((split[1] == "") || (split[2] == "")) { return; } try { char[] scc = new char[1] { ';' }; string[] strsplit = split[1].Split(scc); int mti = 0; int fid = Convert.ToInt32(split[2]); if (strsplit[0] == "") return; switch (strsplit[0]) { case "调度任务": mti = 1; break; case "自动任务": mti = 2; break; case "临时任务": mti = 3; break; case "手工任务": mti = 4; break; } string cap = strsplit[0]; string hw = ""; if (this.dgvManager.CurrentRow.Cells["终点货位"].Value.ToString() != "-") { hw = ",终点货位:" + this.dgvManager.CurrentRow.Cells["终点货位"].Value.ToString(); } //20100108 if (MessageBox.Show("您确认条码:“" + this.dgvManager.CurrentRow.Cells["条码"].Value.ToString() + "”," + cap + split[2] + "已经被搬运到终点设备“" + this.dgvManager.CurrentRow.Cells["终点"].Value.ToString() + hw + "”了吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { return; } CStaticClass.WcfControl.BeginModifyManageTask(mti, fid, Model.CGeneralFunction.TASKFINISH, new AsyncCallback(ModifyManageTaskCallBack), null); //{ // MessageBox.Show(cap, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); //} TSMrefresh_Click(); } catch (Exception ex) { MessageBox.Show(ex.Message, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void TSMmanagerDisassemble_Click(object sender, EventArgs e) { char[] cc = new char[1] { ':' }; string[] split = TSManager.Text.Split(cc); if ((split[1] == "") || (split[2] == "")) { return; } char[] scc = new char[1] { ';' }; string[] strsplit = split[1].Split(scc); int mti = 0; int fid = Convert.ToInt32(split[2]); if (strsplit[0] == "") return; switch (strsplit[0]) { case "调度任务": mti = 1; break; case "自动任务": mti = 2; break; case "临时任务": mti = 3; break; case "手工任务": mti = 4; break; } if (mti == 1) { dbo.ExceSQL("update T_Manage_Task set FIntoStepOK='0' where FID=" + fid + " and FIntoStepOK='-' "); // string sql = string.Format("SELECT * FROM T_Manage_Task WHERE (FIntoStepOK = '0') AND F_ManageTaskKindIndex={0} and FID={1} ", mti, fid); // DataView dvM = new DataView(); // dvM = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; // if (dvM.Count>0) // { // if (CDisassembleTask.CreateMonitor(mti, fid, routeid, dvM[0], 0) > 0) // { // //分解完成,修改T_Manage_Task表FIntoStepOK=1 // //20101124 // sql.Remove(0, sql.Length); // sql.Append("update T_Manage_Task set FIntoStepOK='1' where FID=").Append(dvM[i]["FID"] // ).Append(" and F_ManageTaskKindIndex=").Append(dvM[i]["F_ManageTaskKindIndex"]); // dbo.ExceSQL(sql.ToString()); // } //} } TSMrefresh_Click(); } private void FrmModifyManage_Load(object sender, EventArgs e) { rbmanRun_Click(sender, e); } private void toolStripMenuItem1_Click(object sender, EventArgs e) { //删除调度任务900 try { char[] cc = new char[1] { ':' }; string[] split = TSManager.Text.Split(cc); if ((split[1] == "") || (split[2] == "")) { return; } char[] scc = new char[1] { ';' }; string[] strsplit = split[1].Split(scc); int mti = 0; int fid = Convert.ToInt32(split[2]); if (strsplit[0] == "") return; switch (strsplit[0]) { case "调度任务": mti = 1; break; case "自动任务": mti = 2; break; case "临时任务": mti = 3; break; case "手工任务": mti = 4; break; } string hw = ""; if (this.dgvManager.CurrentRow.Cells["起点货位"].Value.ToString() != "-") { hw = ",起点货位:" + this.dgvManager.CurrentRow.Cells["起点货位"].Value.ToString(); } string cap = strsplit[0]; if (MessageBox.Show("您确认条码:“" + this.dgvManager.CurrentRow.Cells["条码"].Value.ToString() + "”," + cap + split[2] + "已经被取消操作,而且人工搬运托盘退回到起点设备“" + this.dgvManager.CurrentRow.Cells["起点"].Value.ToString() + hw + "”了吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { return; } CStaticClass.WcfControl.BeginModifyManageTask(mti, fid, Model.CGeneralFunction.TASKDELETE, new AsyncCallback(ModifyManageTaskCallBack), null); //{ // MessageBox.Show(cap, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); //} TSMrefresh_Click(); } catch (Exception ex) { MessageBox.Show(ex.Message, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } } int GetDeviceKindIdx(int devIdx) { try { devinfo = Model.CGetInfo.GetDeviceInfo(devIdx); return devinfo.DeviceKind; } catch (Exception ex) { throw ex; } } int GetManageTaskIndexfromMonitor(int monitorIdx) { DataView dv = dbo.ExceSQL("SELECT F_ManageTaskIndex FROM T_Monitor_Task WHERE (F_MonitorIndex = " + monitorIdx + ")").Tables[0].DefaultView; if (dv.Count > 0) { return Convert.ToInt32(dv[0]["F_ManageTaskIndex"]); } else { return -1; } } int GetManageTaskKindIndexFromMonitor(int monitorIdx) { DataView dv = dbo.ExceSQL("SELECT F_ManageTaskKindIndex FROM T_Monitor_Task WHERE (F_MonitorIndex = " + monitorIdx + ")").Tables[0].DefaultView; if (dv.Count > 0) { return Convert.ToInt32(dv[0]["F_ManageTaskKindIndex"]); } else { return -1; } } int GetDeviceOrderFromMonitor(int MonitorIndex) { try { string sql = "select F_DeviceCommandIndex from T_Monitor_Task where (F_DeviceCommandIndex IS NOT NULL) and F_MonitorIndex=" + MonitorIndex; DataView dv = dbo.ExceSQL(sql).Tables[0].DefaultView; if (dv.Count > 0) { return Convert.ToInt32(dv[0]["F_DeviceCommandIndex"]); } else { return -1; } } catch (Exception ex) { throw ex; } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { try { string df = ""; switch (this.comboBox1.Text) { case "条码": df = "条码"; break; case "调度任务索引": df = "调度任务索引"; break; default: return; } //20100208 string sql = "select distinct " + df + " from V_Manage_Task "; DataView dv = dbo.ExceSQL(sql).Tables[0].DefaultView; if (dv.Count > 0) { this.textBox1.DataSource = null; this.textBox1.DisplayMember = df; this.textBox1.ValueMember = df; this.textBox1.DataSource = dv; } } catch (Exception ex) { throw ex; } } private void dgvManager_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) { if (e.Button == MouseButtons.Right) { if ((e.RowIndex >= 0) && (e.ColumnIndex >= 0)) { //若行已是选中状态就不再进行设置 if (dgvManager.Rows[e.RowIndex].Selected == false) { dgvManager.ClearSelection(); dgvManager.Rows[e.RowIndex].Selected = true; } //只选中一行时设置活动单元格 if (dgvManager.SelectedRows.Count == 1) { dgvManager.CurrentCell = dgvManager.Rows[e.RowIndex].Cells[e.ColumnIndex]; } //弹出操作菜单 cmManager.Show(MousePosition.X, MousePosition.Y); } } } void ModifyManageTaskCallBack(IAsyncResult ar) { string errtext=string.Empty; if (CStaticClass.WcfControl.EndModifyManageTask(out errtext, ar) == false) { MessageBox.Show(errtext, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (this.IsDisposed == true) return; this.BeginInvoke(new MethodInvoker (delegate() { TSMrefresh_Click(); } )); } private void FrmModifyManage_FormClosing(object sender, FormClosingEventArgs e) { _formInstance = null; } private void dgvManager_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if ((e.ColumnIndex >= 0) && (e.RowIndex >= 0)) { dgvManager.ClearSelection(); dgvManager.Rows[e.RowIndex].Selected = true; dgvManager.CurrentCell = dgvManager.Rows[e.RowIndex].Cells[e.ColumnIndex]; FrmModifyMonitor.FormInstance.comboBox1.Text = "条码"; FrmModifyMonitor.FormInstance.textBox1.Text = dgvManager.CurrentRow.Cells["条码"].Value.ToString(); FrmModifyMonitor.FormInstance.Show(); FrmModifyMonitor.FormInstance.button1_Click(sender, e); this.Visible = false; } } private void rbmanAll_Click(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { _manstatus = " F_Status>=-1 "; } TSMrefresh_Click(); } private void rbmanRun_Click(object sender, EventArgs e) { if (rbmanRun.Checked == true) { _manstatus = " F_Status>=1 "; } TSMrefresh_Click(); } private void rbmanWait_Click(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { _manstatus = " F_Status=0 "; } TSMrefresh_Click(); } private void button3_Click(object sender, EventArgs e) { FrmRelativeIDSet.FormInstance.Show(); } private void toolStripMenuItemLevel1_Click(object sender, EventArgs e) { SetTaskLevel(21); } private void SetTaskLevel( int level) { string sql = string.Empty; try { char[] cc = new char[1] { ':' }; string[] split = TSManager.Text.Split(cc); if ((split[1] == "") || (split[2] == "")) { return; } char[] scc = new char[1] { ';' }; string[] strsplit = split[1].Split(scc); int mti = 0; int fid = Convert.ToInt32(split[2]); if (strsplit[0] == "") return; switch (strsplit[0]) { case "调度任务": mti = 1; break; case "自动任务": mti = 2; break; case "临时任务": mti = 3; break; case "手工任务": mti = 4; break; } sql = string.Format("update T_Manage_Task set FTASKLEVEL={0} where FID={1} and F_ManageTaskKindIndex={2}",level,fid, mti); dbo.ExceSQL(sql); sql = string.Format("update T_Monitor_Task set F_MonitorTaskLevel={0} where F_ManageTaskIndex={1} and F_ManageTASKKINDINDEX={2}", level, fid, mti); dbo.ExceSQL(sql); } catch (Exception ex) { MessageBox.Show(ex.Message, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void toolStripMenuItemLevel2_Click(object sender, EventArgs e) { SetTaskLevel(11); } private void toolStripMenuItemLevel3_Click(object sender, EventArgs e) { SetTaskLevel(0); } } }