using DBUtility;
using PaintingPC.Model;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PaintingPC
{
    public class Function : Interface1
    {
        /// <summary>
        /// 解析条码(一维码返回存货代码,二维码返回零件号)
        /// </summary>
        /// <param name="code">条码</param>
        /// <param name="stockNo">存货代码</param>
        /// <param name="batchNo">批次</param>
        /// /// <param name="partNo">零件号</param>
        public static void GetCode(string code, out string stockNo, out string batchNo, out string partNo)
        {
            //解析塑料粒子条码,长度为20的为一维码22000000821906090201,否则为二维码
            //二维码样例Z-340.180411.000001;5000;S35001;20180411;P1710401.[#Line#];180411;
            //第一个分号之前的数据,即Z-340.180411.000001; Z-340为零件号,180411为批次号,000001为流水号
            //一维码前十位为零件号,tb_Product PartNo,11~16位为批次 

            stockNo = "";     //存货代码
            batchNo = "";    //批次
            partNo = "";    //零件号
            try
            {
                if (code.Contains(".") == false)
                {
                    //一维码
                    if (code.Length > 9)
                    {
                        stockNo = code.Substring(0, 10);
                        batchNo = code.Substring(10, 6);
                    }
                }
                else
                {
                    //二维码
                    string[] strs = code.Split(';');
                    if (strs.Length > 0)
                    {
                        string str = strs[0];
                        string[] props = str.Split('.');
                        if (props.Length >= 2)
                        {
                            partNo = props[0];
                            batchNo = props[1];
                        }
                    }
                }
                LogHelper.WriteSysLogBase("[入参]:code=" + code + "; [出参:]stockNo=" + stockNo + ",batchNo=" + batchNo + ",partNo=" + partNo, MethodBase.GetCurrentMethod().Name);
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            } 
        }

        /// <summary>
        /// 根据存货代码获得零件名称、颜色名称
        /// </summary>
        /// <param name="stockNo"></param>
        /// <param name="partName"></param>
        /// <param name="colorName"></param>
        public static void GetInfoByStockNo(string stockNo, string partNo, out string partName)
        {
            partName = "";
            string sql = "";
            try
            {
                DataTable dt = new DataTable();
                if (!string.IsNullOrWhiteSpace(stockNo) || !string.IsNullOrWhiteSpace(partNo))
                {
                    sql = " select ProductName from tb_Product where StockNo = '" + stockNo + @"' or PartNo = '" + partNo + @"' ";
                    dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                }
                if (dt != null && dt.Rows.Count > 0)
                {
                    partName = dt.Rows[0]["ProductName"].ToString();
                }
                else
                {
                    partName = "";
                }
                LogHelper.WriteSysLogBase("[入参]:stockNo=" + stockNo + ",partNo=" + partNo + "; [出参:]partName=" + partName + ";[sql:] + sql", MethodBase.GetCurrentMethod().Name);
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
        }

      
        /// <summary>
        /// 根据条码获取图片地址
        /// </summary>
        /// <param name="barcode"></param>
        /// <returns></returns>
        public static DataTable SearchInfoByBarCode(string barcode)
        {
            DataTable res = new DataTable();
            try
            {
                string stockNo = "";
                string batchNo = "";
                string partNo = "";
                GetCode(barcode, out stockNo, out batchNo, out partNo);

                string sql = "";
                if (!string.IsNullOrWhiteSpace(stockNo))
                {
                    sql = " select * from tb_Product where StockNo = '" + stockNo.Trim() + @"'";
                    res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                }
                else if (!string.IsNullOrWhiteSpace(partNo))
                {
                    sql = " select * from tb_Product where PartNo = '" + partNo.Trim() + @"'";
                    res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                }
                LogHelper.WriteSysLogBase("[入参:]barcode=" + barcode+"[sql:]"+ sql, MethodBase.GetCurrentMethod().Name);
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        public static DataTable SearchDefectInfo(string stationNo)
        {
            DataTable res = new DataTable();
            try
            {
                string sql = @" select * from tb_Defect where LineID = (select LineID from tb_Station where StationNo = '"+ stationNo +@"') ";
                res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                LogHelper.WriteSysLogBase("[入参:]stationNo=" + stationNo + "[sql:]" + sql, MethodBase.GetCurrentMethod().Name);
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 从远程服务器下载文件到本地
        /// </summary>
        /// <param name="src">远程服务器文件夹路径</param>
        /// <param name="dst">要保存到本地的文件夹路径</param>
        /// <param name="fileName">远程服务器src路径下的文件名</param>
        public static void TransportRemoteToLocal(string src, string dst, string fileName)   //src:远程服务器文件夹路径     dst:要保存到本地的文件路径    fileName:远程服务器src路径下的文件名
        {
            try
            {
                FileStream inFileStream = new FileStream(src, FileMode.Open); //远程服务器文件  此处假定远程服务器共享文件夹下确实包含本文件,否则程序报错

                if (!Directory.Exists(dst))
                {
                    Directory.CreateDirectory(dst);
                }
                dst = dst + fileName;
                FileStream outFileStream = new FileStream(dst, FileMode.OpenOrCreate);   //从远程服务器下载到本地的文件
                byte[] buf = new byte[inFileStream.Length];
                int byteCount;
                while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0)
                {
                    outFileStream.Write(buf, 0, byteCount);
                }
                inFileStream.Flush();
                inFileStream.Close();
                outFileStream.Flush();
                outFileStream.Close();
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
        }

        

        public Panel IInitPanel(Panel BackgroundPanel, int LabelSizeW, int LabelSizeH, DataTable dataSouce, string LabelTextCol, string LabelTagCol, EventHandler LabelClick)
        {
            return InitPanelLabel(BackgroundPanel, LabelSizeW, LabelSizeH, dataSouce, LabelTextCol, LabelTagCol, LabelClick);
        }

        private static Panel InitPanelLabel(Panel BackgroundPanel, int LabelSizeW, int LabelSizeH, DataTable dataSouce, string LabelTextCol, string LabelTagCol, EventHandler LabelClick)
        {
            BackgroundPanel.Controls.Clear();

            if (dataSouce != null && dataSouce.Rows.Count > 0)
            {
                Label[] dLb = new Label[dataSouce.Rows.Count];
                int row = 0, col = 1;
                row = BackgroundPanel.Size.Height / LabelSizeH;
                col = BackgroundPanel.Size.Width / LabelSizeW;

                List<Point> points = new List<Point>();
                for (int i = 0; i < row; i++)
                {
                    for (int j = 0; j < col; j++)
                    {
                        Point p = new Point();
                        p.X = 9 + j * LabelSizeW;
                        p.Y = 9 + i * LabelSizeH;
                        points.Add(p);
                    }
                }

                for (int i = 0; i < dataSouce.Rows.Count; i++)
                {
                    dLb[i] = new Label();
                    dLb[i].Text = dataSouce.Rows[i][LabelTextCol].ToString();
                    dLb[i].Tag = dataSouce.Rows[i][LabelTagCol].ToString();
                    dLb[i].Font = new Font("微软雅黑", 24, FontStyle.Bold);
                    dLb[i].Size = new Size(LabelSizeW, LabelSizeH);
                    dLb[i].Location = points[i];
                    dLb[i].BorderStyle = BorderStyle.FixedSingle;
                    dLb[i].BackColor = Color.Blue;
                    dLb[i].TextAlign = ContentAlignment.MiddleCenter;
                    BackgroundPanel.Controls.Add(dLb[i]);
                    dLb[i].Click += LabelClick;
                }
            }

            return BackgroundPanel;
        }

       

        /// <summary>
        /// 获取国外数据库数据--暂时不用此方法
        /// </summary>
        /// <param name="skidNo"></param>
        /// <returns></returns>
        public static DataTable GetForeignData(string skidNo)
        {
            DataTable res = new DataTable();
            try
            {
                string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();

                #region 查国外下线数据库
                string sql = @" select top 1 *
                                          from Paintline_Proddata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc ";
                res = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, sql, null);
                LogHelper.WriteSysLogBase("[sql:]" + sql, MethodBase.GetCurrentMethod().Name);
                #endregion

                #region 线下没查到条码,查国外上线数据库

                string indexName1 = ConfigurationManager.AppSettings["FrmFirstCheckLeftSide"];
                string indexName2 = ConfigurationManager.AppSettings["FrmFirstCheckRightSide"];

                if (res == null || res.Rows.Count < 1 || string.IsNullOrWhiteSpace(res.Rows[0][indexName1].ToString()) || string.IsNullOrWhiteSpace(res.Rows[0][indexName2].ToString()))
                {
                    string sql_2 = " select top 1 * from Paintline_Loadingdata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc  ";
                    res = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, sql_2, null);
                    LogHelper.WriteSysLogBase("[sql:]" + sql_2, MethodBase.GetCurrentMethod().Name);
                }

                #endregion

                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 查询外国数据库获取颜色码
        /// </summary>
        /// <param name="key"></param>
        /// <param name="skidNo"></param>
        /// <returns></returns>
        public static string GetForeignDataColor(string skidNo, out string colorInfo)
        {
            string res = "";
            colorInfo = "";
            try
            {
                string colorNo = "";
                string colorQQNo = "";
                string colorPRNo = "";
                string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();

                string sql = " select top 1 Setvalue_BC_Color_No, Setvalue_CC_Color_No, Setvalue_PR_Color_No from Paintline_Proddata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc ";
                DataTable dtC = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, sql, null);
                if (dtC != null && dtC.Rows.Count > 0)
                {
                    colorNo = dtC.Rows[0]["Setvalue_BC_Color_No"].ToString();
                    colorQQNo = dtC.Rows[0]["Setvalue_CC_Color_No"].ToString();
                    colorPRNo = dtC.Rows[0]["Setvalue_PR_Color_No"].ToString();
                }

                #region 注销-不要
                //if (string.IsNullOrWhiteSpace(colorNo))
                //{
                //    string sql_2 = " select top 1 Setvalue_BC_Color_No from Paintline_Loadingdata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc ";
                //    object aa = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_2, null);
                //    if (aa != null)
                //    {
                //        colorNo = aa.ToString();
                //    }
                //} 
                #endregion

                if (!string.IsNullOrWhiteSpace(colorNo))
                {
                    DataTable dt = new DataTable();

                    if (colorNo.Trim() == "BC37" && colorQQNo.Trim() == "CC04")
                    {
                        #region 单独修改亚光山脉灰
                        string sql_c = @" select * from tb_Color where ColorCode = '" + colorNo + "' and ColorQQCode = '" + colorQQNo + "' ";
                        dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql_c, null);
                        if (dt != null && dt.Rows.Count > 0)
                        {
                            res = dt.Rows[0]["Des"].ToString();
                            colorInfo = dt.Rows[0]["Des"].ToString().Trim() + "," + dt.Rows[0]["ColorCode"].ToString().Trim() + "," + dt.Rows[0]["ColorNo"].ToString().Trim();
                        } 
                        #endregion
                    }
                    else
                    {
                        string sql_c = "";
                        if (!string.IsNullOrWhiteSpace(colorQQNo) && !string.IsNullOrWhiteSpace(colorPRNo))
                        {
                            sql_c = @" select * from tb_Color where ColorCode = '" + colorNo + "' and ColorQQCode = '" + colorQQNo + "' and ColorDQCode = '" + colorPRNo + "' ";
                        }
                        else
                        {
                            sql_c = @" select * from tb_Color where ColorCode = '" + colorNo + "'";
                        }
                        //string sql_c = @" select * from tb_Color where ColorCode = '" + colorNo + "'";
                        dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql_c, null);
                        if (dt != null && dt.Rows.Count > 0)
                        {
                            res = dt.Rows[0]["Des"].ToString();
                            colorInfo = dt.Rows[0]["Des"].ToString().Trim() + "," + dt.Rows[0]["ColorCode"].ToString().Trim() + "," + dt.Rows[0]["ColorNo"].ToString().Trim();
                        }
                    }

                }

                LogHelper.WriteSysLogBase("[入参:]skidNo=" + skidNo + ";[出参:]colorInfo=" + colorInfo, MethodBase.GetCurrentMethod().Name);
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 获取班次,规定早8至晚8为A班
        /// </summary>
        /// <returns></returns>
        public static string GetWorkClass()
        {
            //bool classA = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 08:00:00", "2019-06-12 20:00:00");
            bool classA = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.ToString("yyyy-MM-dd") + " 08:00:00", DateTime.Now.ToString("yyyy-MM-dd") + " 20:00:00");
            if (classA)
            {
                return "A班";
            }
            else
            {
                return "B班";
            }
        }
        
        /// <summary>
        /// 判断传入时间是否在工作时间段内
        /// </summary>
        /// <param name="timeStr"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <returns></returns>
        public static bool IsBetweenTime(string timeStr, string startTime, string endTime)
        {
            //判断传入时间是否在工作时间段内
            try
            {
                TimeSpan startSpan = DateTime.Parse(startTime).TimeOfDay;
                TimeSpan endSpan = DateTime.Parse(endTime).TimeOfDay;

                DateTime t1 = Convert.ToDateTime(timeStr);
                TimeSpan dspNow = t1.TimeOfDay;
                if (dspNow > startSpan && dspNow < endSpan)
                {
                    return true;
                }
                return false;
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return false;
            }
        }

        public static DataTable GetAllColor()
        {
            DataTable res = new DataTable();
            try
            {
//                string sql = @" SELECT [ID]
//                                      ,[ColorCode]
//                                      ,[ColorNo]
//                                      ,[Des]
//                                  FROM [tb_Color]
//                                  ORDER BY ColorCode ";
                string sql = @" select distinct Convert(varchar(50),[Des]) as [Des],ColorCode from tb_Color ORDER BY ColorCode ";
                res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 根据滑撬号查询第side个条码号
        /// </summary>
        /// <param name="skidNo"></param>
        /// <param name="side"></param>
        /// <returns></returns>
        public static string GetForeignBarCode(string skidNo, string side, int circle)
        {
            string res = "";
            try
            {
                string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();
    
                if (!string.IsNullOrWhiteSpace(side))
                {
                    if (circle > 1)
                    {
                        #region 查国外下线数据库

                        #region 2019-10-30注销
//                        string sql = @" select top 1 " + side + @"
//                                          from Paintline_Proddata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' and " + side + " like '%00000%' order by TimeStamp desc ";
//                        object bb = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql, null);
//                        if (bb != null)
//                        {
//                            res = bb.ToString();
//                            return res;
//                        }
//                        LogHelper.WriteSysLogBase("[sql:]" + sql, MethodBase.GetCurrentMethod().Name); 
                        #endregion

                        string color = "";
                        string sql_color_xia = @" select top 1 Setvalue_BC_Color_No from Paintline_Proddata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc ";
                        object aa = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_color_xia, null);
                        if (aa != null)
                        {
                            color = aa.ToString();
                        }

//                        string sql = @" select top 1 * from (select top 2 " + side + @"
//                                          from Paintline_Proddata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' and Setvalue_BC_Color_No = '" + color + @"' order by TimeStamp desc) aa order by TimeStamp asc ";
                        string sql = @" select top 1 " + side + @" from (select top 2 " + side + @",TimeStamp
                                          from Paintline_Proddata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc) aa order by TimeStamp asc ";
                        object bb = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql, null);
                        if (bb != null)
                        {
                            res = bb.ToString();
                            return res;
                        }
                        LogHelper.WriteSysLogBase("[sql:]" + sql, MethodBase.GetCurrentMethod().Name); 

                        #endregion

                        #region 下线没查到条码,查国外上线数据库

                        //if (string.IsNullOrWhiteSpace(res))
                        //{
                        //    string sql_2 = " select top 1 " + side + @" from Paintline_Loadingdata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' and " + side + " like '%00000%'  order by TimeStamp desc  ";
                        //    object aa = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_2, null);
                        //    if (aa != null)
                        //    {
                        //        res = aa.ToString();
                        //        return res;
                        //    }
                        //    LogHelper.WriteSysLogBase("[sql:]" + sql_2, MethodBase.GetCurrentMethod().Name);
                        //}

                        #endregion
                    }
                    else
                    {
                        #region 查国外下线数据库

                        string sql = @" select top 1 " + side + @"
                                          from Paintline_Proddata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc ";
                        object bb = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql, null);
                        if (bb != null)
                        {
                            res = bb.ToString();
                            return res;
                        }
                        LogHelper.WriteSysLogBase("[sql:]" + sql, MethodBase.GetCurrentMethod().Name);

                        #endregion

                        #region 上线没查到条码,查国外下线数据库

                        //if (string.IsNullOrWhiteSpace(res))
                        //{
                        //    string sql_2 = " select top 1 " + side + @" from Paintline_Loadingdata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc  ";
                        //    object aa = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_2, null);
                        //    if (aa != null)
                        //    {
                        //        res = aa.ToString();
                        //        return res;
                        //    }
                        //    LogHelper.WriteSysLogBase("[sql:]" + sql_2, MethodBase.GetCurrentMethod().Name);
                        //}

                        #endregion
                    }
                }
                return res;

            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 根据条码获取要取的层数及BC0几
        /// </summary>
        /// <param name="no"></param>
        /// <param name="title"></param>
        public static string GetForeignBCString(string no, string title)
        {
            string res = "";
            try
            {
                string stockNo = "";
                string batchNo = "";
                string partNo = "";
                GetCode(no, out stockNo, out batchNo, out partNo);
                string layer = Function.GetProductLayer(stockNo, partNo);
                string floor = "";
                string side = "";

                if (!string.IsNullOrWhiteSpace(title))
                {
                    string[] strs = title.Split(' ');
                    if (strs.Length >0)
                    {
                        for (int i = 0; i < strs.Length; i++)
                        {
                            if (strs[i].Contains("侧"))
                            {
                                side = strs[i].Replace("侧","").Trim();
                            }
                            if (strs[i].Contains("支架"))
                            {
                                floor = strs[i].Replace("支架", "").Trim();
                            }
                        }
                    }
                    string sql = @" select des from tb_LayerAndBC where layer = " + layer + " and floor = '" + floor + "' and side = '" + side + "' ";
                    res = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null).ToString();
                }
                return res;
            }
            catch(Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 根据条码获取层数
        /// </summary>
        /// <param name="stockNo"></param>
        /// <param name="partNo"></param>
        /// <returns></returns>
        public static string GetProductLayer(string stockNo, string partNo)
        {
            string res = "";
            try
            {
                if (!string.IsNullOrWhiteSpace(stockNo))
                {
                    string sql = @" select Layers from tb_Product where StockNo = '" + stockNo.Trim() + "' ";
                    object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                    if (aa != null)
                    {
                        res = aa.ToString();
                        return res;
                    }
                }
                if (!string.IsNullOrWhiteSpace(partNo))
                {
                    string sql = @" select Layers from tb_Product where PartNo = '" + partNo.Trim() + "' ";
                    object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                    if (aa != null)
                    {
                        res = aa.ToString();
                        return res;
                    }
                }
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 手动换班
        /// </summary>
        /// <param name="label"></param>
        public static void ChangeWorkClass(Label label)
        {
            if (label.Text.Trim() == "A班")
            {
                label.Text = "B班";
            }
            else
            {
                label.Text = "A班";
            }
        }

        /// <summary>
        /// 根据条码在老外库里查询颜色信息
        /// </summary>
        /// <param name="barcode"></param>
        /// <returns></returns>
        public static string GetProductInfo(string barcode)
        {
            string res = "";
            try
            {
                #region 暂时不要
                //                string sql = @" 
                //                                DECLARE @barcode varchar(30);
                //                                SET @barcode = '" + barcode + @"';
                //                                SELECT Setvalue_BC_Color_No, Setvalue_CC_Color_No, Setvalue_PR_Color_No
                //                                  FROM [PRODUCTION_DATA].[dbo].[Paintline_Proddata]
                //                                  WHERE LTrim(RTrim(Side_1_BC01)) = @barcode
                //                                  OR LTrim(RTrim(Side_1_BC02))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC03))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC04))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC05))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC06))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC07))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC08))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC09))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC10))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC11))= @barcode
                //                                  OR LTrim(RTrim(Side_1_BC12))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC01)) = @barcode
                //                                  OR LTrim(RTrim(Side_2_BC02))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC03))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC04))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC05))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC06))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC07))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC08))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC09))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC10))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC11))= @barcode
                //                                  OR LTrim(RTrim(Side_2_BC12))= @barcode
                //                            ";
                //                string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();
                //                //object aa = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql, null);
                //                DataTable dtColor = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, sql, null);
                //                string colorNo = "";
                //                string colorQQNo = "";
                //                string colorPRNo = "";
                //                //if (aa != null)
                //                //{
                //                //    colorNo = aa.ToString();
                //                //}
                //                if (dtColor != null && dtColor.Rows.Count > 0)
                //                {
                //                    colorNo = dtColor.Rows[0]["Setvalue_BC_Color_No"].ToString();
                //                    colorQQNo = dtColor.Rows[0]["Setvalue_CC_Color_No"].ToString();
                //                    colorPRNo = dtColor.Rows[0]["Setvalue_PR_Color_No"].ToString();
                //                }

                //                //根据颜色代码查颜色
                //                string colorInfo = "";
                //                if (!string.IsNullOrWhiteSpace(colorNo))
                //                {
                //                    DataTable dt = new DataTable();
                //                    //string sql_c = @" select * from tb_Color where ColorCode = '" + colorNo + "' ";
                //                    string sql_c = "";
                //                    if (!string.IsNullOrWhiteSpace(colorQQNo) && !string.IsNullOrWhiteSpace(colorPRNo))
                //                    {
                //                        sql_c = @" select * from tb_Color where ColorCode = '" + colorNo + "' and ColorQQCode = '" + colorQQNo + "' and ColorDQCode = '" + colorPRNo + "' ";
                //                    }
                //                    else
                //                    {
                //                        sql_c = @" select * from tb_Color where ColorCode = '" + colorNo + "'";
                //                    }
                //                    dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql_c, null);
                //                    if (dt != null && dt.Rows.Count > 0)
                //                    {
                //                        res = dt.Rows[0]["Des"].ToString();
                //                        colorInfo = dt.Rows[0]["Des"].ToString().Trim() + "," + dt.Rows[0]["ColorCode"].ToString().Trim() + "," + dt.Rows[0]["ColorNo"].ToString().Trim();
                //                    }
                //                } 
                #endregion

                string colorInfo = "";
                string sql = @" select top 1 ColorName from tb_PaintLoad where barcode = '" + barcode + @"' order by CreateTime desc ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    colorInfo = aa.ToString();
                }

                //根据条码查询产品信息
                string stockNo = "";
                string batchNo = "";
                string partNo = "";
                Function.GetCode(barcode, out stockNo, out batchNo, out partNo);

                string productName = "";
                Function.GetInfoByStockNo(stockNo, partNo, out productName);
                colorInfo = colorInfo + "," + productName;

                res = colorInfo;
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }
      
        public static DataTable GetLastResult(string barcode)
        {
            DataTable res = new DataTable();
            try
            {
                string sql = @"select top 1 * from tb_InspectResult where barcode='" + barcode + @"' order by ID desc ";

                res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);

            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }

            return res;
        }

       

        /// <summary>
        /// 根据滑撬号获取圈数
        /// </summary>
        /// <param name="skidNo"></param>
        /// <returns></returns>
        public static int GetCircle(string skidNo)
        {
            int res = 0;
            try
            {
                string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();
                string sql_color_xia = @" select top 1 Setvalue_BC_Color_No from Paintline_Proddata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc ";
                object bb = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_color_xia, null);
                if (bb != null)
                {
                    string color = bb.ToString();

                    res = GetCircleByColor(color);
                }
                else
                {
                    //string sql_color = @" select top 1 Setvalue_BC_Color_No from Paintline_Loadingdata where LTrim(RTrim(Skid_No)) = '" + skidNo + @"' order by TimeStamp desc ";
                    //object aa = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_color, null);
                    //if (aa != null)
                    //{
                    //    string color = aa.ToString();
                    //    res = GetCircleByColor(color);
                    //}
                }
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 根据颜色号获取圈数
        /// </summary>
        /// <param name="colorCode"></param>
        /// <returns></returns>
        public static int GetCircleByColor(string colorCode)
        {
            int res = 0;
            try
            {
                string sql = @" select isnull(Circle,0) from tb_Color where ColorCode = '" + colorCode + "' ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    Int32.TryParse(aa.ToString(), out res);
                }
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 根据条码号获取AB侧
        /// </summary>
        /// <param name="?"></param>
        /// <returns></returns>
        public static string GetSide(string barcode)
        {
            string res = "";
            try
            {
                //有一检结果的
                string sql = @" select top 1 side from tb_InspectResult where barcode = '" + barcode + "' and InspectTimes = '1' order by createTime desc ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    res = aa.ToString();
                }
                else
                {
                    if (string.IsNullOrWhiteSpace(res))
                    {
                        //没有一检结果,查询老外数据库
                        string sql_foreign = @" 
                                                    DECLARE @barcode varchar(30);
                                                    SET @barcode = '" + barcode + @"';
                                                    SELECT Setvalue_BC_Color_No
                                                      FROM [PRODUCTION_DATA].[dbo].[Paintline_Loadingdata]
                                                      WHERE LTrim(RTrim(Side_1_BC01)) = @barcode
                                                      OR LTrim(RTrim(Side_1_BC02))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC03))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC04))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC05))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC06))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC07))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC08))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC09))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC10))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC11))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC12))= @barcode
                                            ";
                        string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();
                        object bb = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_foreign, null);
                        string colorNo = "";
                        if (bb != null)
                        {
                            colorNo = bb.ToString();
                            if (!string.IsNullOrWhiteSpace(colorNo))
                            {
                                res = "A侧";
                            }
                        }
                        else
                        {
                            string sql_foreign2 = @" 
                                                    DECLARE @barcode varchar(30);
                                                    SET @barcode = '" + barcode + @"';
                                                    SELECT Setvalue_BC_Color_No
                                                      FROM [PRODUCTION_DATA].[dbo].[Paintline_Loadingdata]
                                                      WHERE LTrim(RTrim(Side_2_BC01)) = @barcode
                                                        OR LTrim(RTrim(Side_2_BC02))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC03))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC04))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC05))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC06))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC07))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC08))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC09))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC10))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC11))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC12))= @barcode
                                            ";
                            object cc = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_foreign2, null);
                            string colorNo2 = "";
                            if (cc != null)
                            {
                                colorNo2 = cc.ToString();
                                if (!string.IsNullOrWhiteSpace(colorNo2))
                                {
                                    res = "B侧";
                                }
                            }
                            else
                            {
                                string sql_foreign3 = @" 
                                                    DECLARE @barcode varchar(30);
                                                    SET @barcode = '" + barcode + @"';
                                                    SELECT Setvalue_BC_Color_No
                                                      FROM [PRODUCTION_DATA].[dbo].[Paintline_Proddata]
                                                      WHERE LTrim(RTrim(Side_2_BC01)) = @barcode
                                                        OR LTrim(RTrim(Side_2_BC02))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC03))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC04))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC05))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC06))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC07))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC08))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC09))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC10))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC11))= @barcode
                                                        OR LTrim(RTrim(Side_2_BC12))= @barcode
                                            ";
                                object dd = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_foreign3, null);
                                string colorNo3 = "";
                                if (dd != null)
                                {
                                    colorNo3 = dd.ToString();
                                    if (!string.IsNullOrWhiteSpace(colorNo3))
                                    {
                                        res = "B侧";
                                    }
                                }
                                else
                                {
                                    string sql_foreign4 = @" 
                                                    DECLARE @barcode varchar(30);
                                                    SET @barcode = '" + barcode + @"';
                                                    SELECT Setvalue_BC_Color_No
                                                      FROM [PRODUCTION_DATA].[dbo].[Paintline_Proddata]
                                                      WHERE LTrim(RTrim(Side_1_BC01)) = @barcode
                                                      OR LTrim(RTrim(Side_1_BC02))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC03))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC04))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC05))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC06))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC07))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC08))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC09))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC10))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC11))= @barcode
                                                      OR LTrim(RTrim(Side_1_BC12))= @barcode
                                            ";
                                    object ee = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_foreign4, null);
                                    string colorNo4 = "";
                                    if (ee != null)
                                    {
                                        colorNo4 = ee.ToString();
                                        if (!string.IsNullOrWhiteSpace(colorNo4))
                                        {
                                            res = "A侧";
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }
         

        /// <summary>
        /// 判断条码有效性
        /// </summary>
        /// <param name="barcode"></param>
        /// <returns></returns>
        public static bool BarCodeValid(string barcode)
        { 
            bool res = false;
            if (!string.IsNullOrWhiteSpace(barcode))
            {
                if (barcode.Contains("."))
                {
                    res = true;
                }
                else
                {
                    if (barcode.Length == 20)
                    {
                        res = true;
                    }
                }
            }
            return res;
        }

        /// <summary>
        /// 将二维码转换成相应一维码
        /// </summary>
        /// <param name="barcode"></param>
        /// <returns></returns>
        public static string TransToBarCodeOne(string barcode)
        {
            string res = "";
            try
            {
                string sql = @"
                                SELECT TOP 1 OneBarCode FROM v_Code WHERE BarCode = '" + barcode + @"'
                            ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    res = aa.ToString();
                }
                else
                {
                    string sql2 = @"
                                        select TOP 1 OneBarCode
                                        from [10.60.101.9].[BBMPT].[dbo].[View_BarCode] where BarCode = '" + barcode + @"'
                                    ";
                    object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql2, null);
                    if (bb != null)
                    {
                        res = bb.ToString();
                    }
                }
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 将传入条码统一变成一维码
        /// </summary>
        /// <param name="barcode"></param>
        /// <returns></returns>
        public static string UniteBarCodeToOne(string barcode)
        {
            string res = barcode;
            if (!string.IsNullOrWhiteSpace(barcode))
            {
                if (barcode.Contains("."))
                {
                    res = TransToBarCodeOne(barcode);
                }
            }
            return res;
        }

        public static DataTable GetMesBarCode(string title, string sideNo, out string bcStrs)
        {
            DataTable res = new DataTable();
            bcStrs = "";
            try
            {
                string sql = @" select top 1 Layer from tb_SkidInfo where SkidNo = '" + sideNo + "' order by CreateTime desc ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    string layer = aa.ToString(); //层数

                    string szx = "";  //上中下
                    if (title.Contains("上"))
                    {
                        szx = "上";
                    }
                    else if (title.Contains("中"))
                    {
                        szx = "中";
                    }
                    else if (title.Contains("下"))
                    {
                        szx = "下";
                    }

                    string side = "";
                    if (title.Contains("A"))
                    {
                        side = "A";
                    }
                    else if (title.Contains("B"))
                    {
                        side = "B";
                    }

                    string sqlQuery = @" SELECT des FROM tb_LayerAndBC WHERE layer = '" + layer + "' AND [floor] = '" + szx + "' AND side = '" + side + "' ";
                    object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sqlQuery, null);
                    if(bb != null)
                    {
                        bcStrs = bb.ToString();

                        #region 拼接查询时的列条件
                        string[] bcStr = bcStrs.Split(';');
                        string sqlBcStr = "";
                        for (int i = 0; i < bcStr.Length; i++)
                        {
                            sqlBcStr += bcStr[i] + ",";
                        }
                        sqlBcStr = sqlBcStr.Remove(sqlBcStr.Length - 1); 
                        #endregion

                        string sqlGetBarCode = @" select top 1 ColorInfo, " + sqlBcStr + " from tb_SkidInfo order by CreateTime desc ";
                        res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqlGetBarCode, null);
                    }
                }
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        public static int YiDaMoCiShu(string barcode)
        {
            int res = 0;
            try
            {
                string sql = @"
                                select count(0)
                                from tb_InspectResult
                                where barcode = '" + barcode + @"'
                                and inspectResult like '打磨%'
                            ";
                
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    res = Convert.ToInt32(aa.ToString());
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }
        public static int OtherTimes(string barcode)
        {
            int res = 0;
            try
            {
                string sql = @"
                                select count(0)
                                from tb_InspectResult
                                where barcode = '" + barcode + @"'
                                and inspectResult = '其它'
                            ";

                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    res = Convert.ToInt32(aa.ToString());
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        public static int keHuiPen(string barcode)
        {
            int res = 0;
            try
            {
                string stockNo = "";
                string batchNo = "";
                string partNo = "";
                GetCode(barcode, out stockNo, out batchNo, out partNo);

                string sql = @"
                                select BackPlatingNum
                                from tb_Product
                                where StockNo = '" + stockNo + @"'
                            ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    res = Convert.ToInt32(aa.ToString());
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        #region Temp

        //public static DataTable GetCarTypeAll()
        //{
        //    DataTable res = new DataTable();
        //    try
        //    {
        //        string sql = @" select * from tb_CarType order by CarTypeName ";
        //        res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
        //    }
        //    catch (Exception ex)
        //    {
        //        LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
        //    }
        //    return res;
        //}

        public static DataTable GetCarTypeAll()
        {
            DataTable res = new DataTable();
            try
            {
                string sql = @" select distinct [Type] from tb_PaintColorInfo order by [Type] ";
                res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        /// <summary>
        /// 获得车型
        /// </summary>
        /// <param name="stockNo"></param>
        /// <param name="paintId"></param>
        /// <returns></returns>
        public static string carTypeName(string stockNo, string paintId)
        {
            string res = "";
            try
            {
                string sql = @"SELECT c.CarTypeName FROM dbo.tb_Product p
                                LEFT OUTER JOIN dbo.tb_CarType c
                                ON p.CarTypeID=c.ID 
                                where p.PartNo in (select Paint_No from tb_PaintColorInfo where StockNo='" + stockNo + @"'and PaintID='" + paintId + @"')";
                DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (dt != null && dt.Rows.Count > 0)
                {
                    res = dt.Rows[0]["CarTypeName"].ToString();
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        //        public static DataTable GetColorByCarType(string carTypeID)
        //        {
        //            DataTable res = new DataTable();
        //            try
        //            {
        //                string sql = @" select *
        //                                  from tb_Color
        //                                  where ID in (
        //	                                select ColorID from tb_CarTypeColor where CarTypeID = '" + carTypeID + @"'
        //                                  )  ";
        //                res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
        //            }
        //            catch (Exception ex)
        //            {
        //                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
        //            }
        //            return res;
        //        }

        public static DataTable GetColorByType(string type)
        {
            DataTable res = new DataTable();
            try
            {
                string sql = @" select Color
                                  from tb_PaintColorInfo 
                                  where [Type] = '" + type + @"'
                                  order by [Color]  ";
                res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        public static int SavePaintLoad(string barcode, string colorName)
        {
            int res = 0;
            try
            {
                string sql = @" insert into tb_PaintLoad(ID, barcode, ColorName) values((select newID()), '" + barcode + @"', '" + colorName + @"') ";
                res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        #endregion

        public static int SaveChainUp(string barcode, string carTypeID, string carType, string colorID, string color, string flag)
        {
            int res = 0;
            try
            {
                string sql = @"
                                INSERT INTO tb_ChainUp
                                               ([ID]
                                               ,[barcode]
                                               ,[carTypeID]
                                               ,[carType]
                                               ,[colorID]
                                               ,[color]
                                               ,[flag])
                                         VALUES
                                               ((select newid())
                                               ,'" + barcode + @"'
                                               ,'" + carTypeID + @"'
                                               ,'" + carType + @"'
                                               ,'" + colorID + @"'
                                               ,'" + color + @"'
                                               ," + flag + @")
                            ";
                res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        public static bool InspectPass(string barcode)
        {
            bool res = false;
            try
            {
                string sql = @"
                                select top 1 inspectResult from tb_InspectResult where barcode = '"+ barcode +@"' order by createTime desc
                            ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    string result = aa.ToString();
                    if (aa.ToString() == "合格")
                    {
                        res = true;
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        public static string GetWorkClassTime()
        {
            string res = "";
            try
            {
                //bool classA = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 08:00:00", "2019-06-12 20:00:00");
                //if (classA)
                //{
                //    return ("createTime between '" + DateTime.Now.ToString("yyyy-MM-dd") + " 08:00:00' and '" + DateTime.Now.ToString("yyyy-MM-dd") + " 20:00:00'");
                //}
                //else
                //{
                //    bool isYesterday = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 00:00:00", "2019-06-12 07:59:59");
                //    if (isYesterday)
                //    {
                //        return ("createTime between '" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 20:00:00' and '" + DateTime.Now.ToString("yyyy-MM-dd") + " 07:59:59' ");
                //    }
                //    bool isToday = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 20:00:00", "2019-06-12 23:59:59");
                //    if (isToday)
                //    {
                //        return ("createTime between '" + DateTime.Now.ToString("yyyy-MM-dd") + " 20:00:00' and '" + DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") + " 07:59:59' ");
                //    }
                //}
                bool classA = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 06:00:00", "2019-06-12 18:00:00");
                if (classA)
                {
                    return ("createTime between '" + DateTime.Now.ToString("yyyy-MM-dd") + " 06:00:00' and '" + DateTime.Now.ToString("yyyy-MM-dd") + " 18:00:00'");
                }
                else
                {
                    bool isYesterday = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 00:00:00", "2019-06-12 05:59:59");
                    if (isYesterday)
                    {
                        return ("createTime between '" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 18:00:00' and '" + DateTime.Now.ToString("yyyy-MM-dd") + " 05:59:59' ");
                    }
                    bool isToday = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 18:00:00", "2019-06-12 23:59:59");
                    if (isToday)
                    {
                        return ("createTime between '" + DateTime.Now.ToString("yyyy-MM-dd") + " 18:00:00' and '" + DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") + " 05:59:59' ");
                    }
                }

            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        public static string GetChainCountAll()
        {
            string res = "0";
            try
            {
                string sql = @"
                                select count(0)
                                from tb_ChainUp
                                where 
                            ";
                string condition = GetWorkClassTime();
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql + condition, null);
                if (aa != null)
                {
                    res = aa.ToString();
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        public static string GetChainCountDown()
        {
            string res = "0";
            try
            {
                string sql = @"
                                select top 1 createTime
                                  from [tb_ChainUp]
                                  where IsLast = 1
                                  order by createTime desc
                            ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    string stime = aa.ToString();
                    string sql_num = @" select count(0) from tb_ChainUp where createTime >= '" + stime + @"' and createTime <= getdate() and flag = 1 ";
                    object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql_num, null);
                    if (bb != null)
                    {
                        res = bb.ToString();
                    }
                }
                else
                {
                    //string stime = DateTime.Now.ToString("yyyy-MM-dd");
                    //string starttime_sql = " select top 1 value from tb_Config where name = 'PaintChainStartTime' ";
                    //object cc = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, starttime_sql, null);
                    //if (cc != null)
                    //{
                    //    stime += " " + cc.ToString();
                    //}
                    //string sql_num = @" select count(0) from tb_ChainUp where createTime >= '" + stime + @"' and createTime <= getdate() and flag = 1 ";
                    //object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql_num, null);
                    //if (bb != null)
                    //{
                    //    res = bb.ToString();
                    //}
                    string sql1 = @"
                                select count(0)
                                from tb_ChainUp
                                where 
                            ";
                    string condition = GetWorkClassTime();
                    object cc = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql1 + condition + " and flag = 1 ", null);
                    if (cc != null)
                    {
                        res = cc.ToString();
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }
        public static string GetChainCountDown2()
        {
            string res = "0";
            try
            {
               
                    string sql1 = @"
                                select count(0)
                                from tb_ChainDown
                                where 
                            ";
                    string condition = GetWorkClassTime();
                    object cc = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql1 + condition , null);
                    if (cc != null)
                    {
                        res = cc.ToString();
                    }
                
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }
        public static DataTable GetChainCountLabel()
        {
            DataTable res = new DataTable();
            try
            {
                string timeWhere = GetWorkClassTime();
                string sql = @"
                                select count(0) num,carType,color,carType+char(13)+char(10)+color+char(13)+char(10)+Convert(varchar(10),count(0)) colDes
                                from tb_ChainUp
                                where " + timeWhere + @" 
								group by carType,color
                            ";
                res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        public static bool IsHyundai(string barcode)
        {
            bool res = false;
            try
            {
                string stockNo = "", batchNo = "", partNo = "";
                GetCode(barcode, out stockNo, out batchNo, out partNo);

                string sql = @" select ManufacturerName 
                                  from tb_Manufacturer
                                  where ID = (
	                                select ManufacturerID
	                                from tb_CarType
	                                where ID = (
		                                select CarTypeID
		                                from tb_Product
		                                where StockNo = '" + stockNo + @"'
	                                )
                                  )
                                ";
                object aa = SqlHelper.ExecuteScalar(sql, CommandType.Text, sql, null);
                if (aa != null)
                {
                    string cj = aa.ToString();
                    if (cj.Trim() == "现代")
                    {
                        res = true;
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }


        #region 新
        /// <summary>
        /// 根据一检结果显示一检时的位置
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static string GetFirstInsPosition2(DataTable dt)
        {
            string res = "";
            try
            {
                if (dt != null && dt.Rows.Count > 0)
                {
                    DataRow[] dr = dt.Select(" InspectTimes = '1' ");
                    if (dr != null && dr.Length > 0)
                    {
                        string position = dr[0]["position"].ToString();

                        string sql = @" select value from tb_Config where name = 'RemoveStr' ";
                        object objStr = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                        if (objStr != null)
                        {
                            res = position.Replace(objStr.ToString(), "").Trim();
                        }
                    }
                }
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        /// <summary>
        /// 根据条码获取检验信息
        /// </summary>
        /// <param name="barcode"></param>
        /// <returns></returns>
        public static DataTable GetInspectInfoByBarCode2(string barcode)
        {
            DataTable res = new DataTable();
            try
            {
                //string sql = @" select * from (SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '1' ORDER BY createTime DESC) aa
                //                 UNION
                //                 SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '2' ORDER BY createTime DESC) bb
                //                 UNION
                //                 SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '3' ORDER BY createTime DESC) cc) dd order by createTime DESC ";
                string sql = @" select * from (SELECT * from (select TOP 30  * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '1' ORDER BY createTime DESC) aa
                                 UNION
                                 SELECT * from (select  TOP 30 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '2' ORDER BY createTime DESC) bb
                                 UNION
                                 SELECT * from (select  TOP 30 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '3' ORDER BY createTime DESC) cc) dd order by createTime DESC ";
                res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                LogHelper.WriteSysLogBase("[sql:]" + sql, MethodBase.GetCurrentMethod().Name);
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        } 

        /// <summary>
        /// 查询补打条码信息
        /// </summary>
        /// <param name="barcode"></param>
        /// <returns></returns>
        public static string GetReprintInfo2(string barcode)
        {
            string res = "";
            try
            {
                if (!string.IsNullOrWhiteSpace(barcode))
                {
                    string sql = @" 
                                    SELECT ProductID, StockNo, ColorDes,(SELECT ProductName FROM tb_Product WHERE ProductID =(SELECT top 1 ProductID FROM tb_PaintBarCode WHERE OneBarCode = '" + barcode + "')) ProductName  FROM tb_PaintBarCode WHERE OneBarCode = '" + barcode + "' ";
                    DataTable aa = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                    if (aa != null && aa.Rows.Count > 0)
                    {
                        res = aa.Rows[0]["ColorDes"].ToString() + "," + aa.Rows[0]["ProductName"].ToString();
                    }
                }
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }
        public static int DelInspectRst(string id)
        {
            int res = 0;
            try
            {
                string sql = $"delete from tb_InspectResult where id ='{id}'";
                res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                return res;
            }
            catch(Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }
        /// <summary>
        /// 保存检验结果
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static string InsertInspect2(InspectModel model)
        {
            int res = 0;
            try
            {
                string sql = @" INSERT INTO [dbo].[tb_InspectResult]
                                                   (
                                                   [barcode]
                                                   ,[side]
                                                   ,[position]
                                                   ,[stationNo]
                                                   ,[workClass]
                                                   ,[inspectResult]
                                                   ,[damnPosition]
                                                   ,[defectID]
                                                   ,[reason]
                                                   ,[productInfo]
                                                   ,[productOption]
                                                   ,[createTime]
                                                   ,[InspectTimes]
                                                   ,[remark1]
                                                   ,[remark2]
                                                   ,[remark3] 
                                                   ,[CarType]
                                                   ,[AddMan]
                                                   )
                                             VALUES
                                                   ('" + model.barcode + @"'
                                                   ,'" + model.side + @"'
                                                   ,'" + model.position + @"'
                                                   ,'" + model.stationNo + @"'
                                                   ,'" + model.workClass + @"'
                                                   ,'" + model.inspectResult + @"'
                                                   ,'" + model.damnPosition + @"'
                                                   ,'" + model.defectID + @"'
                                                   ,'" + model.reason + @"'
                                                   ,'" + model.productInfo + @"'
                                                   ,'" + model.productOption + @"'
                                                   ,(select getdate()), '" + model.InspectTimes + @"'
                                                   ,'" + model.remark1 + @"'
                                                   ,'" + model.remark2 + @"'
                                                   ,'" + model.remark3 + @"'
                                                   ,'" + model.CarType + @"'
                                                   ,'" + model.AddMan + @"'
                                                  );select @@Identity  ";
                //res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                DataTable dt= SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (dt.Rows.Count > 0)
                {
                    return dt.Rows[0][0].ToString();
                }
                LogHelper.WriteSysLogBase("[sql:]" + sql, MethodBase.GetCurrentMethod().Name);
                return "";
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return "";
            }
        }

        public static string GetProductInfo2(string barcode,ref string errorMsg)
        {
            string res = "";
            //string colorNo = "";
            //string colorQQNo = "";
            //string colorPRNo = "";
            string colorInfo = "", paintCode = "", paintID = "";
            string barCode1_1 = "", barCode1_2 = "", barCode1_3 = "", barCode1_4 = "", barCode1_5 = "", barCode1_6 = "",
                    barCode2_1 = "", barCode2_2 = "", barCode2_3 = "", barCode2_4 = "", barCode2_5 = "", barCode2_6 = "";
            string columnName = "", side = "";
            try
            {
                DataTable dt1 = GetLastResult(barcode);
                if (dt1 != null && dt1.Rows.Count > 0)
                {
                    colorInfo = dt1.Rows[0]["productInfo"].ToString() + "," + dt1.Rows[0]["remark3"].ToString();
                }
                else
                {
                    #region 从老外系统获得颜色信息

                    string sql = @" 
                                            DECLARE @barcode varchar(30);
                                            SET @barcode = '" + barcode + @"';
                                            SELECT paintcode,
													LTrim(RTrim(Side1_Data1)) as Side1_Data1,
													LTrim(RTrim(Side1_Data2)) as Side1_Data2,
													LTrim(RTrim(Side1_Data3)) as Side1_Data3,
													LTrim(RTrim(Side1_Data4)) as Side1_Data4,
													LTrim(RTrim(Side1_Data5)) as Side1_Data5,
													LTrim(RTrim(Side1_Data6)) as Side1_Data6,
													LTrim(RTrim(Side2_Data1)) as Side2_Data1,
													LTrim(RTrim(Side2_Data2)) as Side2_Data2,
													LTrim(RTrim(Side2_Data3)) as Side2_Data3,
													LTrim(RTrim(Side2_Data4)) as Side2_Data4,
													LTrim(RTrim(Side2_Data5)) as Side2_Data5,
													LTrim(RTrim(Side2_Data6)) as Side2_Data6
                                              FROM [dbo].[Skiddata_Unloading]
                                              WHERE LTrim(RTrim(Side1_Data1)) = @barcode
                                              OR LTrim(RTrim(Side1_Data2))= @barcode
                                              OR LTrim(RTrim(Side1_Data3))= @barcode
                                              OR LTrim(RTrim(Side1_Data4))= @barcode
                                              OR LTrim(RTrim(Side1_Data5))= @barcode
                                              OR LTrim(RTrim(Side1_Data6))= @barcode
                                              OR LTrim(RTrim(Side2_Data1)) = @barcode
                                              OR LTrim(RTrim(Side2_Data2))= @barcode
                                              OR LTrim(RTrim(Side2_Data3))= @barcode
                                              OR LTrim(RTrim(Side2_Data4))= @barcode
                                              OR LTrim(RTrim(Side2_Data5))= @barcode
                                              OR LTrim(RTrim(Side2_Data6))= @barcode
                                        ";
                    string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();
                    //object aa = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql, null);
                    DataTable dtColor = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, sql, null);


                    if (dtColor != null && dtColor.Rows.Count > 0)
                    {
                        paintCode = dtColor.Rows[0]["paintcode"].ToString();
                    }
                    else
                    {
                        errorMsg = $"ForeignDB 没有条码[{barcode}]对应的数据";
                    }

                    //根据颜色代码查颜色

                    if (!string.IsNullOrWhiteSpace(paintCode) && paintCode.ToLower() != "na")
                    {
                        DataTable dt = new DataTable();
                        string sql_c = "";
                        sql_c = @"select * from tb_PaintInfo where PaintCode='" + paintCode + @"'";

                        dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql_c, null);
                        if (dt != null && dt.Rows.Count > 0)
                        {
                            //res = dt.Rows[0]["ColorName"].ToString();
                            //colorInfo = dt.Rows[0]["Des"].ToString().Trim() + "," +
                            //            dt.Rows[0]["ColorCode"].ToString().Trim() + "," +
                            //            dt.Rows[0]["ColorNo"].ToString().Trim();
                            //colorInfo = dt.Rows[0]["ColorName"].ToString();
                            paintID = dt.Rows[0]["ID"].ToString();
                        }
                        else
                        {
                            errorMsg = $"基础数据-油漆信息管理页面未配置油漆代码为{paintCode}的基础数据";
                        }

                        string sql_1 = @"select Color from tb_PaintColorInfo where StockNo='" + barcode.Substring(0, 10) + @"' and PaintID='" + paintID + @"'";
                        DataTable dt_1 = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql_1, null);
                        if (dt_1 != null && dt_1.Rows.Count > 0)
                        {
                            colorInfo = dt_1.Rows[0]["Color"].ToString();
                        }
                        else
                        {
                            errorMsg = $"基础数据-产品颜色页面未配置存货代码代码为{barcode.Substring(0, 10)},油漆代码为[{paintCode}]的基础数据";
                        }
                    }

                    #endregion

                    barcode = UniteBarCodeToOne(barcode);

                    #region 根据条码查询产品信息

                    string stockNo = "";
                    string batchNo = "";
                    string partNo = "";


                    Function.GetCode(barcode, out stockNo, out batchNo, out partNo);

                    string productName = "";
                    GetInfoByStockNo2(stockNo, out partNo, out productName);

                    #endregion

                    colorInfo = colorInfo + "," + productName + "," + paintID;
                }

                res = colorInfo;
                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }

        public static string GetWorkClass2()
        {
            //bool classA = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 08:00:00", "2019-06-12 20:00:00");
            bool classA = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.ToString("yyyy-MM-dd") + " 07:45:00", DateTime.Now.ToString("yyyy-MM-dd") + " 19:45:00");
            if (classA)
            {
                return "A班";
            }
            else
            {
                return "B班";
            }
        }

        /// <summary>
        /// 根据存货代码获得零件名称、颜色名称
        /// </summary>
        /// <param name="stockNo"></param>
        /// <param name="partName"></param>
        /// <param name="colorName"></param>
        public static void GetInfoByStockNo2(string stockNo, out string partNo, out string partName)
        {
            partNo = "";
            partName = "";
            string sql = "";
            try
            {
                DataTable dt = new DataTable();
                if (!string.IsNullOrWhiteSpace(stockNo))
                {
                    sql = " select ProductName,PartNo from tb_Product where StockNo = '" + stockNo + @"' ";
                    dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                }
                if (dt != null && dt.Rows.Count > 0)
                {
                    partName = dt.Rows[0]["ProductName"].ToString();
                    partNo = dt.Rows[0]["PartNo"].ToString();
                }
                else
                {
                    partName = "";
                    partNo = "";
                }
                LogHelper.WriteSysLogBase("[入参]:stockNo=" + stockNo + "; [出参:]partName=" + partName + "partName=" + partNo + ";[sql:] + sql", MethodBase.GetCurrentMethod().Name);
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
        }
        public static DataTable GetColorByStockNo(string stockNo)
        {
            DataTable res = new DataTable();
            try
            {
                string pId = "";
                //                string sql = @" 
                //                                      select distinct Color 
                //                                      from tb_PaintColorInfo
                //                                      where stockNo = '" + stockNo + @"'
                //                            ";
                string sql = @" 
                                      select Color 
                                      from tb_PaintColorInfo
                                      where stockNo = '" + stockNo + @"'
                            ";
                return SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                //if (dt != null && dt.Rows.Count > 0)
                //{
                //    for (int i = 0; i < dt.Rows.Count; i++)
                //    {
                //        pId = dt.Rows[i]["PaintID"].ToString();
                //    }
                //}

                //if (!string.IsNullOrWhiteSpace(pId)&&pId.Contains(','))
                //{
                //    if (pId.Contains(','))
                //    {
                //        string[] s_pid = pId.Split(',');
                //        pId = s_pid[0];
                //    }
                //}

                //string cSql = @"select ColorName from tb_PaintInfo where ID='" + pId + @"'";
                //res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, cSql, null);
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        public static int GetInspectTimes(string barcode)
        {
            try
            {
                int res = 0;

                string sql = @"select top 1 InspectTimes from tb_InspectResult where barcode='" + barcode + @"' order by ID desc ";
                DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (dt != null && dt.Rows.Count > 0)
                {
                    res = Convert.ToInt32(dt.Rows[0]["InspectTimes"]);
                }

                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return 0;
            }
        }

        public static string GetImgPath()
        {
            string res = "";
            try
            {
                string sql_imgPath = " select top 1 value from tb_Config where name = 'ImgPath' ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql_imgPath, null);
                if (aa != null)
                {
                    res = aa.ToString();
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
            }
            return res;
        }

        /// <summary>
        /// 根据条码号获取AB侧+支架位置
        /// </summary>
        /// <param name="barcode"></param>
        /// <returns></returns>
        public static string GetSide(string barCode, string paintId)
        {
            string res = "", stockNo = "", productId = "";
            int layers = 0;
            string columnName = "", side = "", floor = "";
            try
            {
                //有一检结果的
                string sql = @" select top 1 side from tb_InspectResult where barcode = '" + barCode + "'  order by createTime desc ";
                object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
                if (aa != null)
                {
                    res = aa.ToString();
                }
                else
                {
                    if (string.IsNullOrWhiteSpace(res))
                    {
                        //没有一检结果,查询产品是几层、几侧的产品

                        #region 判断是一维码还是二维码

                        if (barCode.Contains(".") == false)
                        {
                            //一维码
                            if (barCode.Length > 10)
                            {
                                stockNo = barCode.Substring(0, 10);
                            }
                        }
                        else
                        {
                            //二维码
                            //string[] strs = barCode.Split('.');
                            //if (strs.Length > 0)
                            //{
                            //    partNo = strs[0];
                            //}
                        }

                        #endregion

                        string sql1 = "";

                        if (!string.IsNullOrWhiteSpace(stockNo))
                        {
                            //sql1 = @"select Layers,ProductID from tb_Product where StockNo='" + stockNo + @"'";
                            sql1 = @"SELECT ProductID FROM dbo.tb_Product WITH (NOLOCK)
                                    WHERE PartNo IN(select Paint_No from tb_PaintColorInfo WITH (NOLOCK) where StockNo='" + stockNo + @"' and PaintID='" + paintId + @"')";
                            DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql1, null);
                            if (dt != null && dt.Rows.Count > 0)
                            {
                                productId = dt.Rows[0]["ProductID"].ToString();
                            }
                        }


                        #region 取消从存储过程中获取列

                        //string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();
                        ////DataTable dtColor = SqlHelper.GetDataDateTable(sqlConnString, CommandType.StoredProcedure, "P_SYSTEM_FindData", param);

                        //SqlParameter[] param = new SqlParameter[1];
                        //param[0] = new SqlParameter("@value", SqlDbType.VarChar);
                        //param[0].Value = barcode;

                        //DataTable dtC = SqlHelper.GetDataDateTable(sqlConnString, CommandType.StoredProcedure, "P_SYSTEM_FindData", param);
                        //if (dtC != null && dtC.Rows.Count > 0)
                        //{
                        //    columnName = dtC.Rows[0]["columnname"].ToString();
                        //}

                        #endregion 

                        #region 从老外系统获得列名

                        string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();
                        string strSql1 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                  WHERE LTrim(RTrim(Side1_Data1)) = '" + barCode + @"' order by TimeStamp desc";

                        DataTable dt1 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql1, null);
                        if (dt1 != null && dt1.Rows.Count > 0)
                        {
                            columnName = "Side1_Data1";
                        }
                        else
                        {
                            string strSql2 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                  WHERE LTrim(RTrim(Side1_Data2)) = '" + barCode + @"' order by TimeStamp desc";

                            DataTable dt2 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql2, null);
                            if (dt2 != null && dt2.Rows.Count > 0)
                            {
                                columnName = "Side1_Data2";
                            }
                            else
                            {
                                string strSql3 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                  WHERE LTrim(RTrim(Side1_Data3)) = '" + barCode + @"' order by TimeStamp desc";

                                DataTable dt3 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql3, null);
                                if (dt3 != null && dt3.Rows.Count > 0)
                                {
                                    columnName = "Side1_Data3";
                                }
                                else
                                {
                                    string strSql4 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                  WHERE LTrim(RTrim(Side1_Data4)) = '" + barCode + @"' order by TimeStamp desc";

                                    DataTable dt4 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql4, null);
                                    if (dt4 != null && dt4.Rows.Count > 0)
                                    {
                                        columnName = "Side1_Data4";
                                    }
                                    else
                                    {
                                        string strSql5 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                  WHERE LTrim(RTrim(Side1_Data5)) = '" + barCode + @"' order by TimeStamp desc";

                                        DataTable dt5 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql5, null);
                                        if (dt5 != null && dt5.Rows.Count > 0)
                                        {
                                            columnName = "Side1_Data5";
                                        }
                                        else
                                        {
                                            string strSql6 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                        WHERE LTrim(RTrim(Side1_Data6)) = '" + barCode + @"' order by TimeStamp desc";

                                            DataTable dt6 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql6, null);
                                            if (dt6 != null && dt6.Rows.Count > 0)
                                            {
                                                columnName = "Side1_Data6";
                                            }
                                            else
                                            {
                                                string strSql7 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                            WHERE LTrim(RTrim(Side2_Data1)) = '" + barCode + @"' order by TimeStamp desc";

                                                DataTable dt7 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql7, null);
                                                if (dt7 != null && dt7.Rows.Count > 0)
                                                {
                                                    columnName = "Side2_Data1";
                                                }
                                                else
                                                {
                                                    string strSql8 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                                WHERE LTrim(RTrim(Side2_Data2)) = '" + barCode + @"' order by TimeStamp desc";

                                                    DataTable dt8 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql8, null);
                                                    if (dt8 != null && dt8.Rows.Count > 0)
                                                    {
                                                        columnName = "Side2_Data2";
                                                    }
                                                    else
                                                    {
                                                        string strSql9 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                                    WHERE LTrim(RTrim(Side2_Data3)) = '" + barCode + @"' order by TimeStamp desc";

                                                        DataTable dt9 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql9, null);
                                                        if (dt9 != null && dt9.Rows.Count > 0)
                                                        {
                                                            columnName = "Side2_Data3";
                                                        }
                                                        else
                                                        {
                                                            string strSql10 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                                        WHERE LTrim(RTrim(Side2_Data4)) = '" + barCode + @"' order by TimeStamp desc";

                                                            DataTable dt10 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql10, null);
                                                            if (dt10 != null && dt10.Rows.Count > 0)
                                                            {
                                                                columnName = "Side2_Data4";
                                                            }
                                                            else
                                                            {
                                                                string strSql11 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                                            WHERE LTrim(RTrim(Side2_Data5)) = '" + barCode + @"' order by TimeStamp desc";

                                                                DataTable dt11 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql11, null);
                                                                if (dt11 != null && dt11.Rows.Count > 0)
                                                                {
                                                                    columnName = "Side2_Data5";
                                                                }
                                                                else
                                                                {
                                                                    string strSql12 = @"select top 1 TimeStamp FROM [BMPT_BJ1_Paintlinedata].[dbo].[Skiddata_Unloading]
                                                                WHERE LTrim(RTrim(Side2_Data6)) = '" + barCode + @"' order by TimeStamp desc";

                                                                    DataTable dt12 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, strSql12, null);
                                                                    if (dt12 != null && dt12.Rows.Count > 0)
                                                                    {
                                                                        columnName = "Side2_Data6";
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        #endregion

                        #region 根据列名和层获取支架位置

                        string sql2 = @"select floor,side from tb_LayerAndBC where des like '%" + columnName +
                                      @"%' and ProductId='" + productId + @"'";

                        DataTable dtZ = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql2, null);
                        if (dtZ != null && dtZ.Rows.Count > 0)
                        {
                            floor = dtZ.Rows[0]["floor"] + "支架";
                            side = dtZ.Rows[0]["side"] + "侧";
                        }

                        #endregion

                        res = side + ";" + floor;
                    }
                }

                return res;
            }
            catch (Exception ex)
            {
                LogHelper.WriteLogManager(ex);
                LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
                return res;
            }
        }
        #endregion

    }

}