public DataTable getProductionWip(ProductionStatusSearch parameters)
        {
            string sql  = "";
            int    type = parameters.datetype;

            if (type == 0)
            {
                if (parameters.checkedDate)
                {
                    sql = @"SELECT h.my_no,
                                   h.season_id,
                                   h.cust_id,
                                   h.od_date,
                                   buyid.yymm,
                                   s.style_name,
                                   s.style_id,
                                   b.clr_no,
                                   c.clr_name,
                                   SUM(b.qty) qty,
                                   MIN(b.def_date) def_date
                            FROM odh h
                                LEFT JOIN odb b
                                    ON h.od_no = b.od_no
                                LEFT JOIN style s
                                    ON b.style_id = s.style_id
                                
                                LEFT JOIN clr c
                                    ON c.clr_no = b.clr_no
                                LEFT JOIN tb_sfcbuy buyid
                                    ON CONVERT(DATETIME, h.od_date)
                                       BETWEEN buyid.begin_day AND buyid.end_day
                                       AND buyid.cust_buy_id = CASE h.cust_id
                                                                   WHEN 'A0000' THEN
                                                                       'A0001'
                                                                   ELSE
                                                                       'SAB'
                                                               END
                            WHERE  1 = 1  AND     
                                   h.my_no like '' + @myNumber + '%' AND
                                   buyid.yymm like '' + @buyid + '%'  AND
                                   h.season_id like '' + @season + '%'   AND 
                                   b.po_no NOT LIKE '%樣%' AND
                                   CONVERT (datetime,  h.od_date)   BETWEEN  @stardate AND @enddate  
                            GROUP BY h.my_no,
                                     h.season_id,
                                     h.cust_id,
                                     h.od_date,
                                     s.style_name,
                                     s.style_id,
                                     b.clr_no,
                                     buyid.yymm,
                                     c.clr_name";
                }
                else
                {
                    sql = @"SELECT h.my_no,
                                   h.season_id,
                                   h.cust_id,
                                   h.od_date,
                                   buyid.yymm,
                                   s.style_name,
                                   s.style_id,
                                   b.clr_no,
                                   c.clr_name,
                                   SUM(b.qty) qty,
                                   MIN(b.def_date) def_date
                            FROM odh h
                                LEFT JOIN odb b
                                    ON h.od_no = b.od_no
                                LEFT JOIN style s
                                    ON b.style_id = s.style_id
                                LEFT JOIN clr c
                                    ON c.clr_no = b.clr_no
                                LEFT JOIN tb_sfcbuy buyid
                                    ON CONVERT(DATETIME, h.od_date)
                                       BETWEEN buyid.begin_day AND buyid.end_day
                                       AND buyid.cust_buy_id = CASE h.cust_id
                                                                   WHEN 'A0000' THEN
                                                                       'A0001'
                                                                   ELSE
                                                                       'SAB'
                                                               END
                            WHERE  1 = 1 AND 
                                   h.my_no like '' + @myNumber + '%' AND
                                   buyid.yymm like '' + @buyid + '%'  AND
                                   b.po_no NOT LIKE '%樣%' AND
                                   h.season_id like '' + @season + '%' 
                            GROUP BY h.my_no,
                                     h.season_id,
                                     h.cust_id,
                                     h.od_date,
                                     s.style_name,
                                     s.style_id,
                                     b.clr_no,
                                     buyid.yymm,
                                     c.clr_name";
                }
            }
            else if (type == 1)
            {
                if (parameters.checkedDate)
                {
                    sql = @"SELECT h.my_no,
                                   h.season_id,
                                   h.cust_id,
                                   h.od_date,
                                   buyid.yymm,
                                   s.style_name,
                                   s.style_id,
                                   b.clr_no,
                                   c.clr_name,
                                   SUM(b.qty) qty,
                                   MIN(b.def_date) def_date
                            FROM odh h
                                LEFT JOIN odb b
                                    ON h.od_no = b.od_no
                                LEFT JOIN style s
                                    ON b.style_id = s.style_id
                                LEFT JOIN clr c
                                    ON c.clr_no = b.clr_no
                                LEFT JOIN tb_sfcbuy buyid
                                    ON CONVERT(DATETIME, h.od_date)
                                       BETWEEN buyid.begin_day AND buyid.end_day
                                       AND buyid.cust_buy_id = CASE h.cust_id
                                                                   WHEN 'A0000' THEN
                                                                       'A0001'
                                                                   ELSE
                                                                       'SAB'
                                                               END
                            WHERE  1 = 1 AND                            
                                   h.my_no like '' + @myNumber + '%' AND
                                   buyid.yymm like '' + @buyid + '%'  AND
                                   h.season_id like '' + @season + '%'   AND 
                                   b.po_no NOT LIKE '%樣%' AND
                                   CONVERT (datetime,  b.def_date)   BETWEEN  @stardate AND @enddate  
                            GROUP BY h.my_no,
                                     h.season_id,
                                     h.cust_id,
                                     h.od_date,
                                     s.style_name,
                                     s.style_id,
                                     b.clr_no,
                                     buyid.yymm,
                                     c.clr_name";
                }
                else
                {
                    sql = @"SELECT h.my_no,
                                   h.season_id,
                                   h.cust_id,
                                   h.od_date,
                                   buyid.yymm,
                                   s.style_name,
                                   s.style_id,
                                   b.clr_no,
                                   c.clr_name,
                                   SUM(b.qty) qty,
                                   MIN(b.def_date) def_date
                            FROM odh h
                                LEFT JOIN odb b
                                    ON h.od_no = b.od_no
                                LEFT JOIN style s
                                    ON b.style_id = s.style_id
                                LEFT JOIN clr c
                                    ON c.clr_no = b.clr_no
                                LEFT JOIN tb_sfcbuy buyid
                                    ON CONVERT(DATETIME, h.od_date)
                                       BETWEEN buyid.begin_day AND buyid.end_day
                                       AND buyid.cust_buy_id = CASE h.cust_id
                                                                   WHEN 'A0000' THEN
                                                                       'A0001'
                                                                   ELSE
                                                                       'SAB'
                                                               END 

                            WHERE  1 = 1 AND
                                   h.my_no like '' + @myNumber + '%' AND
                                   buyid.yymm like '' + @buyid + '%'  AND
                                   b.po_no NOT LIKE '%樣%' AND
                                   h.season_id like '' + @season + '%'  
                            GROUP BY h.my_no,
                                     h.season_id,
                                     h.cust_id,
                                     h.od_date,
                                     s.style_name,
                                     s.style_id,
                                     b.clr_no,
                                     buyid.yymm,
                                     c.clr_name";
                }
            }


            SqlParameter[] ps =
            {
                new SqlParameter("myNumber", parameters.mynumber),
                new SqlParameter("buyid",    parameters.buyid),
                new SqlParameter("season",   parameters.season),
                new SqlParameter("stardate", parameters.stardate),
                new SqlParameter("enddate",  parameters.enddate)
            };

            DataTable dt = BEST_SqlHelper.ExcuteTable(sql, ps);

            return(dt);
        }
 public DataTable getProductionWip(ProductionStatusSearch parameters)
 {
     return(pss.getProductionWip(parameters));
 }
        public void getStatus()
        {
            string mynumber = this.txtMyNumber.Text.Trim();

            if (mynumber != "")
            {
                mynumber = mynumber.ToUpper();
            }
            string buyid = this.txtBuyID.Text.Trim();

            if (buyid != "")
            {
                buyid = buyid.ToUpper();
            }
            string season = this.txtSeason.Text.Trim();

            if (season != "")
            {
                season = season.ToUpper();
            }
            int    datetype = this.cbDateType.SelectedIndex;
            bool   ckdate   = this.cbDate.Checked;
            string stardate = this.dtpStartDate.Value.ToString("yyyy-MM-dd");
            string enddate  = this.dtpStopDate.Value.ToString("yyyy-MM-dd");
            string pagestr  = this.txtPage.Text.Trim();

            if (pagestr.Length <= 0)
            {
                pagestr = "0";
            }

            int page = 1;

            if (Regex.IsMatch(pagestr, @"^[0-9]*$"))
            {
                page = Convert.ToInt32(pagestr);
            }
            else
            {
                page = 1;
            }



            int serviceID = this.cbOperationsCenter.SelectedIndex;

            if (serviceID <= -1)
            {
                MessageBox.Show("请先选择营运中心,谢谢!");
                return;
            }
            string serviceName = this.cbOperationsCenter.SelectedItem.ToString();;

            this.butSearch.Enabled = false;
            Cursor = Cursors.WaitCursor;
            ProductionStatusSearch pss = new ProductionStatusSearch();

            pss.mynumber    = mynumber;
            pss.buyid       = buyid;
            pss.season      = season;
            pss.datetype    = datetype;
            pss.stardate    = stardate;
            pss.enddate     = enddate;
            pss.checkedDate = ckdate;
            pss.page        = page;

            if (rbWIP.Checked)
            {
                //   this.dgvProductionStatus.DataSource = psm.getProductionStatus(pss, serviceName);
            }
            else if (rbMakeStatus.Checked)
            {
                List <DataTable> ldt = new List <DataTable>();
                int pages            = 0;
                Tuple <List <DataTable>, int> tup = new Tuple <List <DataTable>, int>(ldt, pages);
                tup   = psm.getProductionStatus(pss, serviceName);
                ldt   = tup.Item1;
                pages = tup.Item2;;
                //  tup = psm.getProductionStatus(pss, serviceName);
                //  List<DataTable> ldt = psm.getProductionStatus(pss, serviceName);
                this.page.Text    = page + " / " + pages.ToString();
                this.txtPage.Text = page.ToString();
                if (ldt != null && ldt.Count == 3)
                {
                    this.dgvProductionStatus.DataSource = ldt[0];
                    this.dataGridView1.DataSource       = ldt[1];
                    this.dataGridView2.DataSource       = ldt[2];
                }
            }
            this.butSearch.Enabled = true;
            Cursor = Cursors.Default;
        }
        public Tuple <List <DataTable>, int> getProductionStatus(ProductionStatusSearch parameters, string serviceName)
        {
            List <DataTable> ldt = new List <DataTable>();

            // 取出BEST 数据
            DataTable     BestDt = pss.getProductionStatus(parameters);
            List <string> my_nos = new List <string>();
            int           pages  = 0;

            if (BestDt.Rows.Count <= 0)
            {
                MessageBox.Show("Best没有数据,谢谢!");
                return(new Tuple <List <DataTable>, int>(null, 0));
            }

            // 自编单号集合
            foreach (DataRow dr in BestDt.Rows)
            {
                string my_no = dr["my_no"].ToString().Trim();
                if (!checkTextCH(my_no))
                {
                    my_no = my_no.Replace("'", "''");
                    if (!checkDoubleMy_nos(my_nos, my_no))
                    {
                        my_nos.Add(my_no);
                    }
                }
            }

            if (my_nos.Count > 1000)
            {
                //  MessageBox.Show("自编单号大于1000,将进行分页处理。谢谢!");

                if (my_nos.Count % 1000 == 0)
                {
                    pages = my_nos.Count % 1000;
                }
                else
                {
                    pages = my_nos.Count % 1000 + 1;
                }

                if (parameters.page > pages)
                {
                    parameters.page = pages;
                }

                List <string> mys = new List <string>();
                for (int j = parameters.page * 1000; j < (parameters.page + 1) * 1000 && j < my_nos.Count; j++)
                {
                    mys.Add(my_nos[j]);
                }
                my_nos = mys;
            }
            // my_nos.Add(pages.ToString());



            // 取出MES 数据
            DataTable MesDt = pss.getMesWorkTicketByMynos(my_nos, serviceName);

            if (MesDt.Rows.Count <= 0)
            {
                MessageBox.Show("MES没有数据,谢谢!");
                return(new Tuple <List <DataTable>, int>(null, 0));
            }

            // 取出ERP 数据
            DataTable ERPDt = pss.getERPWorkTicketByMynos(my_nos, serviceName);

            if (ERPDt.Rows.Count <= 0)
            {
                MessageBox.Show("ERP没有数据,谢谢!");
                return(new Tuple <List <DataTable>, int>(null, 0));
            }

            // 构造数据表存放合并数据
            DataTable  ProductionStatus = new DataTable();
            DataColumn dc;

            // BEST 基础资料

            /*
             * dc = new  DataColumn();
             * dc.DataType = System.Type.GetType("System.Int32");
             * dc.ColumnName = "id";
             * dc.Caption = "ID";
             * ProductionStatus.Columns.Add(dc);
             */

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "myNumber";
            dc.Caption    = "MyNumber";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "season_id";
            dc.Caption    = "Season";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "cust_id";
            dc.Caption    = "Cust";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "od_date";
            dc.Caption    = "Order Date";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "yymm";
            dc.Caption    = "yymm";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "style_Name";
            dc.Caption    = "Style Name";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "style_description";
            dc.Caption    = "Style Description";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "clr_Code";
            dc.Caption    = "Color Code";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "clr_Name";
            dc.Caption    = "Style Name";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.Int32");
            dc.ColumnName = "Order_Qty";
            dc.Caption    = "Order Qty";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "panl_Date";
            dc.Caption    = "Panl_Date";
            ProductionStatus.Columns.Add(dc);


            // MES 物流发裁片资料
            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.Int32");
            dc.ColumnName = "WLInStock";
            dc.Caption    = "WL In Stock";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.Int32");
            dc.ColumnName = "WLOutStock";
            dc.Caption    = "WL Out Stock";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "ProcessID";
            dc.Caption    = "ProcessID";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "processName";
            dc.Caption    = "ProcessName";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "receiveLineName";
            dc.Caption    = "LineName";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "receiveLineID";
            dc.Caption    = "receiveLineID";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "ReportPlaceID";
            dc.Caption    = "ReportPlaceID";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "ReportPlaceName";
            dc.Caption    = "ReportPlaceName";
            ProductionStatus.Columns.Add(dc);


            // ERP 工单开立及车缝报工资料
            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "MakeOrderNo";
            dc.Caption    = "MakeOrderNo";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "OrderNo";
            dc.Caption    = "OrderNo";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "create_Date";
            dc.Caption    = "Create Date";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.Int32");
            dc.ColumnName = "ProduFinishQty";
            dc.Caption    = "ProduFinishQty";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "PlanMakeDate";
            dc.Caption    = "PlanMakeDate";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "Makechecked";
            dc.Caption    = "Makechecked";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "OrgName";
            dc.Caption    = "OrgName";
            ProductionStatus.Columns.Add(dc);


            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "FinishDate";
            dc.Caption    = "FinishDate";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "FinishMakeOrderNo";
            dc.Caption    = "FinishMakeOrderNo";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.Int32");
            dc.ColumnName = "ProcessTypeID";
            dc.Caption    = "ProcessTypeID";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "OrderClass";
            dc.Caption    = "OrderClass";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "MakeLine";
            dc.Caption    = "MakeLine";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "ProcessType";
            dc.Caption    = "ProcessType";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "ProcessName";
            dc.Caption    = "ProcessName";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.Int32");
            dc.ColumnName = "CFFinishQty";
            dc.Caption    = "CFFinishQty";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.Int32");
            dc.ColumnName = "CFFinishBonus";
            dc.Caption    = "CFFinishBonus";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "FinishChecked";
            dc.Caption    = "FinishChecked";
            ProductionStatus.Columns.Add(dc);

            dc            = new DataColumn();
            dc.DataType   = System.Type.GetType("System.String");
            dc.ColumnName = "MakeOrgName";
            dc.Caption    = "MakeOrgName";
            ProductionStatus.Columns.Add(dc);


            // 循环添加数据
            // 以MES 为基准
            for (int i = 0; i < MesDt.Rows.Count; i++)
            {
                DataRow dr         = ProductionStatus.NewRow();
                int     WLInStock  = Convert.ToInt32(MesDt.Rows[i]["WLInStock"].ToString());
                int     WLOutStock = Convert.ToInt32(MesDt.Rows[i]["WLOutStock"].ToString());
                string  ProcessID  = MesDt.Rows[i]["ProcessID"].ToString();
                if (ProcessID == "-1" || ProcessID == "0")
                {
                    ProcessID = "";
                }
                string ProcessName   = MesDt.Rows[i]["ProcessName"].ToString();
                string LineName      = MesDt.Rows[i]["LineName"].ToString();
                string receiveLineID = MesDt.Rows[i]["receiveLineID"].ToString();
                if (receiveLineID == "-1" || receiveLineID == "0")
                {
                    receiveLineID = "";
                }
                string ReportPlaceID = MesDt.Rows[i]["ReportPlaceID"].ToString();
                if (ReportPlaceID == "-1" || ReportPlaceID == "0")
                {
                    ReportPlaceID = "";
                }
                string ReportPlaceName = MesDt.Rows[i]["ReportPlaceName"].ToString();
                // MES 物流发裁片资料
                dr["WLInStock"]       = WLInStock;
                dr["WLOutStock"]      = WLOutStock;
                dr["ProcessID"]       = ProcessID;
                dr["processName"]     = ProcessName;
                dr["receiveLineName"] = LineName;
                dr["receiveLineID"]   = receiveLineID;
                dr["ReportPlaceID"]   = ReportPlaceID;
                dr["ReportPlaceName"] = ReportPlaceName;

                // BEST 基础资料
                for (int j = 0; j < BestDt.Rows.Count; j++)
                {
                    string mesMyNumber = MesDt.Rows[i]["orderSKU"].ToString().ToUpper();
                    string mesStyleID  = MesDt.Rows[i]["productModel"].ToString().ToUpper();
                    string mesClrCode  = MesDt.Rows[i]["colorName"].ToString().ToUpper();

                    string bestMyNumber = BestDt.Rows[j]["my_no"].ToString().ToUpper();
                    string bestStyleID  = BestDt.Rows[j]["style_Name"].ToString().ToUpper();
                    string bestClrCode  = BestDt.Rows[j]["clr_Code"].ToString().ToUpper();

                    // 处理颜色问题
                    if (mesClrCode.Length > bestClrCode.Length)
                    {
                        mesClrCode = mesClrCode.Substring(0, bestClrCode.Length);
                    }



                    if (mesMyNumber == bestMyNumber && mesStyleID == bestStyleID && mesClrCode == bestClrCode)
                    {
                        dr["myNumber"]          = BestDt.Rows[j]["my_no"].ToString().ToUpper();
                        dr["season_id"]         = BestDt.Rows[j]["season_id"].ToString().ToUpper();
                        dr["cust_id"]           = BestDt.Rows[j]["cust_id"].ToString().ToUpper();
                        dr["od_date"]           = BestDt.Rows[j]["od_date"].ToString().ToUpper();
                        dr["yymm"]              = BestDt.Rows[j]["yymm"].ToString().ToUpper();
                        dr["style_Name"]        = BestDt.Rows[j]["style_Name"].ToString().ToUpper();
                        dr["style_description"] = BestDt.Rows[j]["Description"].ToString().ToUpper();
                        dr["clr_Code"]          = BestDt.Rows[j]["clr_Code"].ToString().ToUpper();
                        dr["clr_Name"]          = BestDt.Rows[j]["clr_name"].ToString().ToUpper();
                        dr["Order_Qty"]         = Convert.ToInt32(BestDt.Rows[j]["OrderQty"]);
                        dr["panl_Date"]         = BestDt.Rows[j]["PanlDate"].ToString().ToUpper();
                    }
                }
                int CFFinishQty   = 0;
                int CFFinishBonus = 0;
                // ERP 工单开立及车缝报工资料
                for (int k = 0; k < ERPDt.Rows.Count; k++)
                {
                    string mesMyNumber    = MesDt.Rows[i]["orderSKU"].ToString().ToUpper();
                    int    mesLineID      = Convert.ToInt32(MesDt.Rows[i]["receiveLineID"].ToString());
                    string ERPMyNumber    = ERPDt.Rows[k]["myNo"].ToString().ToUpper();
                    string ERPMakeLineStr = ERPDt.Rows[k]["MakeLine"].ToString();
                    int    ERPMakeLine    = -1;
                    if (ERPMakeLineStr.Length >= 4)
                    {
                        ERPMakeLine = Convert.ToInt32(System.Text.RegularExpressions.Regex.Replace(ERPMakeLineStr, @"[^0-9]+", ""));

                        // ERPMakeLine = Convert.ToInt32(ERPMakeLineStr.Substring(2, 2));
                    }



                    if (ERPMyNumber == mesMyNumber && ERPMakeLine == mesLineID)
                    {
                        dr["MakeOrderNo"]       = ERPDt.Rows[k]["MakeOrderNo"].ToString().ToUpper();
                        dr["OrderNo"]           = ERPDt.Rows[k]["StyleName"].ToString().ToUpper();
                        dr["create_Date"]       = ERPDt.Rows[k]["CreateDate"].ToString().ToUpper();
                        dr["ProduFinishQty"]    = Convert.ToInt32(ERPDt.Rows[k]["ProduFinishQty"].ToString());
                        dr["PlanMakeDate"]      = ERPDt.Rows[k]["PlanMakeDate"].ToString().ToUpper();
                        dr["Makechecked"]       = ERPDt.Rows[k]["Makechecked"].ToString().ToUpper();
                        dr["OrgName"]           = ERPDt.Rows[k]["OrgName"].ToString().ToUpper();
                        dr["FinishDate"]        = ERPDt.Rows[k]["FinishDate"].ToString().ToUpper();
                        dr["FinishMakeOrderNo"] = ERPDt.Rows[k]["FinishMakeOrderNo"].ToString().ToUpper();
                        dr["ProcessTypeID"]     = Convert.ToInt32(ERPDt.Rows[k]["ProcessTypeID"].ToString());
                        dr["OrderClass"]        = ERPDt.Rows[k]["OrderClass"].ToString().ToUpper();
                        dr["MakeLine"]          = ERPDt.Rows[k]["MakeLine"].ToString().ToUpper();
                        dr["ProcessType"]       = ERPDt.Rows[k]["ProcessType"].ToString().ToUpper();
                        dr["ProcessName"]       = ERPDt.Rows[k]["ProcessName"].ToString().ToUpper();

                        CFFinishQty      += Convert.ToInt32(ERPDt.Rows[k]["CFFinishQty"].ToString());
                        dr["CFFinishQty"] = CFFinishQty;

                        CFFinishBonus      += Convert.ToInt32(ERPDt.Rows[k]["CFFinishBonus"].ToString());
                        dr["CFFinishBonus"] = CFFinishBonus;

                        dr["FinishChecked"] = ERPDt.Rows[k]["FinishChecked"].ToString().ToUpper();
                        dr["MakeOrgName"]   = ERPDt.Rows[k]["MakeOrgName"].ToString().ToUpper();
                    }
                }

                ProductionStatus.Rows.Add(dr);
            }


            // BEST 基础资料
            DataTable  BestUnCorrespondMes = new DataTable();
            DataColumn BMUdc;

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "my_no";
            BMUdc.Caption    = "my_no";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "season_id";
            BMUdc.Caption    = "season_id";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "cust_id";
            BMUdc.Caption    = "cust_id";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "od_date";
            BMUdc.Caption    = "od_date";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "yymm";
            BMUdc.Caption    = "yymm";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "style_Name";
            BMUdc.Caption    = "style_Name";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "Description";
            BMUdc.Caption    = "Description";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "clr_Code";
            BMUdc.Caption    = "clr_Code";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "clr_name";
            BMUdc.Caption    = "clr_name";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.Int32");
            BMUdc.ColumnName = "OrderQty";
            BMUdc.Caption    = "OrderQty";
            BestUnCorrespondMes.Columns.Add(BMUdc);

            BMUdc            = new DataColumn();
            BMUdc.DataType   = System.Type.GetType("System.String");
            BMUdc.ColumnName = "PanlDate";
            BMUdc.Caption    = "PanlDate";
            BestUnCorrespondMes.Columns.Add(BMUdc);


            bool BUM = true;

            //  BEST  对不上的资料
            for (int j = 0; j < BestDt.Rows.Count; j++)
            {
                DataRow bdr = BestUnCorrespondMes.NewRow();
                for (int i = 0; i < MesDt.Rows.Count; i++)
                {
                    string mesMyNumber = MesDt.Rows[i]["orderSKU"].ToString().ToUpper();
                    string mesStyleID  = MesDt.Rows[i]["productModel"].ToString().ToUpper();
                    string mesClrCode  = MesDt.Rows[i]["colorName"].ToString().ToUpper();

                    string bestMyNumber = BestDt.Rows[j]["my_no"].ToString().ToUpper();
                    string bestStyleID  = BestDt.Rows[j]["style_Name"].ToString().ToUpper();
                    string bestClrCode  = BestDt.Rows[j]["clr_Code"].ToString().ToUpper();

                    // 处理颜色问题
                    if (mesClrCode.Length > bestClrCode.Length)
                    {
                        mesClrCode = mesClrCode.Substring(0, bestClrCode.Length);
                    }

                    // mesClrCode = mesClrCode.Substring(0, bestClrCode.Length);
                    if (mesMyNumber == bestMyNumber && mesStyleID == bestStyleID && mesClrCode == bestClrCode)
                    {
                        BUM = true;
                        break;
                    }
                    else
                    {
                        BUM = false;
                    }
                }
                if (!BUM)
                {
                    bdr["my_no"]       = BestDt.Rows[j]["my_no"].ToString().ToUpper();
                    bdr["season_id"]   = BestDt.Rows[j]["season_id"].ToString().ToUpper();
                    bdr["cust_id"]     = BestDt.Rows[j]["cust_id"].ToString().ToUpper();
                    bdr["od_date"]     = BestDt.Rows[j]["od_date"].ToString().ToUpper();
                    bdr["yymm"]        = BestDt.Rows[j]["yymm"].ToString().ToUpper();
                    bdr["style_Name"]  = BestDt.Rows[j]["style_Name"].ToString().ToUpper();
                    bdr["Description"] = BestDt.Rows[j]["Description"].ToString().ToUpper();
                    bdr["clr_Code"]    = BestDt.Rows[j]["clr_Code"].ToString().ToUpper();
                    bdr["clr_name"]    = BestDt.Rows[j]["clr_name"].ToString().ToUpper();
                    bdr["OrderQty"]    = Convert.ToInt32(BestDt.Rows[j]["OrderQty"]);
                    bdr["PanlDate"]    = BestDt.Rows[j]["PanlDate"].ToString().ToUpper();
                    BestUnCorrespondMes.Rows.Add(bdr);
                }
            }


            // ERP 基础资料
            DataTable  ERPUnCorrespondMes = new DataTable();
            DataColumn EMUdc;

            // ERP 工单开立及车缝报工资料
            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "MakeOrderNo";
            EMUdc.Caption    = "MakeOrderNo";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "OrderNo";
            EMUdc.Caption    = "OrderNo";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "create_Date";
            EMUdc.Caption    = "Create Date";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.Int32");
            EMUdc.ColumnName = "ProduFinishQty";
            EMUdc.Caption    = "ProduFinishQty";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "PlanMakeDate";
            EMUdc.Caption    = "PlanMakeDate";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "Makechecked";
            EMUdc.Caption    = "Makechecked";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "OrgName";
            EMUdc.Caption    = "OrgName";
            ERPUnCorrespondMes.Columns.Add(EMUdc);


            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "FinishDate";
            EMUdc.Caption    = "FinishDate";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "FinishMakeOrderNo";
            EMUdc.Caption    = "FinishMakeOrderNo";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.Int32");
            EMUdc.ColumnName = "ProcessTypeID";
            EMUdc.Caption    = "ProcessTypeID";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "OrderClass";
            EMUdc.Caption    = "OrderClass";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "MakeLine";
            EMUdc.Caption    = "MakeLine";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "ProcessType";
            EMUdc.Caption    = "ProcessType";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "ProcessName";
            EMUdc.Caption    = "ProcessName";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.Int32");
            EMUdc.ColumnName = "CFFinishQty";
            EMUdc.Caption    = "CFFinishQty";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.Int32");
            EMUdc.ColumnName = "CFFinishBonus";
            EMUdc.Caption    = "CFFinishBonus";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "FinishChecked";
            EMUdc.Caption    = "FinishChecked";
            ERPUnCorrespondMes.Columns.Add(EMUdc);

            EMUdc            = new DataColumn();
            EMUdc.DataType   = System.Type.GetType("System.String");
            EMUdc.ColumnName = "MakeOrgName";
            EMUdc.Caption    = "MakeOrgName";
            ERPUnCorrespondMes.Columns.Add(EMUdc);


            //  ERPDt 对不上的资料
            bool EUM = true;

            for (int j = 0; j < ERPDt.Rows.Count; j++)
            {
                DataRow edr = ERPUnCorrespondMes.NewRow();
                for (int i = 0; i < MesDt.Rows.Count; i++)
                {
                    string mesMyNumber = MesDt.Rows[i]["orderSKU"].ToString().ToUpper();
                    int    mesLineID   = Convert.ToInt32(MesDt.Rows[i]["receiveLineID"].ToString());
                    string ERPMyNumber = ERPDt.Rows[j]["myNo"].ToString().ToUpper();

                    string ERPMakeLineStr = ERPDt.Rows[j]["MakeLine"].ToString();
                    int    ERPMakeLine    = -1;
                    if (ERPMakeLineStr.Length >= 4)
                    {
                        ERPMakeLine = Convert.ToInt32(System.Text.RegularExpressions.Regex.Replace(ERPMakeLineStr, @"[^0-9]+", ""));

                        // ERPMakeLine = Convert.ToInt32(ERPMakeLineStr.Substring(2, 2));
                    }

                    //  int ERPMakeLine = Convert.ToInt32(ERPDt.Rows[j]["MakeLine"].ToString().Substring(2, 2));


                    //  ERPDt.Rows[k]  全部对不上的资料
                    if (ERPMyNumber == mesMyNumber && ERPMakeLine == mesLineID)
                    {
                        EUM = true;
                        break;
                    }
                    else
                    {
                        EUM = false;
                    }
                }
                if (!EUM)
                {
                    edr["MakeOrderNo"]       = ERPDt.Rows[j]["MakeOrderNo"].ToString().ToUpper();
                    edr["OrderNo"]           = ERPDt.Rows[j]["OrderNo"].ToString().ToUpper();
                    edr["create_Date"]       = ERPDt.Rows[j]["CreateDate"].ToString().ToUpper();
                    edr["ProduFinishQty"]    = Convert.ToInt32(ERPDt.Rows[j]["ProduFinishQty"].ToString().ToUpper());
                    edr["PlanMakeDate"]      = ERPDt.Rows[j]["PlanMakeDate"].ToString().ToUpper();
                    edr["OrgName"]           = ERPDt.Rows[j]["OrgName"].ToString().ToUpper();
                    edr["FinishDate"]        = ERPDt.Rows[j]["FinishDate"].ToString().ToUpper();
                    edr["FinishMakeOrderNo"] = ERPDt.Rows[j]["FinishMakeOrderNo"].ToString().ToUpper();
                    edr["ProcessTypeID"]     = ERPDt.Rows[j]["ProcessTypeID"].ToString().ToUpper();
                    edr["OrderClass"]        = ERPDt.Rows[j]["OrderClass"].ToString().ToUpper();
                    edr["MakeLine"]          = ERPDt.Rows[j]["MakeLine"].ToString().ToUpper();
                    edr["ProcessType"]       = ERPDt.Rows[j]["ProcessType"].ToString().ToUpper();
                    edr["ProcessName"]       = ERPDt.Rows[j]["ProcessName"].ToString().ToUpper();
                    edr["CFFinishQty"]       = Convert.ToInt32(ERPDt.Rows[j]["CFFinishQty"].ToString().ToUpper());
                    edr["CFFinishBonus"]     = Convert.ToInt32(ERPDt.Rows[j]["CFFinishBonus"].ToString().ToUpper());
                    edr["FinishChecked"]     = ERPDt.Rows[j]["FinishChecked"].ToString().ToUpper();
                    edr["MakeOrgName"]       = ERPDt.Rows[j]["MakeOrgName"].ToString().ToUpper();

                    ERPUnCorrespondMes.Rows.Add(edr);
                }
            }
            ldt.Add(ProductionStatus);
            ldt.Add(BestUnCorrespondMes);
            ldt.Add(ERPUnCorrespondMes);



            return(new Tuple <List <DataTable>, int>(ldt, pages));
        }