天津康师傅调度系统
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.
 
 

800 lines
38 KiB

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;
namespace wcfControlMonitorClient
{
/// <summary>
/// Creator:Richard.liu
/// 设备指令队列管理
/// </summary>
public partial class FrmModifyMonitor : Form
{
string _monstatus = " F_Status>=-1 ";
Model.MDevice _device = null;
private static FrmModifyMonitor _formInstance;
public static FrmModifyMonitor FormInstance
{
get
{
if (_formInstance == null)
{
_formInstance = new FrmModifyMonitor();
}
return _formInstance;
}
set { _formInstance = value; }
}
DBOperator dbo = CStaticClass.dbo;
DBOperator dboM = CStaticClass.dboM;
public FrmModifyMonitor()
{
InitializeComponent();
_formInstance = this;
}
private void cmMonitor_Opening(object sender, CancelEventArgs e)
{
if (this.dgvMonitor.CurrentRow == null)
{
TSMonitor.Visible = false;
TSMManager.Visible = false;
TSMonitorinfo.Visible = false;
TSMmonitorOK.Visible = false;
TSMRestore.Visible = false;
TSMmonitorDel.Visible = false;
toolStripSeparator2.Visible = false;
tsmAGV.Visible = false;
tsmAGVGet.Visible = false;
tsmAGVSend.Visible = false;
tsmAGVBank.Visible = false;
tsmAGVGoods.Visible = false;
return;
}
if (Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells["调度任务索引"].Value) > 0)
{
TSMonitor.Visible = true;
TSMManager.Visible = true;
TSMonitorinfo.Visible = true;
//TSMSimulateRun.Visible = true;
TSMmonitorOK.Visible = true;
//TSMmonitorDel.Visible = true;
TSMRestore.Visible = true;
toolStripSeparator2.Visible = true;
#region 显示的信息
int deviceindex = Convert.ToInt32(dgvMonitor.CurrentRow.Cells["设备索引"].Value);//设备编号
string devicename = this.dgvMonitor.CurrentRow.Cells["设备名称"].Value.ToString();//设备名称
int DeviceKind = 0; //= ccf.GetDeviceKindIdx(deviceindex);//设备类型
_device = Model.CGetInfo.GetDeviceInfo(deviceindex);
//20100108
if (_device != null)
{
DeviceKind = _device.DeviceKind;
}
string info = string.Empty;
TSMManager.Text = string.Format("调度任务索引:{0},任务类型:{1},条码:{2}", this.dgvMonitor.CurrentRow.Cells["调度任务索引"].Value.ToString(), this.dgvMonitor.CurrentRow.Cells["任务类型"].Value.ToString(),dgvMonitor.CurrentRow.Cells["条码"].Value.ToString());
TSMonitor.Text = string.Format("设备指令索引:{0}", this.dgvMonitor.CurrentRow.Cells["设备指令索引"].Value.ToString());
int order = Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells["设备命令索引"].Value);//命令
string ordername = this.dgvMonitor.CurrentRow.Cells["设备命令名称"].Value.ToString();//命令名称
int Z = Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells["起点Z"].Value);//起点Z
int X = Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells["起点X"].Value);//起点X
int Y = Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells["起点Y"].Value);//起点Y
int Z1 = Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells["终点Z"].Value);//终点Z
int X1 = Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells["终点X"].Value);//终点X
int Y1 = Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells["终点Y"].Value);//终点Y
int fork=0;
//int fork = Convert.ToInt32(dgvMonitor.CurrentRow.Cells["货叉"].Value);//货叉编号
string forkuse = "待分配";
//DeviceKind+ deviceindex ordername Z/X/Y
if(fork==1)
{
forkuse = "近货叉";
}
else
if (fork==2)
{
forkuse = "远货叉";
}
switch (DeviceKind)
{
case 1://堆垛机
switch (order)
{
case 1:
info = string.Format("{0}回原点", deviceindex);
break;
case 2://将取,取
case 4:
//info = string.Format("{0}到货位{1:D2}排-{2:D2}列-{3:D2}层{4},货叉:{5}", deviceindex, Z, X, Y, ordername,forkuse);
info = string.Format("{0}到货位{1:D2}排-{2:D2}列-{3:D2}层{4}", deviceindex, Z, X, Y, ordername);
break;
case 3:
case 5:
//info = string.Format("{0}到货位{1:D2}排-{2:D2}列-{3:D2}层{4},货叉:{5}", deviceindex, Z1, X1, Y1, ordername, forkuse);
info = string.Format("{0}到货位{1:D2}排-{2:D2}列-{3:D2}层{4}", deviceindex, Z1, X1, Y1, ordername);
break;
case 6:
//info = string.Format("{0}从货位{1:D2}排-{2:D2}列-{3:D2}层取货,送货到{4:D2}排-{5:D2}列-{6:D2}层,货叉:{7}", deviceindex, Z, X, Y, Z1, X1, Y1, forkuse);
info = string.Format("{0}从货位{1:D2}排-{2:D2}列-{3:D2}层取货,送货到{4:D2}排-{5:D2}列-{6:D2}层", deviceindex, Z, X, Y, Z1, X1, Y1);
break;
}
break;
case 2://输送机
switch (order)
{
case 1:
case 2:
case 8:
case 9:
info = string.Format("{0}{1}", deviceindex, ordername);
break;
case 6:
info = string.Format("{0}{1}货物到{2}", deviceindex, ordername, Z1);
break;
}
//TSMmonitorOK.Visible = false;
////TSMmonitorDel.Visible = true;
//TSMRestore.Visible = false;
break;
case 4://RGV
switch (order)
{
case 7:
info = string.Format("{0}{1}到输送机{2}", deviceindex, ordername, Z);
break;
case 8:
case 9:
info = string.Format("{0}到输送机{1}{2}", deviceindex, Z, ordername);
break;
}
break;
case 6://AGV
//TSMmonitorDel.Visible = true;
//tsmAGV.Visible = true;
//tsmAGVGet.Visible = true;
//tsmAGVSend.Visible = true;
//tsmAGVBank.Visible = true;
//tsmAGVGoods.Visible = true;
break;
}
TSMonitorinfo.Text = string.Format("指令描述:{0}", info);
#endregion
//TSMManager.Text = "条码:" + this.dgvMonitor.CurrentRow.Cells["条码"].Value.ToString() +
// ";调度任务索引:" + this.dgvMonitor.CurrentRow.Cells["调度任务索引"].Value.ToString();
//TSMonitor.Text = "设备指令索引:" + this.dgvMonitor.CurrentRow.Cells["设备指令索引"].Value.ToString();
////string CorrelRGV = "12008,12016,12024,32008,32016,32024,42008,42016,42024";//-1,-3
//string Upok = "32027,32040";//+2,+6
//int device=Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells["设备索引"].Value);
//TSMmonitorOK.DropDownItems.Clear();
//if (CorrelRGV.IndexOf(device.ToString()) >= 0)
//{
// ToolStripMenuItem tsmi = new ToolStripMenuItem(Convert.ToInt32(device - 1).ToString());
// tsmi.Click += new EventHandler(TSMmonitorOK_Click);
// TSMmonitorOK.DropDownItems.Add(tsmi);
// ToolStripMenuItem tsmi1 = new ToolStripMenuItem(Convert.ToInt32(device - 3).ToString());
// TSMmonitorOK.DropDownItems.Add(tsmi1);
// tsmi1.Click += new EventHandler(TSMmonitorOK_Click);
//}
//else if (Upok.IndexOf(device.ToString()) >= 0)
//{
// ToolStripMenuItem tsmi = new ToolStripMenuItem(Convert.ToInt32(device +2).ToString());
// tsmi.Click += new EventHandler(TSMmonitorOK_Click);
// TSMmonitorOK.DropDownItems.Add(tsmi);
// ToolStripMenuItem tsmi1 = new ToolStripMenuItem(Convert.ToInt32(device + 6).ToString());
// tsmi1.Click += new EventHandler(TSMmonitorOK_Click);
// TSMmonitorOK.DropDownItems.Add(tsmi1);
//}
//if (this.dgvMonitor.CurrentRow.Cells[3].Value.ToString() == "1001")
//{
// TSMSimulateRun.Visible = false;
// TSMmonitorOK.Visible = false;
// TSMRestore.Visible = true;
// toolStripSeparator2.Visible = false;
// tsmAGV.Visible = true;
// tsmAGVGet.Visible = true;
// tsmAGVSend.Visible = true;
// if (this.dgvMonitor.CurrentRow.Cells[5].Value.ToString() == "2")//1219空托盘回收
// {
// tsmAGVGoods.Visible = false;
// tsmAGVBank.Visible = true;
// tsmAGVSend.Visible = false;
// return;
// }
// else
// {
// tsmAGVSend.Visible = true;
// tsmAGVBank.Visible = false;
// }
// if (this.dgvMonitor.CurrentRow.Cells[5].Value.ToString() == "3")//1220残托盘回收
// {
// tsmAGVBank.Visible = false;
// tsmAGVGoods.Visible = true;
// tsmAGVSend.Visible = false;
// return;
// }
// else
// {
// tsmAGVSend.Visible = true;
// tsmAGVGoods.Visible = false;
// }
//}
//else
//{
tsmAGV.Visible = false;
tsmAGVGet.Visible = false;
tsmAGVSend.Visible = false;
tsmAGVBank.Visible = false;
tsmAGVGoods.Visible = false;
//}
}
}
private void TSMmonitorOK_Click(object sender, EventArgs e)
{
ToolStripMenuItem tsm = sender as ToolStripMenuItem;
if (tsm.DropDownItems.Count > 0) return;
int deviceindex = 0;
int.TryParse(tsm.Text, out deviceindex);
char[] cc = new char[1] { ':' };
string[] split = TSMonitor.Text.Split(cc);
if (split[1] == "") return;
try
{
DataView dv = dbo.ExceSQL("SELECT * FROM T_Monitor_Task Where F_MonitorIndex=" +
Convert.ToInt32(split[1])).Tables[0].DefaultView;
if (dv.Count > 0)
{
//20100108中间指令被报告完成时给与提示和警告
DataView dv0 = dbo.ExceSQL("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = " + dv[0]["F_ManageTaskIndex"] + ") AND (F_ManageTASKKINDINDEX = " + dv[0]["F_ManageTASKKINDINDEX"] + ")").Tables[0].DefaultView;
if (dv0.Count > 0)
{
if ((dv0[0]["mmi"] != DBNull.Value) && (dv0[0]["mmi"].ToString() != split[1]))
{
if (MessageBox.Show("条码:" + dv[0]["F_TxtParam"].ToString() + ",设备名称:“" + this.dgvMonitor.CurrentRow.Cells["设备名称"].Value.ToString() + ";设备命令:" + this.dgvMonitor.CurrentRow.Cells["设备命令名称"].Value.ToString() + "”之前还有没执行完成的调度任务,提前【动作完成】会造成调度任务混乱,您确认要继续操作吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
{
return;
}
}
}
dv0 = null;
//20100108操作黑匣子增加托盘条码
if (MessageBox.Show("您确认条码:" + dv[0]["F_TxtParam"].ToString() + ",设备名称:“" + this.dgvMonitor.CurrentRow.Cells["设备名称"].Value.ToString() + ";设备命令:" + this.dgvMonitor.CurrentRow.Cells["设备命令名称"].Value.ToString() + "”已经操作完成了吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
{
return;
}
string sss = "设备索引:" + dv[0]["F_DeviceIndex"].ToString() + ";设备指令索引:" + dv[0]["F_MonitorIndex"].ToString();
//20100108操作黑匣子增加托盘条码
CommonClassLib.CCarryConvert.WriteDarkCasket("设备指令管理", "手工报告完成", "条码:" + dv[0]["F_TxtParam"].ToString(), sss);
string errtext = string.Empty;
if (deviceindex == 0)
{
deviceindex = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
}
if (dv[0]["F_NumParam4"].ToString() != "0" && CStaticClass.GetDeviceKindIdx(deviceindex) == 2)
{//20120906输送机的送出指令,以终点输送机作为任务完成设备
deviceindex = Convert.ToInt32(dv[0]["F_NumParam4"]);
}
CStaticClass.WcfControl.BeginModifyMonitorTask(deviceindex,Convert.ToInt32(dv[0]["F_MonitorIndex"]), Model.CGeneralFunction.TASKFINISH, new AsyncCallback(ModifyMonitorTaskCallBack), null);
//{
// MessageBox.Show(errtext, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error);
//}
TSMMonitorRefresh_Click();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void TSMRestore_Click(object sender, EventArgs e)
{
char[] cc = new char[1] { ':' };
string[] split = TSMonitor.Text.Split(cc);
if (split[1] == "") return;
try
{
string errtext = string.Empty;
int devKind;
int mindex = Convert.ToInt32(split[1]);
int fid = 0;
int mankind =0;
//20100108改为select *
DataView dv = dbo.ExceSQL("select * from T_Monitor_Task where F_MonitorIndex=" + mindex).Tables[0].DefaultView;
if (dv.Count > 0)
{
fid = Convert.ToInt32(dv[0]["F_ManageTaskIndex"]);
mankind = Convert.ToInt32(dv[0]["F_ManageTASKKINDINDEX"]);
//20100108中间指令被复位时给与提示和警告
DataView dv0 = dbo.ExceSQL("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = " + fid + ") AND (F_ManageTASKKINDINDEX = " + mankind + ")").Tables[0].DefaultView;
if (dv0.Count > 0)
{
if ((dv0[0]["mmi"] != DBNull.Value) && (dv0[0]["mmi"].ToString() != mindex.ToString()))
{
if (MessageBox.Show("条码:" + dv[0]["F_TxtParam"].ToString() + ",设备名称:“" + this.dgvMonitor.CurrentRow.Cells["设备名称"].Value.ToString() + ";设备命令:" + this.dgvMonitor.CurrentRow.Cells["设备命令名称"].Value.ToString() + "”之前还有没执行完成的调度任务,提前【复位】会造成调度任务混乱,您确认要继续操作吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
{
return;
}
}
}
dv0 = null;
//20100108操作黑匣子增加托盘条码
if (MessageBox.Show("您确认条码:" + dv[0]["F_TxtParam"].ToString() + ",设备名称:“" + this.dgvMonitor.CurrentRow.Cells["设备名称"].Value.ToString() + ";设备命令:" + this.dgvMonitor.CurrentRow.Cells["设备命令名称"].Value.ToString() + "”需要被重新发送和设备清零吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
{
return;
}
//20091107
devKind =CStaticClass.GetDeviceKindIdx (Convert.ToInt32(dv[0]["F_DeviceIndex"]));
if ((devKind == 6) && (dv[0]["F_AgvNo"] != DBNull.Value))
{
if (MessageBox.Show("您要复位的AGV任务已经分配AGV车号:" + dv[0]["F_AgvNo"].ToString() + ",确认要继续重新下达AGV命令吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
{
return;
}
}
string sss = "设备索引:" + dv[0]["F_DeviceIndex"].ToString() + ";设备指令索引:" + dv[0]["F_MonitorIndex"].ToString();
//20100108操作黑匣子增加托盘条码
CommonClassLib.CCarryConvert.WriteDarkCasket("设备指令管理", "手工复位", "条码:" + dv[0]["F_TxtParam"].ToString(), sss);
CStaticClass.WcfControl.BeginModifyMonitorTask(Convert.ToInt32(dv[0]["F_DeviceIndex"]), Convert.ToInt32(dv[0]["F_MonitorIndex"]), Model.CGeneralFunction.TASKRESTORE,
new AsyncCallback(ModifyMonitorTaskCallBack), null);
//{
// MessageBox.Show(errtext, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error);
//}
TSMMonitorRefresh_Click();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
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()
{
string StrSql = string.Format("select V_Monitor_Task.* from V_Monitor_Task,T_Base_Device where V_Monitor_Task.设备索引=T_Base_Device.F_DeviceIndex and F_WorkArea like '%{0}%' and {1} order by 设备指令索引 asc", CStaticClass.UserArea, _monstatus);
this.dgvMonitor.DataSource = dbo.ExceSQL(StrSql).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 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_Click(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 or F_DeviceIndex=1002 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(Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[7].Value), Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[6].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(Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[7].Value), Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[6].Value), Model.CGeneralFunction.TASKFINISH, new AsyncCallback(ModifyMonitorTaskCallBack), null);
}
private void tsmAGVGoods_Click(object sender, EventArgs e)
{
string errtext = string.Empty;
CStaticClass.WcfControl.BeginModifyMonitorTask(Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[7].Value), Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[6].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 TSMmonitorDel_Click(object sender, EventArgs e)
{
char[] cc = new char[1] { ':' };
string[] split = TSMonitor.Text.Split(cc);
if (split[1] == "") return;
try
{
DataView dv = dbo.ExceSQL("SELECT * FROM T_Monitor_Task Where F_MonitorIndex=" +
Convert.ToInt32(split[1])).Tables[0].DefaultView;
if (dv.Count > 0)
{
//20100108中间指令被报告完成时给与提示和警告
DataView dv0 = dbo.ExceSQL("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = " + dv[0]["F_ManageTaskIndex"] + ") AND (F_ManageTASKKINDINDEX = " + dv[0]["F_ManageTASKKINDINDEX"] + ")").Tables[0].DefaultView;
if (dv0.Count > 0)
{
if ((dv0[0]["mmi"] != DBNull.Value) && (dv0[0]["mmi"].ToString() != split[1]))
{
if (MessageBox.Show("条码:" + dv[0]["F_TxtParam"].ToString() + ",设备名称:“" + this.dgvMonitor.CurrentRow.Cells["设备名称"].Value.ToString() + ";设备命令:" + this.dgvMonitor.CurrentRow.Cells["设备命令名称"].Value.ToString() + "”之前还有没执行完成的调度任务,提前【删除设备指令】会造成调度任务混乱,您确认要继续操作吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
{
return;
}
}
}
dv0 = null;
//20100108操作黑匣子增加托盘条码
if (MessageBox.Show("您确认条码:" + dv[0]["F_TxtParam"].ToString() + ",设备名称:“" + this.dgvMonitor.CurrentRow.Cells["设备名称"].Value.ToString() + ";设备命令:" + this.dgvMonitor.CurrentRow.Cells["设备命令名称"].Value.ToString() + "”已经不需要设备执行了吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
{
return;
}
string sss = "设备索引:" + dv[0]["F_DeviceIndex"].ToString() + ";设备指令索引:" + dv[0]["F_MonitorIndex"].ToString();
//20100108操作黑匣子增加托盘条码
CommonClassLib.CCarryConvert.WriteDarkCasket("设备指令管理", "手工删除设备指令", "条码:" + dv[0]["F_TxtParam"].ToString(), sss);
CStaticClass.WcfControl.BeginModifyMonitorTask(Convert.ToInt32(dv[0]["F_DeviceIndex"]), Convert.ToInt32(dv[0]["F_MonitorIndex"]), Model.CGeneralFunction.TASKDELETE, new AsyncCallback(ModifyMonitorTaskCallBack), null);
//{
// MessageBox.Show(sss, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error);
//}
TSMMonitorRefresh_Click();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
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 " + 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)
{
if (e.Button == MouseButtons.Right)//20130402
{
if ((e.RowIndex >= 0) && (e.ColumnIndex >= 0))
{
//若行已是选中状态就不再进行设置
if (dgvMonitor.Rows[e.RowIndex].Selected == false)
{
dgvMonitor.ClearSelection();
dgvMonitor.Rows[e.RowIndex].Selected = true;
}
//只选中一行时设置活动单元格
if (dgvMonitor.SelectedRows.Count == 1)
{
dgvMonitor.CurrentCell = dgvMonitor.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
//弹出操作菜单
cmMonitor.Show(MousePosition.X, MousePosition.Y);
}
}
}
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();
}));
}
private void FrmModifyMonitor_FormClosing(object sender, FormClosingEventArgs e)
{
_formInstance = null;
}
private void rbmonAll_Click(object sender, EventArgs e)
{
RadioButton rb = (RadioButton)sender;
if (rb.Checked == true)
{
_monstatus = " F_Status>=-1 ";
}
TSMMonitorRefresh_Click();
}
private void rbmonRun_Click(object sender, EventArgs e)
{
if (rbmonRun.Checked == true)
{
_monstatus = " (F_Status>=1) ";
}
TSMMonitorRefresh_Click();
}
private void rbmonWait_Click(object sender, EventArgs e)
{
RadioButton rb = (RadioButton)sender;
if (rb.Checked == true)
{
_monstatus = " F_Status=0 ";
}
TSMMonitorRefresh_Click();
}
private void radioButton1_Click(object sender, EventArgs e)
{
RadioButton rb = (RadioButton)sender;
if (rb.Checked == true)
{
//CStaticClass.RealRefresh = true;
_monstatus = "(设备指令索引 IN(SELECT MIN(设备指令索引) FROM V_Monitor_Task GROUP BY 调度任务索引))";
//string sql = string.Format("SELECT * FROM V_Monitor_Task WHERE {0}", _monstatus);
//this.dgvMonitor.DataSource = dbo.ExceSQL(sql).Tables[0].DefaultView;
TSMMonitorRefresh_Click();
}
}
}
}