using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic;
using DBFactory;
namespace wcfControlMonitorClient
{
    /// <summary>
    /// Creator:Richard.liu
    /// ϵͳ³õʼ»¯
    /// </summary>
    public partial class FrmSystemInit : Form
    {
        DBFactory.DBOperator dbo = CStaticClass.dbo;
        private static FrmSystemInit _formInstance;

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

        private void FrmSystemInit_Load(object sender, EventArgs e)
        {
            string errtext = string.Empty;
            DataView tableWareHouse = CStaticClass.WcfControl.GetDataView(out errtext, "SELECT distinct F_WarehouseIndex,F_Description FROM T_WAREHOUSE").DefaultView;
            cmbWareHouse.DisplayMember = "F_Description";
            cmbWareHouse.ValueMember = "F_WarehouseIndex";

            cmbWareHouse.DataSource = tableWareHouse;

            DataView laneway = CStaticClass.WcfControl.GetDataView(out errtext, "SELECT distinct F_LaneDeviceIndex,F_StackIndex FROM T_Base_LaneInfo").DefaultView;
            this.cbLaneway.DisplayMember = "F_LaneDeviceIndex";
            cbLaneway.ValueMember = "F_StackIndex";

            cbLaneway.DataSource = laneway;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("ÄúÈ·ÈÏÒªÉú³É»õλÐÅÏ¢Âð£¿", "²Ù×÷Ìáʾ£º", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
            {
                return;
            }
            if (this.cmbWareHouse.SelectedValue == null)
            {
                MessageBox.Show("¿â·¿Ë÷Òý²»ÄÜÊÇ¿ÕÖµ£¡", "Îó²Ù×÷Ìáʾ£º", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cmbWareHouse.Focus();
                return;
            }
            int a = 0;
            if (int.TryParse(this.cbLaneway.SelectedValue.ToString(),out a ) == false)
            {
                MessageBox.Show("ÏïµÀÉ豸Ë÷ÒýÖ»ÄÜÊÇÊý×ÖÀàÐÍ£¡", "Îó²Ù×÷Ìáʾ£º", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                this.cbLaneway.Focus();
                return;
            }
            string sql = string.Empty;
            string warehouse = this.cmbWareHouse.SelectedValue.ToString();
            int laneway =Convert.ToInt32( this.cbLaneway.Text);
            int stackindex =Convert.ToInt32(lblStackIndex.Text);
            int Z =Convert.ToInt32( nudZ.Value);
            int Z1 = Convert.ToInt32(nudZ1.Value);
            int X = Convert.ToInt32(nudX.Value);
            int Y = Convert.ToInt32(nudY.Value);
            string errtext=string.Empty;
            int fid = 0;string cellcode=string.Empty;string cellname=string.Empty;
            for (int z = Z; z <= Z1; z++)
            {
                for (int x = 1; x <= X; x++)
                {
                    for (int y = 1; y <= Y; y++)
                    {
                        cellcode = (z.ToString().Length == 1 ? "0" + z.ToString() : z.ToString())
                            + "-" + (x.ToString().Length == 1 ? "0" + x.ToString() : x.ToString()) + "-" + (y.ToString().Length == 1 ? "0" + y.ToString() : y.ToString());
                        sql = "SELECT FID FROM ST_CELL WHERE (FWAREHOUSE = '"+warehouse+"') AND (FLaneWay = "+laneway +") AND (FCELLCODE = '"+cellcode+"')";
                        if (dbo.ExceSQL(sql).Tables[0].DefaultView.Count<=0)
                        {
                            cellname = z.ToString() + "ÅÅ" + x.ToString() + "ÁÐ" + y.ToString() + "²ã";
                            fid = dbo.GetMaxID("FID", "ST_CELL");
                            sql = "INSERT INTO ST_CELL(FID, FWAREHOUSE, FLaneWay, FCELLCODE, F_Z, F_X, F_Y, " +
                                "FCELLNAME,FCELLSTATUS, FRUNSTATUS, FPALLETBARCODE, FStack)VALUES " +
                                "(" + fid + ",'" + warehouse + "'," + laneway + ",'" + cellcode + "'," + z + "," + x + "," + y + ",'" + cellname +
                                "',0,0,'-'," + stackindex + ")";
                            dbo.ExecuteSql(sql);
                        }
                    }
                }
            }

        }

        private void cbLaneway_SelectedIndexChanged(object sender, EventArgs e)
        {
            lblStackIndex.Text = this.cbLaneway.SelectedValue.ToString();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("ÄúÈ·ÈÏÒªÇå¿Õ»õλÐÅÏ¢Âð£¿", "²Ù×÷Ìáʾ£º", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
            {
                return;
            }
            dbo.ExceSQL("delete from st_cell");
        }

        private void button2_Click(object sender, EventArgs e)
        {

            if (MessageBox.Show("ÄúÈ·ÈÏÒª½¨Á¢ÓëPLCµÄͨѶÁ¬½ÓÂð£¿", "²Ù×÷Ìáʾ£º", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
            {
                return;
            }
            
            CStaticClass.WcfControl.BeginDeviceCommunicationInit("OPCClient", new AsyncCallback(CallbackDeviceCommunicationInit), null);
            OPCClient.CCommonOPCClient.ConnectCount = new Dictionary<string, int>();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Button bt = (Button)sender;
            if (MessageBox.Show("ÄúÈ·ÈÏÒª½¨Á¢ÓëAGVµÄͨѶÁ¬½ÓÂð£¿", "²Ù×÷Ìáʾ£º", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
            {
                return;
            }
            DataView dv = dbo.ExceSQL(string.Format("SELECT F_RemoteIP, F_RemotePort FROM T_Base_Device WHERE (F_DeviceIndex = {0})", Convert.ToInt32(bt.Tag))).Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                string errtext = string.Empty;
                CStaticClass.WcfControl.BeginDeviceCommunicationInit("SocketsTCPIP:" + dv[0]["F_RemoteIP"].ToString() + "," + dv[0]["F_RemotePort"].ToString(), CallbackDeviceCommunicationInit, null);
            }
            
            
        }

        private void FrmSystemInit_FormClosing(object sender, FormClosingEventArgs e)
        {
            _formInstance = null;
        }
        void CallbackDeviceCommunicationInit(IAsyncResult ar)
        { 
            string errtext = string.Empty;
            if (CStaticClass.WcfControl.EndDeviceCommunicationInit(out errtext, ar) == false)
            {
                MessageBox.Show(errtext, "²Ù×÷Ìáʾ£º", MessageBoxButtons.OK, MessageBoxIcon.Error);
                
            }
        }

        
        

       
    }
}