using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using UAS_LabelMachine.Entity;
using UAS_LabelMachine.PublicMethod;

namespace UAS_LabelMachine
{
    public partial class ExportExcel : Form
    {
        ExcelHandler eh = new ExcelHandler();

        DataHelper dh = SystemInf.dh;
        string inoutno;

        public ExportExcel(string pi_inoutno)
        {
            InitializeComponent();

            inoutno = pi_inoutno;
        }

        private void Export_Click(object sender, EventArgs e)
        {
            ExportFileDialog.Description = "选择导出的路径";
            DialogResult result = ExportFileDialog.ShowDialog();
            string custcode = dh.getFieldDataByCondition("prodinout", "pi_cardcode", "pi_inoutno='" + inoutno + "'").ToString();
            if (result == DialogResult.OK)
            {
                StringBuilder sql = new StringBuilder();
                List<CheckBox> conditionbox = new List<CheckBox>();
                if (!CH_PBCODE.Checked && BoxCode.Checked)
                {
                    MessageBox.Show("勾选盒号分页,打印内容请勾选盒号");
                    return;
                }
                if (!CH_SPLITBATCH.Checked && BatchCode.Checked)
                {
                    MessageBox.Show("勾选扩撒批分页,打印内容请勾选扩撒批号");
                    return;
                }
                conditionbox.Add(CH_BLUEFILM);
                conditionbox.Add(CH_PBCODE);
                conditionbox.Add(CH_REMARK);
                conditionbox.Add(CH_SPLITBATCH);
                conditionbox.Add(CH_WATERID);
                conditionbox.Add(ch_code);
                conditionbox.Add(M_Param1);
                conditionbox.Add(H_Param1);
                conditionbox.Add(H_Param2);
                conditionbox.Add(FirstPage_WID);
                conditionbox.Add(FirstPage_YIELD);
                conditionbox.Add(FirstPage_REMARK);
                string SplitType = "";
                if (FixRow.Checked)
                {
                    SplitType = FixRow.Name;
                }
                else if (BatchCode.Checked)
                {
                    SplitType = BatchCode.Name;
                }
                else if (BoxCode.Checked)
                {
                    SplitType = BoxCode.Name;
                }
                DataTable SQL1_ = (DataTable)dh.ExecuteSql("select es_filed,es_datatype,es_caption,es_prefix,es_suffix,es_filed1 from CS_EXPORTSETTING where es_type='DataPage' and es_enable=-1 and es_custcode='" + custcode + "' order by es_detno", "select");
                //没有置顶客户的取空的
                if (SQL1_.Rows.Count == 0)
                {
                    SQL1_ = (DataTable)dh.ExecuteSql("select es_filed,es_datatype,es_caption,es_prefix,es_suffix,es_filed1 from CS_EXPORTSETTING where es_type='DataPage' and es_enable=-1 and es_custcode is null order by es_detno", "select");
                }
                string es_field1 = "";
                for (int i = 0; i < SQL1_.Rows.Count; i++)
                {
                    //不是参数的直接拼接
                    if (SQL1_.Rows[i]["es_datatype"].ToString() != "Param")
                        es_field1 += SQL1_.Rows[i]["es_prefix"].ToString() + "||" + SQL1_.Rows[i]["es_filed"].ToString() + "||" + SQL1_.Rows[i]["es_suffix"].ToString() + ",";
                    //是参数的则先判断是否含有内容
                    else if (
                        (SQL1_.Rows[i]["es_filed"].ToString().Contains(M_Param1.Text) && M_Param1.Visible == true && M_Param1.Checked) ||
                        (SQL1_.Rows[i]["es_filed"].ToString().Contains(M_Param2.Text) && M_Param2.Visible == true && M_Param2.Checked) ||
                        (SQL1_.Rows[i]["es_filed"].ToString().Contains(M_Param3.Text) && M_Param3.Visible == true && M_Param3.Checked) ||
                        (SQL1_.Rows[i]["es_filed"].ToString().Contains(M_Param4.Text) && M_Param4.Visible == true && M_Param4.Checked) ||
                        (SQL1_.Rows[i]["es_filed"].ToString().Contains(H_Param1.Text) && H_Param1.Visible == true && H_Param1.Checked) ||
                        (SQL1_.Rows[i]["es_filed"].ToString().Contains(H_Param2.Text) && H_Param2.Visible == true && H_Param2.Checked) ||
                        (SQL1_.Rows[i]["es_filed"].ToString().Contains(H_Param3.Text) && H_Param3.Visible == true && H_Param3.Checked) ||
                        (SQL1_.Rows[i]["es_filed"].ToString().Contains(H_Param4.Text) && H_Param4.Visible == true && H_Param4.Checked))
                    {
                        es_field1 += SQL1_.Rows[i]["es_prefix"].ToString() + "||" + SQL1_.Rows[i]["es_filed"].ToString() + "||" + SQL1_.Rows[i]["es_suffix"].ToString() + ",";
                    }
                }
                //分页信息的DataTable
                string datasql = "";
                LogicHandler.GetDataSQL(inoutno, es_field1.Substring(0, es_field1.Length - 1), out datasql);
                DataTable dt = (DataTable)dh.ExecuteSql(datasql, "select");
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    for (int j = 0; j < SQL1_.Rows.Count; j++)
                    {
                        if (dt.Columns[i].ColumnName == (SQL1_.Rows[j]["es_prefix"].ToString() + "||" + SQL1_.Rows[j]["es_filed"].ToString() + "||" + SQL1_.Rows[j]["es_suffix"].ToString()).ToUpper())
                        {
                            dt.Columns[i].ColumnName = SQL1_.Rows[j]["es_filed1"].ToString();
                            dt.Columns[i].Caption = SQL1_.Rows[j]["es_caption"].ToString();
                        }
                    }
                }
                //获取首页需要展示的字段
                DataTable SQL_ = (DataTable)dh.ExecuteSql("select es_filed,es_caption,es_prefix,es_suffix,es_filed1 from CS_EXPORTSETTING where es_type='First' and es_enable=-1 and es_custcode='" + custcode + "' order by es_detno", "select");
                if (SQL_.Rows.Count == 0)
                {
                    SQL_ = (DataTable)dh.ExecuteSql("select es_filed,es_caption,es_prefix,es_suffix,es_filed1 from CS_EXPORTSETTING where es_type='First' and es_enable=-1 and es_custcode is null order by es_detno", "select");
                }
                string es_field = "";
                for (int i = 0; i < SQL_.Rows.Count; i++)
                {
                    es_field += SQL_.Rows[i]["es_prefix"].ToString() + "||" + SQL_.Rows[i]["es_filed"].ToString() + "||" + SQL_.Rows[i]["es_suffix"].ToString() + ",";
                }
                //首页信息的DataTable
                sql.Clear();
                sql.Append("select " + es_field.Substring(0, es_field.Length - 1) + "  from FIRSTPAGE_BATCH_VIEW where pi_inoutno='" + inoutno + "'");
                DataTable dt1 = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
                for (int i = 0; i < dt1.Columns.Count; i++)
                {
                    if (dt1.Columns[i].ColumnName == (SQL_.Rows[i]["es_prefix"].ToString() + "||" + SQL_.Rows[i]["es_filed"].ToString() + "||" + SQL_.Rows[i]["es_suffix"].ToString()).ToUpper())
                    {
                        dt1.Columns[i].ColumnName = SQL_.Rows[i]["es_filed1"].ToString();
                        dt1.Columns[i].Caption = SQL_.Rows[i]["es_caption"].ToString();
                    }
                }
                eh.ExportExcel(dt1, dt, ExportFileDialog.SelectedPath, inoutno, SplitType, int.Parse(RowNum.Text), conditionbox);
                string close = MessageBox.Show(this.ParentForm, "导出成功,是否打开文件", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question).ToString();
                if (close.ToString() == "Yes")
                    System.Diagnostics.Process.Start(ExportFileDialog.SelectedPath + "\\" + inoutno + ".xls");
                Close();
            }
        }

