using RGD.Common;
using RGD.DataService;
using RGD.DBUtility;
using RGD.MdsAPI.WMS;
using RGD.OPCClient;
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace RGD.WCS
{
    public partial class FrmModifyMonitor : Form
    {
        private string _monstatus = " F_Status<>-1 ";
        private static FrmModifyMonitor _formInstance;

        public static FrmModifyMonitor FormInstance
        {
            get
            {
                if (_formInstance == null)
                {
                    _formInstance = new FrmModifyMonitor();
                }
                return _formInstance;
            }
            set { _formInstance = value; }
        }

        public FrmModifyMonitor()
        {
            InitializeComponent();
            _formInstance = this;
        }

        private CGetState gs = new CGetState();
        private CCommonFunction ccf = new CCommonFunction();

        private void FrmModifyMonitor_Load(object sender, EventArgs e)
        {
            rbmonRun_CheckedChanged(sender, e);
        }

        /// <summary>
        /// 运行队列
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rbmonRun_CheckedChanged(object sender, EventArgs e)
        {
            if (rbmonRun.Checked == true)
            {
                _monstatus = " (F_Status>=1) ";
            }
            TSMMonitorRefresh_Click(sender, e);
        }

        /// <summary>
        /// 全部队列
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rbmonAll_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb = (RadioButton)sender;
            if (rb.Checked == true)
            {
                _monstatus = " F_Status<>-1 ";
            }
            TSMMonitorRefresh_Click(sender, e);
        }

        /// <summary>
        /// 等待队列
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rbmonWait_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb = (RadioButton)sender;
            if (rb.Checked == true)
            {
                _monstatus = " F_Status=0 ";
            }
            TSMMonitorRefresh_Click(sender, e);
        }

        //刷新列表
        private void TSMMonitorRefresh_Click(object sender, EventArgs e)
        {
            CStaticClass.RealRefresh = true;
            this.dgvMonitor.DataSource = DbHelperSQL.Query("select * from V_Monitor_Task where " + _monstatus + " order by 设备指令索引 asc ").Tables[0].DefaultView;
        }

        /// <summary>
        /// 开始查询
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            if (this.textBox1.Text.Trim().Length == 0) return;
            int index = 0;
            bool isint = int.TryParse(this.textBox1.Text.Trim(), out index);
            if (this.comboBox1.Text == "表箱条码")
            {
                _monstatus = " 表箱条码 like'%" + this.textBox1.Text.Trim() + "%' ";
            }
            if (this.comboBox1.Text == "设备指令索引")
            {
                if (isint == false)
                {
                    //MessageBox.Show("请输入数字！", "误操作提示：", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    textBox1.Text = string.Empty;
                    return;
                }
                _monstatus = " 设备指令索引='" + this.textBox1.Text.Trim() + "' ";
            }
            if (this.comboBox1.Text == "调度任务索引")
            {
                if (isint == false)
                {
                    //MessageBox.Show("请输入数字！", "误操作提示：", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    textBox1.Text = string.Empty;
                    return;
                }
                _monstatus = " 调度任务索引='" + this.textBox1.Text.Trim() + "' ";
            }
            TSMMonitorRefresh_Click(sender, e);
        }

        /// <summary>
        /// 显示全部
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            _monstatus = " F_Status<>-1 ";

            TSMMonitorRefresh_Click(sender, e);
        }

        private void dgvMonitor_DataSourceChanged(object sender, EventArgs e)
        {
            dgvMonitor.Columns["F_Status"].Visible = false;
        }

        /// <summary>
        /// 指令完成
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TSMmonitorOK_Click(object sender, EventArgs e)
        {
            char[] cc = new char[1] { '：' };
            string[] split = TSMonitor.Text.Split(cc);
            if (split[1] == "") return;

            DataView dv = DbHelperSQL.Query("SELECT * FROM T_Monitor_Task Where F_MonitorIndex=" +
                Convert.ToInt32(split[1])).Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                //20100108中间指令被报告完成时给与提示和警告

                DataView dv0 = DbHelperSQL.Query("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;
                }
                if (dv[0]["F_DeviceIndex"].ToString() == "11001")
                {
                    if (MessageBox.Show("Agv无法手动完成任务,请问是否只调接口", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        string sResult;
                        //DataView dv_task = DbHelperSQL.Query("select * from t_WareHouse").Tables[0].DefaultView;
                        DataView ds = DbHelperSQL.Query("SELECT * FROM T_Manage_Task =" + dv[0]["F_ManageTaskIndex"]).Tables[0].DefaultView;
                        bool bResult = (new uploadStackIODet()).Notify(ds[0]["fmanageid"].ToString(), ds[0]["FSTARTCELL"].ToString() == "-" ? "02" : "01", ds[0]["FSTARTCELL"].ToString() == "-" ? ds[0]["FENDCELL"].ToString() : ds[0]["FSTARTCELL"].ToString(), out sResult);
                        MessageBox.Show("调用接口" + (bResult ? "成功" : "失败"));
                    }
                }
                string sss = "设备索引:" + dv[0]["F_DeviceIndex"].ToString() + ";设备指令索引:" + dv[0]["F_MonitorIndex"].ToString();
                //20100108操作黑匣子增加托盘条码
                CCarryConvert.WriteDarkCasket("设备指令管理", "手工报告完成", "表箱条码：" + dv[0]["F_TxtParam"].ToString(), sss);

                AssociateComplete(Convert.ToInt32(dv[0]["F_DeviceIndex"]), Convert.ToInt32(dv[0]["F_MonitorIndex"]), Convert.ToInt32(dv[0]["F_Status"]));

                this.dgvMonitor.DataSource = DbHelperSQL.Query("select * from V_Monitor_Task where " + _monstatus + " order by 设备指令索引 asc ").Tables[0].DefaultView;
            }
        }

        public void AssociateComplete(int deviceIdx, int mindex, int status)
        {
            int ClearZero = 0;
            if (status >= 1)
            {
                ClearZero = 1;
            }
            else
            {
                ClearZero = CGeneralFunction.TASKFINISH;
            }
            int DeviceIdx = deviceIdx;
            int devKind;
            DataView dv = DbHelperSQL.Query("select F_MonitorIndex,F_DeviceIndex,F_DeviceCommandIndex,F_NumParam4 from T_Monitor_Task where F_MonitorIndex=" + mindex).Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                //检查关联命令一起报告完成
                //如果mindex是主动任务（f_associatemonitor有数据），先报告完成被动的任务；如果mindex是被动任务，先报告完成自己，再报告完成主动任务；
                DataView dv1 = DbHelperSQL.Query("select F_DeviceIndex,F_Associate from T_Monitor_Task where F_Associate IS NOT NULL and F_MonitorIndex=" + mindex).Tables[0].DefaultView;
                if (dv1.Count > 0)
                {
                    DataView dv2 = DbHelperSQL.Query("select F_DeviceIndex,F_MonitorIndex from T_Monitor_Task where F_MonitorIndex=" + Convert.ToInt32(dv1[0]["F_Associate"])).Tables[0].DefaultView;
                    if (dv2.Count > 0)//有关联命令，先报告完成关联命令
                    {
                        DeviceIdx = Convert.ToInt32(dv2[0]["F_DeviceIndex"]);
                        devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);

                        gs.ActionComplete(DeviceIdx, Convert.ToInt32(dv2[0]["F_MonitorIndex"]), ClearZero);
                    }
                    //再报告完成自己
                    DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
                    devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);
                    gs.ActionComplete(DeviceIdx, mindex, ClearZero);
                }
                else
                {
                    //自己是否被关联,先报告完成自己，再报告完成主任务
                    DataView dv3 = DbHelperSQL.Query("select F_DeviceIndex,F_MonitorIndex from T_Monitor_Task where F_Associate ='" + mindex + "'").Tables[0].DefaultView;
                    if (dv3.Count > 0)
                    {   //先报告完成自己
                        DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
                        devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);

                        gs.ActionComplete(DeviceIdx, mindex, ClearZero);
                        //再报告完成主任务
                        DeviceIdx = Convert.ToInt32(dv3[0]["F_DeviceIndex"]);
                        devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);
                        gs.ActionComplete(DeviceIdx, Convert.ToInt32(dv3[0]["F_MonitorIndex"]), ClearZero);
                    }
                    else
                    {
                        //无关联任务，只报告完成自己
                        DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
                        devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);
                        //20091107长输送机链需要给最后一个报告完成的清零
                        if ((devKind == 2) && (Convert.ToInt32(dv[0]["F_NumParam4"]) > 0) && (dv[0]["F_DeviceCommandIndex"].ToString() == "6"))
                        {
                            DeviceIdx = Convert.ToInt32(dv[0]["F_NumParam4"]);
                        }
                        gs.ActionComplete(DeviceIdx, mindex, ClearZero);
                    }
                }
            }
        }

        /// <summary>
        /// 指令重发
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TSMRestore_Click(object sender, EventArgs e)
        {
            char[] cc = new char[1] { '：' };
            string[] split = TSMonitor.Text.Split(cc);
            if (split[1] == "") return;
            ISendDeviceOrder sdo;
            int DeviceIdx;
            int devKind;
            int mindex = Convert.ToInt32(split[1]);
            int fid = ccf.GetManageTaskIndexfromMonitor(mindex);
            int mankind = ccf.GetManageTaskKindIndexFromMonitor(mindex);

            //20100108改为select *
            DataView dv = DbHelperSQL.Query("select * from T_Monitor_Task where F_MonitorIndex=" + mindex).Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                //20100108中间指令被复位时给与提示和警告
                DataView dv0 = DbHelperSQL.Query("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 = BaseDeviceService.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操作黑匣子增加托盘条码
                CCarryConvert.WriteDarkCasket("设备指令管理", "手工复位", "表箱条码:" + dv[0]["F_TxtParam"].ToString(), sss);
                //检查关联命令一起复位
                //如果mindex是主动任务（f_associatemonitor有数据），先复位被动的任务；如果mindex是被动任务，先复位自己，再复位主动任务；
                DataView dv1 = DbHelperSQL.Query("select F_DeviceIndex,F_Associate from T_Monitor_Task where F_Associate IS NOT NULL and F_MonitorIndex=" + mindex).Tables[0].DefaultView;
                if (dv1.Count > 0)
                {
                    DataView dv2 = DbHelperSQL.Query("select F_DeviceIndex,F_MonitorIndex from T_Monitor_Task where F_MonitorIndex=" + Convert.ToInt32(dv1[0]["F_Associate"])).Tables[0].DefaultView;
                    if (dv2.Count > 0)//有关联命令，先复位关联命令
                    {
                        DeviceIdx = Convert.ToInt32(dv2[0]["F_DeviceIndex"]);
                        devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);
                        if ((devKind == 2) || (devKind == 4))
                        {//输送机、RGV清零
                            sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                            sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0);
                        }
                        if ((devKind == 1)) //堆垛机
                        {
                            //只有取货任务才能重发,已经取完货的任务或放货任务不能重发
                            DataView restart = DbHelperSQL.Query("select * from t_monitor_task,t_manage_task where t_manage_task.fid=t_monitor_task.F_ManageTaskIndex and t_monitor_task.F_MonitorIndex=" + mindex).Tables[0].DefaultView;
                            //首先取消已经下发的任务
                            //其次判断是出库还是入库
                            //出库直接取,入库需要一个允许

                            MessageBox.Show("Agv不允许重发任务");
                            //sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                            //sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0, 0, 0, 0, 0, 0);
                        }

                        DbHelperSQL.ExecuteSql("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv2[0]["F_DeviceIndex"]));
                        DbHelperSQL.ExecuteSql("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + Convert.ToInt32(dv2[0]["F_MonitorIndex"]));
                    }
                    //再复位自己
                    DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
                    devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);
                    if ((devKind == 2) || (devKind == 4))
                    {//输送机、RGV清零
                        sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                        sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0);
                    }
                    if ((devKind == 1)) //堆垛机
                    {
                        MessageBox.Show("Agv不允许重发任务");

                        //sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                        //sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0, 0, 0, 0, 0, 0);
                    }
                    DbHelperSQL.ExecuteSql("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv[0]["F_DeviceIndex"]));
                    DbHelperSQL.ExecuteSql("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + Convert.ToInt32(dv[0]["F_MonitorIndex"]));
                }
                else
                { //自己是否被关联,先复位自己，再复位主任务
                    DataView dv3 = DbHelperSQL.Query("select F_DeviceIndex,F_MonitorIndex from T_Monitor_Task where F_Associate ='" + mindex + "'").Tables[0].DefaultView;
                    if (dv3.Count > 0)
                    {   //先复位自己
                        DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
                        devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);
                        if ((devKind == 2) || (devKind == 4))
                        {//输送机、RGV清零
                            sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                            sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0);
                        }
                        if (devKind == 1) //堆垛机
                        {
                            MessageBox.Show("Agv不允许重发任务");
                            //sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                            //sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0, 0, 0, 0, 0, 0);
                        }
                        DbHelperSQL.ExecuteSql("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv[0]["F_DeviceIndex"]));
                        DbHelperSQL.ExecuteSql("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + mindex);
                        //再复位主任务
                        DeviceIdx = Convert.ToInt32(dv3[0]["F_DeviceIndex"]);
                        devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);
                        if ((devKind == 2) || (devKind == 4))
                        {//输送机、RGV清零
                            sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                            sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0);
                        }
                        if (devKind == 1) //堆垛机
                        {
                            MessageBox.Show("Agv不允许重发任务");
                            //sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                            //sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0, 0, 0, 0, 0, 0);
                        }
                        DbHelperSQL.ExecuteSql("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv3[0]["F_DeviceIndex"]));
                        DbHelperSQL.ExecuteSql("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + Convert.ToInt32(dv3[0]["F_MonitorIndex"]));
                    }
                    else
                    {
                        //无关联任务，只复位自己
                        DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
                        devKind = BaseDeviceService.GetDeviceKindIdx(DeviceIdx);
                        if ((devKind == 2) || (devKind == 4))
                        {//输送机、RGV清零
                            sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                            sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0);
                        }
                        if ((devKind == 1)) //堆垛机
                        {
                            MessageBox.Show("Agv不允许重发任务");
                            //sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
                            //sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0, 0, 0, 0, 0, 0);
                        }
                        DbHelperSQL.ExecuteSql("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv[0]["F_DeviceIndex"]));
                        DbHelperSQL.ExecuteSql("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + mindex);
                    }
                }
                //给管理FERRORCODE清空
                if (mankind == 1)
                {
                }
                DbHelperSQL.ExecuteSql("UPDATE T_Manage_Task  SET  FERRORCODE =''  WHERE FID=" + fid + " and F_ManageTaskKindIndex=" + mankind + "");
            }

            this.dgvMonitor.DataSource = DbHelperSQL.Query("select * from V_Monitor_Task where " + _monstatus + " order by 设备指令索引 asc ").Tables[0].DefaultView;
        }

        /// <summary>
        /// 指令删除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TSMmonitorDel_Click(object sender, EventArgs e)
        {
            char[] cc = new char[1] { '：' };
            string[] split = TSMonitor.Text.Split(cc);
            if (split[1] == "") return;

            DataView dv = DbHelperSQL.Query("SELECT * FROM T_Monitor_Task Where F_MonitorIndex=" +
                Convert.ToInt32(split[1])).Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                //20100108中间指令被报告完成时给与提示和警告

                DataView dv0 = DbHelperSQL.Query("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();

                
                {
                    CCarryConvert.WriteDarkCasket("设备指令管理", "手工删除设备指令", "表箱条码：" + dv[0]["F_TxtParam"].ToString(), sss);
                    gs.ActionComplete(Convert.ToInt32(dv[0]["F_DeviceIndex"]), Convert.ToInt32(dv[0]["F_MonitorIndex"]), CGeneralFunction.TASKDELETE);//20100905
                }

                this.dgvMonitor.DataSource = DbHelperSQL.Query("select * from V_Monitor_Task where " + _monstatus + " order by 设备指令索引 asc ").Tables[0].DefaultView;
            }
        }

        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;
                    }
                }
            }
        }

        /// <summary>
        /// 菜单打开
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmMonitor_Opening(object sender, CancelEventArgs e)
        {
            if (this.dgvMonitor.CurrentRow == null)
            {
                TSMonitor.Visible = false;
                TSMManager.Visible = false;
                TSMmonitorOK.Visible = false;
                TSMRestore.Visible = false;
                TSMmonitorDel.Visible = false;
                toolStripSeparator2.Visible = false;
                return;
            }
            if (Convert.ToInt32(this.dgvMonitor.CurrentRow.Cells[0].Value) > 0)
            {
                TSMonitor.Visible = true;
                TSMManager.Visible = true;
                //TSMSimulateRun.Visible = true;
                TSMmonitorOK.Visible = true;
                TSMmonitorDel.Visible = true;
                TSMRestore.Visible = true;
                toolStripSeparator2.Visible = true;

                TSMManager.Text = "任务类型：" + this.dgvMonitor.CurrentRow.Cells[1].Value.ToString() +
                    "；调度任务索引：" + this.dgvMonitor.CurrentRow.Cells[0].Value.ToString();
                TSMonitor.Text = "设备指令索引：" + this.dgvMonitor.CurrentRow.Cells[2].Value.ToString();
            }
        }
    }
}