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 Microsoft.VisualBasic;
using System.ServiceModel;
namespace wcfControlMonitorClient
{
    /// <summary>
    /// Creator:Richard.liu
    /// 模仿管理下达自动任务
    /// </summary>
    public partial class FrmAutoCommand : Form
    {
        
        DBOperator dbo = CStaticClass.dbo;
       
        int AutoManageIdx = 0;
        #region ====变量定义

        CommonClassLib.UCellPanel cellPanel = null;

        #endregion
        private static FrmAutoCommand _formInstance;

        public static FrmAutoCommand FormInstance
        {
            get 
            {
                if (_formInstance == null)
                {
                    _formInstance = new FrmAutoCommand();
                }
                return _formInstance;
            }
            set { _formInstance = value; }
        }
        public FrmAutoCommand()
        {
            dbo.Open();
            InitializeComponent();
            _formInstance = this;
            ////特殊命令:堆垛机取坐标001,送坐标002;条码比对003;称重回传004;
            ////搬运木块码盘005(一个主搬运木块任务,拆分成多个单一搬运任务)
            //this.cbKind.Items.Add("");
            //this.cbKind.Items.Add("条码比对");
            //this.cbKind.Items.Add("称重回传");
            ////this.cbKind.Items.Add("机器人码盘");
            //this.cbKind.Text="条码比对";
            ////cbtasktype
            DataSet ds = dbo.ExceSQL("select * from T_ITEMTASKTYPE where FCODE !='-'");
            if (ds.Tables[0].DefaultView.Count > 0)
            {
                cbtasktype.ValueMember = "FCODE";
                cbtasktype.DisplayMember = "FNAME";
                cbtasktype.DataSource = ds.Tables[0].DefaultView;

            }
            
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("您确认要增加自动任务吗,若下达任务时请人工确认好里外货物状态以及其余充电任务或换层任务的注意事项,并确认任务是否可行", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) !=DialogResult.OK)
            {
                return;
            }
            //if (tbFPALLETBARCODE.Text.Trim().Length <6)
            //{
            //    MessageBox.Show("条码不够6位字符!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                
            //    return;
            //}
           
