using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DBFactory; using System.Net.Sockets; using System.Threading; using System.ServiceModel; using System.Net; namespace wcfControlMonitorClient { /// /// Creator:Richard.liu /// 设备指令队列管理 /// public partial class FrmSeeMonitor : Form { string _monstatus = " F_Status>=-1 "; private static FrmSeeMonitor _formInstance; public static FrmSeeMonitor FormInstance { get { if (_formInstance == null) { _formInstance = new FrmSeeMonitor(); } return _formInstance; } set { _formInstance = value; } } DBOperator dbo = CStaticClass.dbo; DBOperator dboM = CStaticClass.dboM; public FrmSeeMonitor() { InitializeComponent(); _formInstance = this; } private void rbmonAll_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { _monstatus = " F_Status>=-1 "; } TSMMonitorRefresh_Click(); } private void TSMMonitorRefresh_Click() { this.dgvMonitor.DataSource = dbo.ExceSQL("select * from V_Monitor_Task with(nolock) where " + _monstatus + " order by 设备指令索引 asc ").Tables[0].DefaultView; } private void rbmonRun_CheckedChanged(object sender, EventArgs e) { if (rbmonRun.Checked == true) { _monstatus = " (F_Status>=1) "; } TSMMonitorRefresh_Click(); } private void rbmonWait_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { _monstatus = " F_Status=0 "; } TSMMonitorRefresh_Click(); } public void button1_Click(object sender, EventArgs e) {//20140218 try { if (this.textBox1.Text.Trim().Length == 0) return; string _manstatus = " F_Status>=-1 "; if (this.comboBox1.Text == "条码") { _monstatus = " 条码='" + this.textBox1.Text.Trim() + "' "; _manstatus = " 条码 like '%" + this.textBox1.Text.Trim() + "%' "; } if (this.comboBox1.Text == "设备指令索引") { _monstatus = " 设备指令索引='" + this.textBox1.Text.Trim() + "' "; _manstatus = " 调度任务索引='" + CStaticClass.GetManageTaskIndexfromMonitor(Convert.ToInt32(this.textBox1.Text.Trim())) + "' "; } if (this.comboBox1.Text == "调度任务索引") { _monstatus = " 调度任务索引='" + this.textBox1.Text.Trim() + "' "; _manstatus = " 调度任务索引='" + this.textBox1.Text.Trim() + "' "; } if (this.comboBox1.Text == "设备索引")//20130817richard { _monstatus = " F_Status<>0 and 设备索引='" + this.textBox1.Text.Trim() + "' "; int manFID = Convert.ToInt32(dbo.GetSingle("SELECT F_ManageTaskIndex,F_DeviceIndex,F_Status FROM T_Monitor_Task where F_Status<>0 and F_DeviceIndex='" + this.textBox1.Text.Trim() + "' ")); _manstatus = " 调度任务索引='" + manFID + "' "; } TSMMonitorRefresh_Click(); this.dgvManager.DataSource = dbo.ExceSQL("select * from V_Manage_Task with(nolock) where " + _manstatus).Tables[0].DefaultView; } catch (Exception ex) { MessageBox.Show(ex.Message, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void button2_Click(object sender, EventArgs e) { _monstatus = " F_Status>=-1 "; TSMMonitorRefresh_Click(); } private void dgvMonitor_DataSourceChanged(object sender, EventArgs e) { dgvMonitor.Columns["F_Status"].Visible = false; } private void FrmModifyMonitor_Load(object sender, EventArgs e) { rbmonRun_CheckedChanged(sender, e); } private void tsmAGVGet_Click(object sender, EventArgs e) { string sql = ""; //由T_Monitor_Task表中获得F_NumParam2字段值 条件:消息返回的小车任务号 DataTable tableMonitorTask = dbo.ExceSQL("SELECT F_ManageTASKKINDINDEX,F_ManageTaskIndex,F_NumParam2,F_AgvTask,F_AgvNo FROM T_MONITOR_TASK WHERE F_DeviceIndex=1001 and F_MonitorIndex=" + this.dgvMonitor.CurrentRow.Cells[2].Value + "").Tables[0]; if (tableMonitorTask.Rows.Count > 0) { if (MessageBox.Show("您确认手工报告AGV叉货完成吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { return; } sql = "UPDATE T_Monitor_Task SET F_Status = 2 WHERE (F_MonitorIndex =" + this.dgvMonitor.CurrentRow.Cells[2].Value + ")"; dbo.ExceSQL(sql); //由T_Base_AGV_Gate表中获得F_AGVGateDeviceIndex字段值 条件:T_Base_AGV_Gate.F_Address = T_Monitor_Task.F_NumParam2 DataTable tableAGVGate = dbo.ExceSQL("SELECT F_AGVGateDeviceIndex FROM T_BASE_AGV_GATE WHERE F_ADDRESS = " + Convert.ToInt32(tableMonitorTask.Rows[0]["F_NumParam2"]) + "").Tables[0]; if (tableAGVGate.Rows.Count > 0) { if (MessageBox.Show("您确定要把设备:" + tableAGVGate.Rows[0]["F_AGVGateDeviceIndex"] + "置成【无托盘】状态吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { return; } //更改T_Base_Device表中的F_HaveGoods字段值为0。条件:T_Base_Device.F_DeviceIndex = T_Base_AGV_Gate.F_AGVGateDeviceIndex dbo.ExecuteSql("UPDATE T_BASE_DEVICE SET F_PALLETBARCODE='-',F_HAVEGOODS = 0 WHERE F_DEVICEINDEX = " + Convert.ToInt32(tableAGVGate.Rows[0]["F_AGVGateDeviceIndex"]) + ""); string errtext=string.Empty; if (tableMonitorTask.DefaultView[0]["F_ManageTASKKINDINDEX"].ToString() == "1") { //20090817给管理置无托盘信息 dboM.ExecuteSql("UPDATE T_ITEMDEVICE SET devicestatus ='0' WHERE devicecode = '" + tableAGVGate.Rows[0]["F_AGVGateDeviceIndex"] + "'"); } } string sss = "AGV车号:" + tableMonitorTask.Rows[0]["F_AgvNo"].ToString() + ";设备指令索引:" + this.dgvMonitor.CurrentRow.Cells[2].Value.ToString(); CommonClassLib.CCarryConvert.WriteDarkCasket("设备指令管理", "手工报告AGV叉货完成", tableMonitorTask.Rows[0]["F_AgvNo"].ToString() + "号车", sss); } else { MessageBox.Show("只有AGV任务才可以手工报告AGV叉货完成!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } private void tsmAGVSend_Click(object sender, EventArgs e) { //由T_Monitor_Task表中获得F_NumParam5字段值 条件:消息返回的小车任务号 DataTable tableMonitorTask = dbo.ExceSQL("SELECT F_TxtParam,F_NumParam5,F_AgvTask,F_AgvNo FROM T_MONITOR_TASK WHERE F_DeviceIndex=1001 and F_MonitorIndex=" + this.dgvMonitor.CurrentRow.Cells[2].Value + "").Tables[0]; if (tableMonitorTask.Rows.Count > 0) { if (MessageBox.Show("您确认手工报告AGV卸货完成吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { return; } //由T_Base_AGV_Gate表中获得F_AGVGateDeviceIndex字段值 条件:T_Base_AGV_Gate.F_Address = T_Monitor_Task.F_NumParam2 DataTable tableAGVGate = dbo.ExceSQL("SELECT F_AGVGateDeviceIndex FROM T_BASE_AGV_GATE WHERE F_ADDRESS = " + Convert.ToInt32(tableMonitorTask.Rows[0]["F_NumParam5"]) + "").Tables[0]; if (tableAGVGate.Rows.Count > 0) { if (MessageBox.Show("您确定要把设备:" + tableAGVGate.Rows[0]["F_AGVGateDeviceIndex"] + "置成【有托盘】状态吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { return; } //更改T_Base_Device表中的F_HaveGoods字段值为0。条件:T_Base_Device.F_DeviceIndex = T_Base_AGV_Gate.F_AGVGateDeviceIndex dbo.ExecuteSql("UPDATE T_BASE_DEVICE SET F_PALLETBARCODE='" + tableMonitorTask.Rows[0]["F_TxtParam"] + "',F_HAVEGOODS = 1 WHERE F_DEVICEINDEX = " + Convert.ToInt32(tableAGVGate.Rows[0]["F_AGVGateDeviceIndex"]) + ""); } string sss = "AGV车号:" + tableMonitorTask.Rows[0]["F_AgvNo"].ToString() + ";设备指令索引:" + this.dgvMonitor.CurrentRow.Cells[2].Value.ToString(); CommonClassLib.CCarryConvert.WriteDarkCasket("设备指令管理", "手工报告AGV卸货完成", tableMonitorTask.Rows[0]["F_AgvNo"].ToString() + "号车", sss); CStaticClass.WcfControl.BeginModifyMonitorTask(1001,Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[2].Value), Model.CGeneralFunction.TASKFINISH ,new AsyncCallback(ModifyMonitorTaskCallBack), null); } else { MessageBox.Show("只有AGV任务才可以手工报告AGV放货完成!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } private void tsmAGVBank_Click(object sender, EventArgs e) { string errtext=string.Empty; CStaticClass.WcfControl.BeginModifyMonitorTask(1001,Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[2].Value), Model.CGeneralFunction.TASKFINISH, new AsyncCallback(ModifyMonitorTaskCallBack), null); } private void tsmAGVGoods_Click(object sender, EventArgs e) { string errtext = string.Empty; CStaticClass.WcfControl.BeginModifyMonitorTask(1001,Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[2].Value), Model.CGeneralFunction.TASKFINISH ,new AsyncCallback(ModifyMonitorTaskCallBack), null); } private void dgvMonitor_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { foreach (DataGridViewRow DGVRow in this.dgvMonitor.Rows) { if (DGVRow != null) { if (Convert.ToInt32(DGVRow.Cells["f_status"].Value) >= 30) { DGVRow.DefaultCellStyle.BackColor = Color.Red; } } } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { try { string df = ""; string wherestr = " where 1=1 "; switch (this.comboBox1.Text) { case "条码": df = "条码"; break; case "调度任务索引": df = "调度任务索引"; break; case "设备指令索引": df = "设备指令索引"; wherestr = " where f_status<>0 "; break; case "设备索引": df = "设备索引";//20130817richard wherestr = " where f_status<>0 "; break; default: return; } //20100208 string sql = "select distinct " + df + " from V_Monitor_Task with(nolock) " + wherestr; 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 dgvMonitor_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) { string errtext = string.Empty; if ((e.RowIndex >= 0))//&&(e.Button == MouseButtons.Right) { dgvMonitor.ClearSelection(); dgvMonitor.Rows[e.RowIndex].Selected = true; dgvMonitor.CurrentCell = dgvMonitor.Rows[e.RowIndex].Cells[0]; } } void ModifyMonitorTaskCallBack(IAsyncResult ar) { if (this.IsDisposed == true) return; string errtext = string.Empty; this.BeginInvoke(new MethodInvoker(delegate() { if (CStaticClass.WcfControl.EndModifyMonitorTask(out errtext, ar) == false) { MessageBox.Show(errtext, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } TSMMonitorRefresh_Click(); })); } void ModifyMonitorTask1CallBack(IAsyncResult ar) { if (this.IsDisposed == true) return; string errtext = string.Empty; this.BeginInvoke(new MethodInvoker(delegate() { if (CStaticClass.WcfControl.EndModifyMonitorTask1(out errtext, ar) == false) { MessageBox.Show(errtext, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } TSMMonitorRefresh_Click(); })); } private void FrmModifyMonitor_FormClosing(object sender, FormClosingEventArgs e) { _formInstance = null; } private void radioButton1_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { _monstatus = " 条码 like'%PAT%' "; } TSMMonitorRefresh_Click(); } private void radioButton2_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { _monstatus = " 条码 like'%BOX%' "; } TSMMonitorRefresh_Click(); } private void radioButton4_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { _monstatus = " 条码 like'%PAT%' and F_Status>=1"; } TSMMonitorRefresh_Click(); } private void radioButton3_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { _monstatus = " 条码 like'%BOX%' and F_Status>=1"; } TSMMonitorRefresh_Click(); } } }