using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.EnterpriseServices;
using System.Text;
using System.Windows.Forms;
using DBFactory;

namespace wcfControlMonitorClient
{
    /// <summary>
    /// 20230815richard.liuWCS和电气PLC内部控制正反向控制输送机
    /// </summary>
    public partial class FrmRGVAreaSet : Form
    {
        
        
        DBOperator dbo = CStaticClass.dbo;
        Model.MDevice mdev;
        StringBuilder sql=new StringBuilder();
        private static FrmRGVAreaSet _formInstance;

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

        }

       
        private void FrmRGVAreaSet_FormClosing(object sender, FormClosingEventArgs e)
        {
            _formInstance = null;
        }
        
       
        private void FrmRGVAreaSet_Load(object sender, EventArgs e)
        {
            DataView dataView = null;
            dataView = dbo.ExceSQL(string.Format("select max(f_rgvindex),min(f_rgvindex) from T_BASE_RGVINFO  where f_rgvindex<>f_virtualrgv")).Tables[0].DefaultView;
            if (dataView.Count > 0)
            {
                nud1AreaRGV.Maximum = Convert.ToInt32(dataView[0][0]);
                nud1AreaRGV.Minimum = Convert.ToInt32(dataView[0][1]);
                nud3AreaRGV.Maximum = Convert.ToInt32(dataView[0][0]);
                nud3AreaRGV.Minimum = Convert.ToInt32(dataView[0][1]);
                nud5AreaRGV.Maximum = Convert.ToInt32(dataView[0][0]);
                nud5AreaRGV.Minimum = Convert.ToInt32(dataView[0][1]);
                nud2AreaRGVIn.Maximum = Convert.ToInt32(dataView[0][0]);
                nud2AreaRGVIn.Minimum = Convert.ToInt32(dataView[0][1]);
                nud2AreaRGVOut.Maximum = Convert.ToInt32(dataView[0][0]);
                nud2AreaRGVOut.Minimum = Convert.ToInt32(dataView[0][1]);
                nud4AreaRGVIn.Maximum = Convert.ToInt32(dataView[0][0]);
                nud4AreaRGVIn.Minimum = Convert.ToInt32(dataView[0][1]);
                nud4AreaRGVOut.Maximum = Convert.ToInt32(dataView[0][0]);
                nud4AreaRGVOut.Minimum = Convert.ToInt32(dataView[0][1]);
                DataView dv = dbo.ExceSQL(string.Format("select distinct f_input from T_BASE_RGV_GATE  where f_neargetdevice=1")).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    this.nud1AreaRGV.Value=Convert.ToInt32 (dv[0][0]);
                }
                dv = dbo.ExceSQL(string.Format("select distinct f_input,f_output from T_BASE_RGV_GATE  where f_neargetdevice=2")).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    this.nud2AreaRGVIn.Value = Convert.ToInt32(dv[0][0]);
                    this.nud2AreaRGVOut.Value= Convert.ToInt32(dv[0][1]);
                }
                dv = dbo.ExceSQL(string.Format("select distinct f_input from T_BASE_RGV_GATE  where f_neargetdevice=3")).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    this.nud3AreaRGV.Value = Convert.ToInt32(dv[0][0]);
                }
                dv = dbo.ExceSQL(string.Format("select distinct f_input,f_output from T_BASE_RGV_GATE  where f_neargetdevice=4")).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    this.nud4AreaRGVIn.Value = Convert.ToInt32(dv[0][0]);
                    this.nud4AreaRGVOut.Value = Convert.ToInt32(dv[0][1]);
                }
                dv = dbo.ExceSQL(string.Format("select distinct f_input from T_BASE_RGV_GATE  where f_neargetdevice=5")).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    this.nud5AreaRGV.Value = Convert.ToInt32(dv[0][0]);
                }
            }
           
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if(nud2AreaRGVIn.Value==nud2AreaRGVOut.Value)
            {
                if(nud1AreaRGV.Value!=nud3AreaRGV.Value ) 
                {
                    MessageBox.Show("进区2直穿和出区2直穿相同时,区1和区3直穿必须相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            if (nud1AreaRGV.Value == nud3AreaRGV.Value)
            {
                if (nud2AreaRGVIn.Value != nud2AreaRGVOut.Value)
                {
                    MessageBox.Show("区1和区3直穿相同时,进区2直穿和出区2直穿必须相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            if (nud4AreaRGVIn.Value == nud4AreaRGVOut.Value)
            {
                if (nud3AreaRGV.Value != nud5AreaRGV.Value)
                {
                    MessageBox.Show("进区4直穿和出区4直穿相同时,区3和区5直穿必须相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            if (nud3AreaRGV.Value == nud5AreaRGV.Value)
            {
                if (nud4AreaRGVIn.Value != nud4AreaRGVOut.Value)
                {
                    MessageBox.Show("区3和区5直穿相同时,进区4直穿和出区4直穿必须相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            if (!(nud1AreaRGV.Value == nud2AreaRGVOut.Value || nud1AreaRGV.Value == nud2AreaRGVIn.Value))
            {
                MessageBox.Show("进区2直穿和出区2直穿,必须有一个和区1直穿相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (!(nud3AreaRGV.Value == nud2AreaRGVOut.Value || nud3AreaRGV.Value == nud2AreaRGVIn.Value))
            {
                MessageBox.Show("进区2直穿和出区2直穿,必须有一个和区3直穿相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (!(nud3AreaRGV.Value == nud4AreaRGVOut.Value || nud3AreaRGV.Value == nud4AreaRGVIn.Value))
            {
                MessageBox.Show("进区4直穿和出区4直穿,必须有一个和区3直穿相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (!(nud5AreaRGV.Value == nud4AreaRGVOut.Value || nud5AreaRGV.Value == nud4AreaRGVIn.Value))
            {
                MessageBox.Show("进区4直穿和出区4直穿,必须有一个和区5直穿相同!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            DataView  dvgate = dbo.ExceSQL(string.Format("select f_rgvindex from T_BASE_RGVINFO where f_rgvindex={0}",
                Convert.ToInt32(nud1AreaRGV.Value))).Tables[0].DefaultView;
            if (dvgate.Count<= 0)
            {
                MessageBox.Show("区1直穿车号不在有效范围内,请选择正确车号!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            dvgate = dbo.ExceSQL(string.Format("select f_rgvindex from T_BASE_RGVINFO where f_rgvindex={0}",
                Convert.ToInt32(nud2AreaRGVIn.Value))).Tables[0].DefaultView;
            if (dvgate.Count <= 0)
            {
                MessageBox.Show("进区2直穿车号不在有效范围内,请选择正确车号!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            dvgate = dbo.ExceSQL(string.Format("select f_rgvindex from T_BASE_RGVINFO where f_rgvindex={0}",
                Convert.ToInt32(nud2AreaRGVOut.Value))).Tables[0].DefaultView;
            if (dvgate.Count <= 0)
            {
                MessageBox.Show("出区2直穿车号不在有效范围内,请选择正确车号!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            dvgate = dbo.ExceSQL(string.Format("select f_rgvindex from T_BASE_RGVINFO where f_rgvindex={0}",
                Convert.ToInt32(nud3AreaRGV.Value))).Tables[0].DefaultView;
            if (dvgate.Count <= 0)
            {
                MessageBox.Show("区3直穿车号不在有效范围内,请选择正确车号!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            dvgate = dbo.ExceSQL(string.Format("select f_rgvindex from T_BASE_RGVINFO where f_rgvindex={0}",
                Convert.ToInt32(nud5AreaRGV.Value))).Tables[0].DefaultView;
            if (dvgate.Count <= 0)
            {
                MessageBox.Show("区5直穿车号不在有效范围内,请选择正确车号!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            dvgate = dbo.ExceSQL(string.Format("select f_rgvindex from T_BASE_RGVINFO where f_rgvindex={0}",
                Convert.ToInt32(nud4AreaRGVIn.Value))).Tables[0].DefaultView;
            if (dvgate.Count <= 0)
            {
                MessageBox.Show("进区4直穿车号不在有效范围内,请选择正确车号!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            dvgate = dbo.ExceSQL(string.Format("select f_rgvindex from T_BASE_RGVINFO where f_rgvindex={0}",
                Convert.ToInt32(nud4AreaRGVOut.Value))).Tables[0].DefaultView;
            if (dvgate.Count <= 0)
            {
                MessageBox.Show("出区4直穿车号不在有效范围内,请选择正确车号!", "误操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            dbo.ExecuteSql(string.Format("update T_BASE_RGV_GATE t set t.f_input={0},t.f_output={1} where t.f_neargetdevice=1",Convert.ToInt32(nud1AreaRGV.Value), Convert.ToInt32(nud1AreaRGV.Value)));
            dbo.ExecuteSql(string.Format("update T_BASE_RGV_GATE t set t.f_input={0},t.f_output={1} where t.f_neargetdevice=2", Convert.ToInt32(nud2AreaRGVIn.Value), Convert.ToInt32(nud2AreaRGVOut.Value)));
            dbo.ExecuteSql(string.Format("update T_BASE_RGV_GATE t set t.f_input={0},t.f_output={1} where t.f_neargetdevice=3", Convert.ToInt32(nud3AreaRGV.Value), Convert.ToInt32(nud3AreaRGV.Value)));
            dbo.ExecuteSql(string.Format("update T_BASE_RGV_GATE t set t.f_input={0},t.f_output={1} where t.f_neargetdevice=4", Convert.ToInt32(nud4AreaRGVIn.Value), Convert.ToInt32(nud4AreaRGVOut.Value)));
            dbo.ExecuteSql(string.Format("update T_BASE_RGV_GATE t set t.f_input={0},t.f_output={1} where t.f_neargetdevice=5", Convert.ToInt32(nud5AreaRGV.Value), Convert.ToInt32(nud5AreaRGV.Value)));
            MessageBox.Show("直穿RGV工作区域设置成功!", "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Information);
            CommonClassLib.CCarryConvert.WriteDarkCasket("系统设置", "UserID:" + CStaticClass.UserID + "的操作日志", "点击【保存】按钮", "直穿RGV工作区域设置", "");
        }
    }
}