            if ((this.cbtasktype.Text.Trim().Length == 0) || (this.cbstartposition.Text.Trim().Length == 0) || (this.cbendposition.Text.Trim().Length == 0))
            {
                MessageBox.Show("搬运任务类型、起点位置、终点位置都不允许保持空值!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if ((tbstartsite.Enabled == true) && (tbstartsite.Text.Trim().Length == 0))
            {
                MessageBox.Show("起点位置是巷道,所以必须指定货架位置!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if ((tbendsite.Enabled == true) && (tbendsite.Text.Trim().Length == 0))
            {
                MessageBox.Show("终点位置是巷道,所以必须指定货架位置!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if ((cbKind.Text.Trim().Length > 0) &&(txtparm.Text.Trim().Length==0))
            {
                MessageBox.Show("特殊命令如果不是空值,必须指定特殊参数!", "误操作提示", MessageBoxButtons.OK,MessageBoxIcon.Warning );
                return;
            }
            if ((cbInWorkBench.Text.Trim().Length > 0) && (cbInWorkBench.Text.Trim().Length == 0))
            {
                MessageBox.Show("是否进工位必须选定!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
           //调用服务
            string errtext=string.Empty;
            string startcell=string.Empty,endcell=string.Empty;
            if (tbstartsite.SelectedValue != null)
            {
                startcell = tbstartsite.SelectedValue.ToString();
            }
            else
            {
                startcell = tbstartsite.Text;
            }
            if (tbendsite.SelectedValue != null)
            {
                endcell = tbendsite.SelectedValue.ToString();
            }
            else
            {
                endcell = tbendsite.Text;
            }
            if (cbtasktype.Text == "移库")//山东
            {

                if (cbstartposition.Text != cbendposition.Text)
                {
                    MessageBox.Show("下达移库任务时库必须相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
            }
            //if (cbtasktype.Text == "换层任务")//晟碟
            //{
            //    if (startcell.Substring(6, 2) == endcell.Substring(6, 2))
            //    {
            //        MessageBox.Show("下达换层任务时层值相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            //        return;
            //    }
            //}

            Model.AutoTask at=new Model.AutoTask(Convert.ToInt32(this.cbtasktype.SelectedValue),tbFPALLETBARCODE.Text,cbstartposition.SelectedValue.ToString(),startcell ,cbendposition.SelectedValue.ToString(),endcell  ,this.tbstartsite.Enabled,this.tbendsite.Enabled,Convert.ToInt32( this.cbInWorkBench.Text));
            CStaticClass.WcfControl.BeginBuildAutoTask(at, new AsyncCallback(BuildAutoTaskCallBack), at);
            {
                //MessageBox.Show("下发成功", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //return;
            }

        }
        private void button2_Click(object sender, EventArgs e)
        {
            string Sql, _kind, _txtparm;
            DataSet ds;
            //dbo.TransBegin();
            try
            {
                
                //插入IO_CONTROLDETAIL
                //特殊命令:堆垛机取坐标001,送坐标002;条码比对003;称重回传004;
                switch (this.cbKind.Text.Trim())
                {
                    case "条码比对":
                        _kind = "003";
                        break;
                    case "称重回传":
                        _kind = "004";
                        break;
                    //case "机器人码盘":
                    //    _kind = "005";
                    //    break;
                    default:
                        _kind = "003";
                        break;
                }
                _txtparm = this.txtparm.Text.Trim();
                if (_kind == "005")
                {

                }
                else
                {
                    int fid=GetIOControlDetailFid(1, AutoManageIdx);
                    Sql = "insert into IO_CONTROLDETAIL(FID,FCONTROLID,F_ManageTaskKindIndex,FKIND,FINDEX,FVALUE) " +
                    "values("+fid+"," + AutoManageIdx + ",1,'" + _kind + "',0,'" + _txtparm + "')";
                    ds = dbo.ExceSQL(Sql);
                }
                //dbo.TransCommit();
            }
            catch (Exception ex)
            {
                //dbo.TransRollback();
                throw ex;
            }
        }
        private void FrmAutoCommand_Load(object sender, EventArgs e)
        {
            cbInWorkBench.SelectedIndex = 2;
               
            if (cellPanel == null)
            {
                cellPanel = new CommonClassLib.UCellPanel(this, tbstartsite, null,tbFPALLETBARCODE, string.Empty);
                cellPanel.TaskType = "100";
                cellPanel.GoodsName = "";
                cellPanel.Dock = DockStyle.Fill;
                cellPanel.AllowWareHouseChanged = false;
                plCell.Controls.Add(cellPanel);

            }
            cellPanel.Visible = true; 
        }
        
        private void cbtasktype_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.tbFPALLETBARCODE.Enabled = true;
            this.tbFPALLETBARCODE.Text = "";
            
            int IOtype =Convert.ToInt32(this.cbtasktype.SelectedValue.ToString());
            DataView dvs = dbo.ExceSQL("SELECT DISTINCT F_StartDevice,F_DeviceName FROM T_Base_Route,T_Base_Device where F_StartDevice = F_DeviceIndex and T_Base_Route.F_RouteKind = " + IOtype).Tables[0].DefaultView ;
            //cbstartposition
            cbstartposition.ValueMember = "F_StartDevice";
            cbstartposition.DisplayMember = "F_DeviceName";
            cbstartposition.DataSource = dvs;
            
            DataView dvs1 = dbo.ExceSQL("SELECT DISTINCT F_EndDevice,F_DeviceName FROM T_Base_Route,T_Base_Device where F_EndDevice = F_DeviceIndex and T_Base_Route.F_RouteKind = " + IOtype).Tables[0].DefaultView;
            //cbendposition
            cbendposition.ValueMember = "F_EndDevice";
            cbendposition.DisplayMember = "F_DeviceName";
            cbendposition.DataSource = dvs1;
            
                
            
        }

        private void cbstartposition_SelectedIndexChanged(object sender, EventArgs e)
        {
            tbstartsite.DataSource = null;
            tbstartsite.Text = "";
            //如果是巷道设备tbstartsite.enable=true
            DataSet ds = dbo.ExceSQL("select FLaneWay from ST_CELL where FLaneWay=" + Convert.ToInt32(cbstartposition.SelectedValue) + "");
            //DataSet ds = dbo.ExceSQL("select F_DeviceIndex,F_DeviceKindIndex from T_Base_Device where F_DeviceKindIndex=10 and  F_DeviceIndex=" + Convert.ToInt32(cbstartposition.SelectedValue) + "");

            if (ds.Tables[0].DefaultView.Count > 0)
            {

                tbstartsite.Enabled = true;

                plCell.Enabled = true;

                if (cellPanel == null)
                {
                    cellPanel = new CommonClassLib.UCellPanel(this, tbstartsite, null, null, string.Empty);
                    cellPanel.TaskType = "100";
                    cellPanel.GoodsName = "";
                    cellPanel.Dock = DockStyle.Fill;
                    cellPanel.AllowWareHouseChanged = false;
                    plCell.Controls.Add(cellPanel);

                }
                cellPanel.ControlCellCode = tbstartsite;
                cellPanel.Laneway = this.cbstartposition.SelectedValue.ToString();
                cellPanel.WareHouse = GetWarehouse(Convert.ToInt32(this.cbstartposition.SelectedValue));
                cellPanel.Visible = plCell.Visible;
            }
            else
            {
                tbstartsite.Enabled = true;
                DataView dv1 = dbo.ExceSQL("SELECT T_Base_Device.F_DeviceName, T_Base_Device.F_DeviceIndex FROM T_Base_Lane_Gate,T_Base_Device WHERE T_Base_Lane_Gate.F_LaneGateDeviceIndex = T_Base_Device.F_DeviceIndex and F_DeviceKindIndex=9 and F_LaneIndex=" + cbstartposition.SelectedValue + "").Tables[0].DefaultView;
                if (dv1.Count > 0)
                {
                    tbstartsite.DisplayMember = "F_DeviceName";
                    tbstartsite.ValueMember = "F_DeviceIndex";
                    tbstartsite.DataSource = dv1;
                }
                else
                {

                    plCell.Enabled = false;
                    tbstartsite.Enabled = false;
                }
            }
            DataView dv = dbo.ExceSQL("select F_DeviceIndex,F_DeviceKindIndex from T_Base_Device where F_DeviceKindIndex=11 and  F_DeviceIndex=" + Convert.ToInt32(cbstartposition.SelectedValue) + "").Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                tbstartsite.Enabled = true;
                dv = dbo.ExceSQL("SELECT T_Base_Device.F_DeviceName, T_Base_Device.F_DeviceIndex FROM T_Base_AGV_Gate,T_Base_Device WHERE T_Base_AGV_Gate.F_AGVGateDeviceIndex = T_Base_Device.F_DeviceIndex and F_ChannelsIndex=" + cbstartposition.SelectedValue + "").Tables[0].DefaultView;
                tbstartsite.DisplayMember = "F_DeviceName";
                tbstartsite.ValueMember = "F_DeviceIndex";
                tbstartsite.DataSource = dv;
            }


            //labelCount.Visible = false;
            //textBoxCount.Visible = false;

            //int type = Convert.ToInt32(this.cbtasktype.SelectedValue);

            int startdevice = Convert.ToInt32(this.cbstartposition.SelectedValue);
            int enddevice = Convert.ToInt32(this.cbendposition.SelectedValue);
            //if ((startdevice >= 18001 && startdevice <= 18004) || (enddevice >= 18001 && enddevice <= 18004))
            //{
            //    panelType.Visible = true;
            //}
            //else
            //{
            //    panelType.Visible = false;
            //}
            //comboBoxType.SelectedIndex = -1;
            //comboBoxType.Text = "";

        }

        private void cbendposition_SelectedIndexChanged(object sender, EventArgs e)
        {
            tbendsite.DataSource = null;
            tbendsite.Text = "";
            //如果是巷道设备tbstartsite.enable=true
            DataSet ds = dbo.ExceSQL("select FLaneWay from ST_CELL where FLaneWay=" + Convert.ToInt32(cbendposition.SelectedValue) + "");

            //DataSet ds = dbo.ExceSQL("select F_DeviceIndex,F_DeviceKindIndex from T_Base_Device where F_DeviceKindIndex=10 and  F_DeviceIndex= " +Convert.ToInt32( cbendposition.SelectedValue) + "");
            if (ds.Tables[0].DefaultView.Count > 0)
            {
                tbendsite.Enabled = true;
                //开启货位表
                plCell.Enabled = true;

                if (cellPanel == null)
                {
                    cellPanel = new CommonClassLib.UCellPanel(this, tbendsite, null, null, string.Empty);
                    cellPanel.TaskType = "100";
                    cellPanel.GoodsName = "";
                    cellPanel.Dock = DockStyle.Fill;
                    cellPanel.AllowWareHouseChanged = false;
                    plCell.Controls.Add(cellPanel);

                }
                cellPanel.ControlCellCode = tbendsite;
                cellPanel.Laneway = this.cbendposition.SelectedValue.ToString();
                cellPanel.WareHouse = GetWarehouse(Convert.ToInt32(this.cbendposition.SelectedValue));
                cellPanel.Visible = plCell.Visible;
            }
            else
            {
                tbendsite.Enabled = true;
                DataView dv1 = dbo.ExceSQL("SELECT T_Base_Device.F_DeviceName, T_Base_Device.F_DeviceIndex FROM T_Base_Lane_Gate,T_Base_Device WHERE T_Base_Lane_Gate.F_LaneGateDeviceIndex = T_Base_Device.F_DeviceIndex  and F_DeviceKindIndex=9 and F_LaneIndex=" + cbendposition.SelectedValue + "").Tables[0].DefaultView;
                if (dv1.Count > 0)
                {
                    tbendsite.DisplayMember = "F_DeviceName";
                    tbendsite.ValueMember = "F_DeviceIndex";
                    tbendsite.DataSource = dv1;
                }
                else
                {

                    plCell.Enabled = false;
                    tbendsite.Enabled = false;
                }
            }
            DataView dv = dbo.ExceSQL("select F_DeviceIndex,F_DeviceKindIndex from T_Base_Device where F_DeviceKindIndex=11 and  F_DeviceIndex=" + Convert.ToInt32(cbendposition.SelectedValue) + "").Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                tbendsite.Enabled = true;
                dv = dbo.ExceSQL("SELECT T_Base_Device.F_DeviceName, T_Base_Device.F_DeviceIndex FROM T_Base_AGV_Gate,T_Base_Device WHERE T_Base_AGV_Gate.F_AGVGateDeviceIndex = T_Base_Device.F_DeviceIndex and F_ChannelsIndex=" + cbendposition.SelectedValue + "").Tables[0].DefaultView;
                tbendsite.DisplayMember = "F_DeviceName";
                tbendsite.ValueMember = "F_DeviceIndex";
                tbendsite.DataSource = dv;
            }

            int startdevice = Convert.ToInt32(this.cbstartposition.SelectedValue);
            int enddevice = Convert.ToInt32(this.cbendposition.SelectedValue);
            //if ((startdevice >= 18001 && startdevice <= 18004) || (enddevice >= 18001 && enddevice <= 18004))
            //{
            //    panelType.Visible = true;
            //}
            //else
            //{
            //    panelType.Visible = false;
            //}

        }
        //private void cbstartposition_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    tbstartsite.DataSource = null;
        //    tbstartsite.Text = "";
        //    //如果是巷道设备tbstartsite.enable=true
        //    DataSet ds = dbo.ExceSQL("select F_DeviceIndex,F_DeviceKindIndex from T_Base_Device where F_DeviceKindIndex=10 and  F_DeviceIndex=" +Convert.ToInt32( cbstartposition.SelectedValue )+ "");
        //    if (ds.Tables[0].DefaultView.Count > 0 || cbtasktype.Text == "换层任务")
        //    {

        //        tbstartsite.Enabled = true;

        //        plCell.Enabled = true;

        //        if (cellPanel == null)
        //        {
        //            cellPanel = new CommonClassLib.UCellPanel(this, tbstartsite, null,null, string.Empty);
        //            cellPanel.TaskType = "100";
        //            cellPanel.GoodsName = "";
        //            cellPanel.Dock = DockStyle.Fill;
        //            cellPanel.AllowWareHouseChanged = false ;
        //            plCell.Controls.Add(cellPanel);

        //        }
        //        cellPanel.ControlCellCode = tbstartsite;
        //        cellPanel.Laneway = 18001.ToString();
        //        cellPanel.WareHouse = GetWarehouse(Convert.ToInt32(18001));
        //        cellPanel.Visible = plCell.Visible;
        //    }
        //    else
        //    {
        //        plCell.Enabled = false;
        //        tbstartsite.Enabled = false;
        //    }
        //    DataView dv = dbo.ExceSQL("select F_DeviceIndex,F_DeviceKindIndex from T_Base_Device where F_DeviceKindIndex=11 and  F_DeviceIndex=" + Convert.ToInt32(cbstartposition.SelectedValue) + "").Tables[0].DefaultView;
        //    if (dv.Count > 0)
        //    {
        //        tbstartsite.Enabled = true;
        //        dv = dbo.ExceSQL("SELECT T_Base_Device.F_DeviceName, T_Base_Device.F_DeviceIndex FROM T_Base_AGV_Gate,T_Base_Device WHERE T_Base_AGV_Gate.F_AGVGateDeviceIndex = T_Base_Device.F_DeviceIndex and F_ChannelsIndex=" + cbstartposition.SelectedValue + "").Tables[0].DefaultView;
        //        tbstartsite.DisplayMember = "F_DeviceName";
        //        tbstartsite.ValueMember = "F_DeviceIndex";
        //        tbstartsite.DataSource = dv;
        //    }
        //}

        //private void cbendposition_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    tbendsite.DataSource = null;
        //    tbendsite.Text = "";
        //    //如果是巷道设备tbstartsite.enable=true
        //    DataSet ds = dbo.ExceSQL("select F_DeviceIndex,F_DeviceKindIndex from T_Base_Device where F_DeviceKindIndex=10 and  F_DeviceIndex= " +Convert.ToInt32( cbendposition.SelectedValue) + "");
        //    if (ds.Tables[0].DefaultView.Count > 0 || cbtasktype.Text == "换层任务")
        //    {
        //        tbendsite.Enabled = true;

        //        plCell.Enabled = true;

        //        if (cellPanel == null)
        //        {
        //            cellPanel = new CommonClassLib.UCellPanel(this, tbendsite, null, null,string.Empty);
        //            cellPanel.TaskType = "100";
        //            cellPanel.GoodsName = "";
        //            cellPanel.Dock = DockStyle.Fill;
        //            cellPanel.AllowWareHouseChanged = false;
        //            plCell.Controls.Add(cellPanel);

        //        }
        //        cellPanel.ControlCellCode = tbendsite;
        //        cellPanel.Laneway = 18001.ToString();
        //        cellPanel.WareHouse = GetWarehouse(Convert.ToInt32(18001));
        //        cellPanel.Visible = plCell.Visible;
        //    }
        //    else
        //    {
        //        plCell.Enabled = false;
        //        tbendsite.Enabled = false; 
        //    }
        //    DataView dv = dbo.ExceSQL("select F_DeviceIndex,F_DeviceKindIndex from T_Base_Device where F_DeviceKindIndex=11 and  F_DeviceIndex=" + Convert.ToInt32(cbendposition.SelectedValue) + "").Tables[0].DefaultView;
        //    if (dv.Count > 0)
        //    {
        //        tbendsite.Enabled = true;
        //        dv = dbo.ExceSQL("SELECT T_Base_Device.F_DeviceName, T_Base_Device.F_DeviceIndex FROM T_Base_AGV_Gate,T_Base_Device WHERE T_Base_AGV_Gate.F_AGVGateDeviceIndex = T_Base_Device.F_DeviceIndex and F_ChannelsIndex=" + cbendposition.SelectedValue + "").Tables[0].DefaultView;
        //        tbendsite.DisplayMember = "F_DeviceName";
        //        tbendsite.ValueMember = "F_DeviceIndex";
        //        tbendsite.DataSource = dv;
        //    }
        //}

        int GetIOControlDetailFid(int ManageTaskKindIndex,int FCONTROLID)
        {

            DataSet ds = dbo.ExceSQL("SELECT MAX(FID) AS MaxFID FROM IO_CONTROLDETAIL GROUP BY F_ManageTaskKindIndex, FCONTROLID HAVING (F_ManageTaskKindIndex = " + ManageTaskKindIndex + ") AND (FCONTROLID = " + FCONTROLID + ")");
            if (ds.Tables[0].DefaultView.Count > 0)
            {
                return (Convert.ToInt32(ds.Tables[0].DefaultView[0]["MaxFID"]) + 1);
            }
            else
            {
                return 1;
            }

        }

        void BuildAutoTaskCallBack(IAsyncResult ar)
        {
            string errtext=string.Empty;
            if (CStaticClass.WcfControl.EndBuildAutoTask(out errtext, ar) == false)
            {
                MessageBox.Show(errtext, "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void FrmAutoCommand_FormClosing(object sender, FormClosingEventArgs e)
        {
            _formInstance = null;
        }
        string GetWarehouse(int laneway)
        {
            DataView dv = dbo.ExceSQL(string.Format("SELECT DISTINCT FWAREHOUSE FROM ST_CELL WHERE (FLaneWay = {0})",laneway)).Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                return dv[0][0].ToString();
            }
            else
            {
                return "01";
            }
        }
        StringBuilder sql = new StringBuilder();
        public bool IFExitTempManageIndex(int fid)
        {
            //20100108
            DataView dv = new DataView();
            try
            {
                //20101124
                sql.Remove(0, sql.Length);
                sql.Append("SELECT fid FROM T_Manage_Task WHERE (F_ManageTaskKindIndex=2 and fid = ").Append(fid).Append(")");
                dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception ex)
            {//20100108
                throw ex;
            }
            finally
            {//20100108
                dv.Dispose();
            }
        }
        /// <summary>
        /// 记录调度生成的调度任务的索引的最大值
        /// </summary>
        /// <param name="fid">调度生成的调度任务的索引</param>
        public void RecordMaxTempManageTaskFID(int fid)
        {//20100108
            DataView dv = new DataView();
            try
            {//20100108
                dv = dbo.ExceSQL("select F_ManageTaskIndex from T_Base_Manage_Task_Index_Temp_Task").Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    //if (fid == 19998)
                    //{
                    //    dbo.ExceSQL("UPDATE T_Base_Manage_Task_Index_Temp_Task SET F_ManageTaskIndex =10001");
                    //    return;
                    //}
                    //if (fid > Convert.ToInt32(dv[0]["F_ManageTaskIndex"]))
                    //{
                    //20101124
                    sql.Remove(0, sql.Length);
                    sql.Append("UPDATE T_Base_Manage_Task_Index_Temp_Task SET F_ManageTaskIndex =").Append(fid);
                    dbo.ExceSQL(sql.ToString());
                    return;
                    //}
                }
                else
                {
                    //20101124
                    sql.Remove(0, sql.Length);
                    sql.Append("INSERT INTO T_Base_Manage_Task_Index_Temp_Task (F_ManageTaskIndex)VALUES (").Append(fid).Append(")");
                    dbo.ExceSQL(sql.ToString());
                    return;
                }
            }
            catch (Exception ex)
            {//20100108
               // _DisassembleTaskError = "获得记录调度任务最大任务索引失败," + ex.Message;
                throw ex;
                //return 0;
            }
            finally
            {//20100108
                dv.Dispose();
            }
        } 
       
        public int GetTempManageIdx()
        {
            //20100108
            DataSet ds = new DataSet();
            try
            {
                int maxIdx = 10001;

                ds = dbo.ExceSQL("SELECT F_ManageTaskIndex FROM T_Base_Manage_Task_Index_Temp_Task");
                if (ds.Tables[0].DefaultView.Count > 0)
                {
                    if ((Convert.ToInt32(ds.Tables[0].DefaultView[0]["F_ManageTaskIndex"]) + 1) >= 19998)
                    {
                        maxIdx = 10001;
                    }
                    else
                    {
                        maxIdx = (Convert.ToInt32(ds.Tables[0].DefaultView[0]["F_ManageTaskIndex"]) + 1);
                    }
                }
                else
                {
                    maxIdx = 10001;
                }
                //判断临时调度任务表是否有重复值
                if (IFExitTempManageIndex(maxIdx) == true)
                {
                    RecordMaxTempManageTaskFID(maxIdx);
                    maxIdx = GetTempManageIdx();
                    return maxIdx;
                }

                RecordMaxTempManageTaskFID(maxIdx);
                return maxIdx;
            }
            catch (Exception ex)
            {//20100108
                
                throw ex;
                //return 0;
            }
            finally
            {//20100108
                ds.Dispose();
            }

        }
        private void button3_Click(object sender, EventArgs e)
        {
            if(comboBox_Z.SelectedIndex<0||comboBox_Y.SelectedIndex <0)
            {
                MessageBox.Show("请选择排或层!");
                return;
            }
            int Z=comboBox_Z.SelectedIndex+9;
            int Y = comboBox_Y.SelectedIndex + 1;
            DataView dv = new DataView();
            try
            {

                int enddevice;
                int startdevice = 18005;
                string sql = string.Format("select * from  ST_CELL where F_Z={0} and F_Y={1} and FCELLSTATUS=1 and  FRUNSTATUS=0", Z, Y);
                   dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
                   if (dv.Count > 0)
                   {
                       int count = dv.Count;
                       for (int i = 0; i < count; i++)
                       {
                           string CellCode = Convert.ToString(dv[i]["FCELLCODE"]);
                           string barcodes = Convert.ToString(dv[i]["FPALLETBARCODE"]);//托盘条码

                            string dtimes = DateTime.Now.ToString("u");//20101028
                            dtimes = dtimes.Substring(0, dtimes.Length - 1);//20101028
                         
                             int Laneindex =18005;
                          
                                enddevice = 12035;
                                int AutoManageIdx =  GetTempManageIdx();//调度任务索引
                                string stack = "0";//堆垛机FSTACK

                              

                               
                                int controltype = 2;//入库

                                string sqlstr = string.Format("insert into T_Manage_Task(FID,FPALLETBARCODE,FCONTROLTASKTYPE,F_ManageTaskKindIndex,FSTARTWAREHOUSE,FSTARTDEVICE,FSTARTCELL,FENDWAREHOUSE,FENDDEVICE,FENDCELL,FLANEWAY,FSTACK,FUseAwayFork,FBEGTIME,FStartCol,FStartLayer,FLOGIC_AREA) values ({0},'{1}',{2},{3},{4},{5},'{6}',{7},{8},'{9}',{10},{11},'{12}','{13}',{14},{15},{16})", AutoManageIdx, barcodes, controltype, 2, 1, startdevice, CellCode, 1, enddevice, "-", Laneindex, stack, "-", dtimes, 0, 0, enddevice);

                                dbo.ExceSQL(sqlstr);

                                sqlstr = string.Format("update ST_CELL set FRunStatus = 1 where FLaneWay= {0} and fcellcode = '{1}'", Laneindex, CellCode);
                                dbo.ExceSQL(sqlstr);
                             //   CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "自动生成入库任务", startdevice.ToString(), AutoManageIdx.ToString());
                             

                       }

                       string mes = string.Format("成功生成{0}条出库任务", count);
                       MessageBox.Show(mes);


                   }
                   else
                   {
                       MessageBox.Show("无满足条件的货位!");
                   }
                
            }
            catch (Exception ex)
            {
                throw;
            }

            
        }
    }
}