        private void ExportExcel_Load(object sender, EventArgs e)
        {
            Activate();
            LogicHandler.CustInit("0");
            StringBuilder sql = new StringBuilder();
            sql.Clear();
            sql.Append("select distinct cep_name,CEP_COLLECTIONTYPE from ProdIODetail left join Product on pd_prodcode = pr_code ");
            sql.Append("left join CHIP_EDCPARAMS_SPEC on pr_orispeccode=ced_model left join  CHIP_EDCPARAMS_SPECDETAIL  on ced_id=cesd_cedid  ");
            sql.Append("left join  CHIP_EDCPARAMS on CESD_CEPID = CEP_ID where pd_inoutno='" + inoutno + "' and ced_status='-1' and CEP_COLLECTIONTYPE='机测'");
            DataTable dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (i <= 4)
                {
                    Controls["M_Param" + (i + 1)].Visible = true;
                    Controls["M_Param" + (i + 1)].Text = dt.Rows[i]["cep_name"].ToString();
                }
            }
            sql.Clear();
            sql.Append("select distinct cep_name,CEP_COLLECTIONTYPE from ProdIODetail left join Product on pd_prodcode = pr_code ");
            sql.Append("left join CHIP_EDCPARAMS_SPEC on pr_orispeccode=ced_model left join  CHIP_EDCPARAMS_SPECDETAIL  on ced_id=cesd_cedid  ");
            sql.Append("left join  CHIP_EDCPARAMS on CESD_CEPID = CEP_ID where pd_inoutno='" + inoutno + "' and ced_status='-1' and CEP_COLLECTIONTYPE='手测'");
            dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (i <= 4)
                {
                    Controls["H_Param" + (i + 1)].Visible = true;
                    Controls["H_Param" + (i + 1)].Text = dt.Rows[i]["cep_name"].ToString();
                }
            }
        }

        private void ExportSetting_Click(object sender, EventArgs e)
        {
            ExportColumns ex = new ExportColumns(inoutno);
            ex.WindowState = FormWindowState.Maximized;
            ex.ShowDialog();
        }
    }
}