using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.Diagnostics.Eventing.Reader;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using MESClassLibrary.BLL;
using MESClassLibrary.BLL.BasicInfo;
using MESClassLibrary.BLL.Injection;
using MESClassLibrary.BLL.Inspection;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.BLL.Mistake247;
using MESClassLibrary.BLL.Weight;
using MESClassLibrary.DAL;
using MESClassLibrary.Model;
using OPCAutomation;
using System.IO;
using System.IO.Ports;
using System.Net.Mime;
using System.Net.NetworkInformation;
using gregn6Lib;
using MESClassLibrary;
using MESClassLibrary.EFModel;

namespace InjectionPC
{
    public partial class FrmMain2408 : Form
    {
        #region 变量

        private string strHostIP;
        private string strHostName;
        private OPCServer opcServer;
        private OPCGroups opcGroups;
        private OPCGroup opcGroup1;
        private OPCItems opcItems1;
        private OPCItem[] opcItemm1;
        private OPCGroup opcGroup2;
        private OPCItems opcItems2;
        private OPCItem[] opcItemm2;
        private string[] ItemIDs;
        object ItemValues;
        object Qualities;
        object TimeStamps;
        public bool Connected = false;
        private BasicBLL1 _basicBLL1 = new BasicBLL1();
        private UniqueBll _uniqueBll = new UniqueBll();
        private bool _isPrintPackage = true;
        private BarCodeBLL _barCodeBLL = new BarCodeBLL();
        private InjectionBoxBLL _injectionBoxBLL = new InjectionBoxBLL();
        private DataTable  tb_Plastic = new DataTable();
        private string _currentStationID = string.Empty;
        private const string _leftType = "0"; //模具1
        private const string _rightType = "1";//模具2
        private DateTime _loginTime = DateTime.Now;
        private string _lastBoxNoL = string.Empty;
        private string _lastBoxNoR = string.Empty;
        private WmsBLL _wmsBll = new WmsBLL(); 
        bool _isLoad = false;
        //零件用的打印机编号  <零件号+工位ID,打印机编号>
        private Dictionary<string, string> _printNameDict = new Dictionary<string, string>();
        private PlasticBLL _plasticBLL = new PlasticBLL();
        #endregion

        public FrmMain2408()
        {
            InitializeComponent();
            this.Size = new Size(1280, 920);
        }

        public string planID = "", productID = "", nextPlanID = "", nextproductID = "",aa="";
       // public string newPlanID = "";
        public static int ID = 0;
        DateTime lastTime = DateTime.Now;
        //public string Conn = ConfigurationManager.ConnectionStrings["SqlConnStringWeight"].ConnectionString;

        bool status = false;

        private static int InterVal_Seconds = 0;

        private void FrmMain_Load(object sender, EventArgs e)
        {
            try
            {
                _currentStationID = getStationID(Program.station);
                tb_Plastic = GetPlastic();
                Control.CheckForIllegalCrossThreadCalls = false;
                //this.WindowState = FormWindowState.Maximized;
                Thread t = new Thread(new ThreadStart(TimeGo));
                t.Start();
                timer1.Interval = Program.interVal;
                timer1.Enabled=false;
                panel44.Visible = false;
                panel45.Visible = false;
                textBox4.Text = "";
                textBox3.Text = "";
                label6.Text = Program.station;          //工位
                label8.Text = Program.OperatorName;     //用户
                //InterVal_Seconds = GetSeconds(label6.Text);
                GetClass();
                comboBox1.Text = "A班";          //班次
                Program.cc = comboBox1.Text;
                initProduct();
                textBox1.Text = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) +
                                Program.ProductDate.Substring(8, 2);     //批次
                initBarCode();
                label23.Enabled = false;
                label23.BackColor = System.Drawing.Color.Gray;

                DataTable plasticTable = GetPlastic();
                foreach(DataRow dr in plasticTable.Rows)
                {
                    string key = dr["PartNo"].ToString() + dr["StationID"].ToString();
                    if (_printNameDict.Keys.Contains(key) == false)
                    {
                        _printNameDict.Add(key, dr["PrinterNo"].ToString());
                    }
                }

                InitPackageInfo();

                Ping p1 = new Ping();

                PingReply reply = p1.Send("10.60.101.60"); //发送主机名或Ip地址
                StringBuilder sbuilder;
                if (reply.Status == IPStatus.Success)
                {
                    status = true;
                    label2.BackColor = Color.LightGray;
                }
                else
                {
                    status = false;
                    label2.BackColor = Color.Red;
                }

                //comBoxSizeL.DataSource = _basicBLL1.GetPackageSize();
                //comBoxSizeL.DisplayMember = "describe";
                //comBoxSizeL.ValueMember = "Count";
                //comBoxSizeR.DataSource = _basicBLL1.GetPackageSize();
                //comBoxSizeR.DisplayMember = "describe";
                //comBoxSizeR.ValueMember = "Count";




                comboBox2.MouseWheel += new MouseEventHandler(comboBox2_MouseWheel);

                #region 获取当前生产信息

                initPlan();

                #endregion

                #region 测试opc暂时注销
                //if (ConfigurationManager.AppSettings["StationMode"].ToString() == "1")   //自动称重
                //{
                //    timer1.Start();
                //}
                //else
                //{
                //    timer1.Stop();

                //    #region 设置串口属性

                //    serialPort1.PortName = ConfigurationManager.AppSettings["PortName"].ToString();
                //    serialPort1.BaudRate = 9600;
                //    serialPort1.DataBits = 8;
                //    serialPort1.StopBits = (StopBits)1;
                //    serialPort1.Parity = 0;
                //    serialPort1.ReadTimeout = 5000;

                //    if (serialPort1.IsOpen)
                //    {
                //        serialPort1.Close();
                //        serialPort1.Open();
                //    }
                //    else
                //    {
                //        serialPort1.Open();
                //    }

                //    #endregion
                //} 
                #endregion

                #region 连接PLC 

                try
                {
                    if (CreateServer())
                    {
                        if (ConnectServer(strHostIP, "Kepware.KEPServerEX.V6"))
                        {
                            Connected = true;

                            #region 创建组

                            opcGroups = opcServer.OPCGroups;
                            opcGroup1 = opcGroups.Add("Mould");
                            SetGroupProperty(opcGroup1, 500);
                            opcGroup2 = opcGroups.Add("Break");
                            SetGroupProperty(opcGroup2, 500);

                            #endregion

                            #region 创建项

                            opcItems1 = opcGroup1.OPCItems;
                            opcItems1.DefaultIsActive = true;

                            PLCMouldBLL PLCbll = new PLCMouldBLL();
                            PLCBreakBLL bbll = new PLCBreakBLL();

                            DataTable PLCdt = PLCbll.SearchMould(Program.station);
                            if (PLCdt != null && PLCdt.Rows.Count > 0)
                            {
                                opcItemm1 = new OPCItem[PLCdt.Rows.Count];
                                for (int i = 0; i < PLCdt.Rows.Count; i++)
                                {
                                    opcItemm1[i] = opcItems1.AddItem(PLCdt.Rows[i]["Address"].ToString(), i);
                                }
                            }

                            Thread.Sleep(200);

                            opcGroup1.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup1_DataChange);

                            #endregion
                        }
                        else
                        {
                            MessageBox.Show("连接到OPC服务器失败!", "提示", MessageBoxButtons.OK);
                            Connected = false;
                            LogHelper.WriteLog("连接到OPC服务器失败!");
                            return;
                        }
                    }
                    else
                    {
                        MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK);
                        Connected = false;
                        LogHelper.WriteLog("创建OPC服务失败!");
                        return;
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK);
                    Connected = false;
                    LogHelper.WriteLog("创建OPC服务失败!");
                    LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                    return;
                }
               

                #endregion
               
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
            finally
            {
                _isLoad = true;
                comBoxSizeL.SelectedValueChanged += comBoxSizeL_SelectedValueChanged;
                comBoxSizeR.SelectedValueChanged += comBoxSizeR_SelectedValueChanged;
              
            }

        }

        private DataTable GetPlastic()
        { 
            return _plasticBLL.SearchAllInfo(_currentStationID);
        }

        List<string> _lastParts = new List<string>();
        private void initPlan()
        {
            try
            {
                InjectionPlanBLL bll = new InjectionPlanBLL();
                ProductBLL productBll = new ProductBLL();
                DataTable dt = bll.SearchInfoByName(Program.station);
                if (dt != null && dt.Rows.Count > 0)
                {
                    planID = dt.Rows[0]["InjectionPlanID"].ToString();
                    aa = dt.Rows[0]["PartNo"].ToString();
                    label17.Text = dt.Rows[0]["PlanCount"].ToString();
                    string actualTime = dt.Rows[0]["ActualTime"].ToString();
                    if (string.IsNullOrEmpty(actualTime))
                    {
                        InjectionPlanBLL ibll = new InjectionPlanBLL();
                        ibll.UpdatePlanStartTime(planID);
                    }
                    DataTable dt2 = bll.SearchQty(planID);
                    if (dt2 != null && dt2.Rows.Count > 0)
                    {
                        label27.Text = dt2.Rows[0]["ProductCount"].ToString();
                    }
                    else
                    {
                        label27.Text = "0";
                    }

                    string[] partNo = dt.Rows[0]["PartNo"].ToString().Split(',');

                    label12.Text = "当前生产计划为:";
                     
                    for (int i = 0; i < partNo.Length; i++)
                    {
                        DataTable sdt = productBll.SearchInfoByPartNo(partNo[i].ToString().Trim());
                        if (sdt != null && sdt.Rows.Count > 0)
                        {
                            label12.Text += "零件号" + partNo[i].ToString().Trim() + ",零件名称" + sdt.Rows[0]["ProductName"].ToString() + ";";
                        
                        
                        }
                       

                        if (!string.IsNullOrEmpty(partNo[i].ToString().Trim()))
                        {
                            if (_lastParts.Contains(partNo[i].ToString().Trim()) == false)
                            {
                                string currentSize = string.Empty;
                                List<string> list = GetProductBoxSize(partNo[i].ToString().Trim(), ref currentSize);

                                if (i == 0)
                                {
                                    comBoxSizeL.DataSource = list;
                                    comBoxSizeL.SelectedItem = currentSize;
                                    _selectItemL = currentSize;
                                    int j = 0;
                                    int.TryParse(currentSize, out j);
                                    if (j > 0)
                                    {
                                        lbNeedQtyL.Text = j.ToString();
                                    }
                                }
                                else
                                {
                                    comBoxSizeR.DataSource = list;
                                    comBoxSizeR.SelectedItem = currentSize;
                                    _selectItemR = currentSize;
                                    int j = 0;
                                    int.TryParse(currentSize, out j);
                                    if (j > 0)
                                    {
                                        lbNeedQtyR.Text = j.ToString();
                                    }
                                }
                            }
                        }
                        
                        if(_lastParts.Contains(partNo[i].ToString().Trim()) == false)
                        {
                            _lastParts.Add(partNo[i].ToString().Trim());
                        }
                    }
                }
                else
                {
                    label12.Text = "暂无生产计划";
                    label17.Text = "0";
                    label27.Text = "0";
                }

                if (Convert.ToDouble(label17.Text) < Convert.ToDouble(label27.Text))
                {
                    label27.BackColor = Color.Red;
                }
                else
                {
                    label27.BackColor = Color.DeepSkyBlue;
                }
                
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod());
            }
        }

        void comboBox2_MouseWheel(object sender, MouseEventArgs e)
        {
            HandledMouseEventArgs h = e as HandledMouseEventArgs;
            if (h != null)
            {
                h.Handled = true;
            }

        }

        void opcGroup1_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues,ref Array Qualities, ref Array TimeStamps)
        {
            try
            {

                CheckPackageSelect();
                InjectionPlanBLL bll = new InjectionPlanBLL();
                BarCodeBLL brbll = new BarCodeBLL();
                BarCodeModel md = new BarCodeModel();
                ProductBLL productBll = new ProductBLL();
                PlasticBLL pbll= _plasticBLL;
                InjectionBoxBLL boxbll=new InjectionBoxBLL();
                InjectionBoxModel boxmd=new InjectionBoxModel();
                DataTable dt2 = null;
                string code = "", OneCode = "";
                string newcode = "", newcode1 = "", NewOneCode = "", NewOneCode1 = "";
                string IsPack = "", IsOne = "", QLevel="",IsPaint="",PartName="",IsSame="",IsSupply="";
                string ManufacturerName = "";
                string filename = "", printName = "", printBoxName="";
                int MaxCount = 0, CurrentCount = 0;

                if (status == false)
                {
                    MessageBox.Show("连接服务器失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                for (int i = 1; i <= NumItems; i++)
                {
                    if ((ItemValues!=null &&  ItemValues.GetValue(i).ToString() == "True") || IsTest ==true)
                    {
                        LogSysBLL.AddInfo("true" + label6.Text, MethodBase.GetCurrentMethod());
                        GetClass();

                        #region 增加时间差判定

                        //DateTime lastTime = GetPrintTime(label6.Text);

                        //long ts = TimeDiff(lastTime, DateTime.Now);
                        TimeSpan span=DateTime.Now - lastTime;
                        if (span.TotalSeconds < Convert.ToDouble(ConfigurationManager.AppSettings["InterValT"])) 
                        {
                            return;
                        }

                        #endregion

                        //comboBox1.Text = "A班";         //班次
                        textBox1.Text = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) +
                                        Program.ProductDate.Substring(8, 2);     //批次
                        #region 查找当前计划

                        DataTable dt = bll.SearchInfoByName(Program.station);
                        if (dt != null && dt.Rows.Count > 0)
                        {
                           
                            if (aa != dt.Rows[0]["PartNo"].ToString())
                            {
                                DialogResult result=MessageBox.Show("计划有变更,请确认!", "提示", MessageBoxButtons.OKCancel,
                                        MessageBoxIcon.Information);
                                if (result == DialogResult.OK)
                                {

                                    planID = dt.Rows[0]["InjectionPlanID"].ToString();
                                    string[] partNo = dt.Rows[0]["PartNo"].ToString().Split(',');
                                    //string[] stockNo = dt.Rows[0]["StockNo"].ToString().Split(',');
                                    string[] stockNo = new string[partNo.Length];
                                    string ProductNature = dt.Rows[0]["ProductNature"].ToString();
                                    aa = dt.Rows[0]["PartNo"].ToString();
                                   
                                    //ManufacturerName = dt.Rows[0]["ManufacturerName"].ToString();
                                    DataTable dtM = productBll.SearchInfoByPartNo(partNo[0]);
                                    if (dtM != null && dtM.Rows.Count > 0)
                                    {
                                        ManufacturerName = dtM.Rows[0]["ManufacturerName"].ToString();
                                    }

                                    #region 判断有几个零件号
                                    string mould = "0";
                                    for (int j = 0; j < partNo.Length; j++)
                                    {
                                        #region 根据零件号查找存货代码

                                        DataTable sdt = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                        if (sdt != null && sdt.Rows.Count > 0)
                                        {
                                            stockNo[j] = sdt.Rows[0]["StockNo"].ToString();
                                            IsSame = sdt.Rows[0]["IsSame"].ToString();
                                        }
                                        else
                                        {
                                            stockNo[j] = "";
                                        }

                                        #endregion

                                        #region 获取零件属性

                                        DataTable dtx = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                        if (dtx != null && dtx.Rows.Count > 0)
                                        {
                                            QLevel = dtx.Rows[0]["QLevel"].ToString();
                                            IsOne = dtx.Rows[0]["IsPrintOneTag"].ToString();
                                            IsPack = dtx.Rows[0]["IsPrintPackList"].ToString();
                                            IsPaint = dtx.Rows[0]["IsPlating"].ToString();
                                            PartName = dtx.Rows[0]["ProductName"].ToString();
                                            IsSupply = dtx.Rows[0]["IsSupply"].ToString();
                                        }

                                        #endregion

                                        if (IsSame == "1")//一模两压相同的
                                        {
                                            for (int k = 0; k < 2; k++)
                                            {
                                                #region 非直供件打印

                                                if (IsSupply != "1")
                                                {
                                                    if (ManufacturerName.Contains("蔚来"))
                                                    {
                                                        //DataTable dts = brbll.SearchInfoByPartNo1(partNo[j].ToString().Trim());
                                                        //if (dts != null && dts.Rows.Count > 0)
                                                        //{
                                                        //    code = dts.Rows[0]["BarCode"].ToString().Trim();
                                                        //    newcode = code.Substring(0, code.Length - 4) +
                                                        //              (Convert.ToInt32(code.Substring(code.Length - 4, 4)) +
                                                        //               1).ToString()
                                                        //              .PadLeft(4, '0');
                                                        //}
                                                        //else
                                                        //{
                                                        //    newcode = partNo[j].Trim() + "." +
                                                        //              Program.ProductDate.Substring(2, 2) +
                                                        //              Program.ProductDate.Substring(5, 2) +
                                                        //              Program.ProductDate.Substring(8, 2) + "." + "0001";
                                                        //}

                                                        GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(),true, mould, PartName, ref NewOneCode, ref newcode);
                                                    }
                                                    else
                                                    {
                                                        //dt2 = brbll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                                        //if (dt2 != null && dt2.Rows.Count > 0)
                                                        //{
                                                        //    code = dt2.Rows[0]["BarCode"].ToString().Trim();
                                                        //    newcode = code.Substring(0, code.Length - 4) +
                                                        //              (Convert.ToInt32(code.Substring(code.Length - 4, 4)) +
                                                        //               1).ToString()
                                                        //              .PadLeft(4, '0');
                                                        //    OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
                                                        //    NewOneCode =
                                                        //        OneCode.Substring(0, OneCode.Length - 4) +
                                                        //        (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4,
                                                        //             4)) +
                                                        //         1).ToString().PadLeft(4, '0');
                                                        //}
                                                        //else
                                                        //{
                                                        //    newcode = partNo[j].ToString().Trim() + "." +
                                                        //              Program.ProductDate.Substring(2, 2) +
                                                        //              Program.ProductDate.Substring(5, 2) +
                                                        //              Program.ProductDate.Substring(8, 2) + "." +
                                                        //              "0001";
                                                        //    NewOneCode =
                                                        //        stockNo[j].ToString().Trim() +
                                                        //        Program.ProductDate.Substring(2, 2) +
                                                        //        Program.ProductDate.Substring(5, 2) +
                                                        //        Program.ProductDate.Substring(8, 2) + "0001";
                                                        //}
                                                           
                                                        GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), true, mould, PartName, ref NewOneCode, ref newcode);

                                                    }
                                                }

                                                #endregion

                                                #region 直供件打印

                                                if (IsSupply == "1")
                                                {
                                                    //DataTable dts = brbll.SearchInfoByPartNo1(partNo[j].ToString().Trim());
                                                    //if (dts != null && dts.Rows.Count > 0)
                                                    //{
                                                    //    code = dts.Rows[0]["BarCode"].ToString().Trim();
                                                    //    newcode = code.Substring(0, code.Length - 4) +
                                                    //              (Convert.ToInt32(code.Substring(23, 3)) +
                                                    //               1).ToString()
                                                    //              .PadLeft(3, '0')+"#";
                                                    //}
                                                    //else
                                                    //{
                                                    //    newcode = partNo[j].ToString().Trim() + "#" + QLevel+"#"+
                                                    //              Program.ProductDate.Substring(2, 2) +
                                                    //              Program.ProductDate.Substring(5, 2) +
                                                    //              Program.ProductDate.Substring(8, 2) + "#" + "001"+"#";
                                                    //}

                                                    GetSupplyCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), QLevel, true, mould, PartName, ref NewOneCode, ref newcode);
                                                }

                                                #endregion

                                                #region 插入数据tb_barCode

                                                md.ID = Guid.NewGuid().ToString();
                                                md.StationID = dt.Rows[0]["StationID"].ToString();
                                                md.OneBarCode = NewOneCode;
                                                md.BarCode = newcode;
                                                md.StockNo = stockNo[j].ToString().Trim();
                                                md.PartNo = partNo[j].ToString().Trim();
                                                md.PrintType = 0;
                                                md.PlanID = planID;
                                                md.ProductNature = ProductNature;
                                                md.Des1 = PartName;
                                                //DataTable pdt = productBll.SearchIsImportByPartNo(partNo[j].ToString());
                                                //if (pdt != null && pdt.Rows.Count > 0)
                                                //{
                                                //    if (pdt.Rows[0]["isImport"].ToString() == "1")
                                                //    {
                                                //        md.Import = "国产料Kingfa";
                                                //    }
                                                //    else
                                                //    {
                                                //        md.Import = "";
                                                //    }
                                                //}

                                                //if (brbll.Add_Info_New(md, Program.tableName) == false)
                                                if (SaveBarCode (md, Program.tableName, true, mould) == false)
                                                    {
                                                    int a = 0;
                                                    for (int l = 0; l < 5; l++)
                                                    {
                                                        // if (brbll.Add_Info_New(md, Program.tableName))
                                                        if (SaveBarCode(md, Program.tableName, true, mould) == true)
                                                        {
                                                            break;
                                                        }

                                                        a += 1;
                                                        Thread.Sleep(200);
                                                    }

                                                    if (a >= 4)
                                                    {
                                                        return;
                                                    }
                                                    //return;
                                                }

                                                #endregion

                                                #region 打印条码,判断是否打印单个条码

                                                #region 打印单个标签

                                                if (IsOne == "1")
                                                {
                                                    if (IsSupply != "1")
                                                    {
                                                        filename = ManufacturerName.Contains("蔚来")
                                                            ? System.AppDomain.CurrentDomain.BaseDirectory +
                                                              "wl.grf"
                                                            : System.AppDomain.CurrentDomain.BaseDirectory +
                                                              PrintMoudleName(); //new
                                                    }
                                                    else
                                                    {
                                                        filename = System.AppDomain.CurrentDomain.BaseDirectory +
                                                                   PrintMoudleName();
                                                    }


                                                    //DataTable dt4 = pbll.SearchInfo(partNo[j].ToString().Trim(),
                                                    //    dt.Rows[0]["StationID"].ToString());
                                                    //if (dt4 != null && dt4.Rows.Count > 0)
                                                    //{
                                                    //    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                                                    //}
                                                    printName = "Printer" +_printNameDict[partNo[j].ToString().Trim()+ dt.Rows[0]["StationID"].ToString()];

                                                    string reportName = ConfigurationManager.AppSettings[printName]
                                                        .ToString();

                                                    DataTable headTable = GetPrintHeadTable(partNo[j].ToString().Trim(), PartName, NewOneCode, newcode);

                                                    ReportHelper rp = new ReportHelper(filename, headTable, null,
                                                        (int) GRPaperOrientation.grpoDefault, 1, reportName);

                                                    LogSysBLL.AddInfo(
                                                        GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode,
                                                        MethodBase.GetCurrentMethod());
                                                    rp.Report.Print(false);

                                                }

                                                #endregion

                                                #endregion

                                                initBarCode();
                                            }
                                        }
                                        else//一模两压不同的
                                        {
                                            if (IsSupply != "1")
                                            {
                                                #region 非直供件

                                                if (ManufacturerName.Contains("蔚来"))
                                                {
                                                    //DataTable dts = brbll.SearchInfoByPartNo1(partNo[j].ToString().Trim());
                                                    //if (dts != null && dts.Rows.Count > 0)
                                                    //{
                                                    //    code = dt2.Rows[0]["BarCode"].ToString().Trim();
                                                    //    newcode = code.Substring(0, code.Length - 4) +
                                                    //              (Convert.ToInt32(code.Substring(code.Length - 4, 4)) +
                                                    //               1).ToString()
                                                    //              .PadLeft(4, '0') ;
                                                    //}
                                                    //else
                                                    //{
                                                    //    newcode = partNo[j].Trim() + "." +
                                                    //              Program.ProductDate.Substring(2, 2) +
                                                    //              Program.ProductDate.Substring(5, 2) +
                                                    //              Program.ProductDate.Substring(8, 2) + "." + "0001";
                                                    //}

                                                    GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), true, mould, PartName, ref NewOneCode, ref newcode);

                                                }
                                                else
                                                {
                                                    //dt2 = brbll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                                    //if (dt2 != null && dt2.Rows.Count > 0)
                                                    //{
                                                    //    code = dt2.Rows[0]["BarCode"].ToString().Trim();
                                                    //    newcode = code.Substring(0, code.Length - 4) +
                                                    //              (Convert.ToInt32(code.Substring(code.Length - 4, 4)) +
                                                    //               1)
                                                    //              .ToString()
                                                    //              .PadLeft(4, '0');
                                                    //    OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
                                                    //    NewOneCode =
                                                    //        OneCode.Substring(0, OneCode.Length - 4) +
                                                    //        (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) +
                                                    //         1)
                                                    //        .ToString().PadLeft(4, '0');
                                                    //}
                                                    //else
                                                    //{
                                                    //    newcode = partNo[j].ToString().Trim() + "." +
                                                    //              Program.ProductDate.Substring(2, 2) +
                                                    //              Program.ProductDate.Substring(5, 2) +
                                                    //              Program.ProductDate.Substring(8, 2) + "." + "0001";
                                                    //    NewOneCode =
                                                    //        stockNo[j].ToString().Trim() +
                                                    //        Program.ProductDate.Substring(2, 2) +
                                                    //        Program.ProductDate.Substring(5, 2) +
                                                    //        Program.ProductDate.Substring(8, 2) + "0001";
                                                    //}

                                                    GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), true, mould, PartName, ref NewOneCode, ref newcode);

                                                }

                                                #endregion
                                            }
                                            else
                                            {
                                                #region 直供件
                                                //DataTable dts = brbll.SearchInfoByPartNo1(partNo[j].ToString().Trim());
                                                //if (dts != null && dts.Rows.Count > 0)
                                                //{
                                                //    code = dt2.Rows[0]["BarCode"].ToString().Trim();
                                                //    newcode = code.Substring(0, code.Length - 4) +
                                                //              (Convert.ToInt32(code.Substring(23, 3)) +
                                                //               1).ToString()
                                                //              .PadLeft(3, '0') + "#";
                                                //}
                                                //else
                                                //{
                                                //    newcode = partNo[j].ToString().Trim() + "#" + QLevel + "#" +
                                                //              Program.ProductDate.Substring(2, 2) +
                                                //              Program.ProductDate.Substring(5, 2) +
                                                //              Program.ProductDate.Substring(8, 2) + "#" + "001" + "#";
                                                //}

                                                GetSupplyCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), QLevel, true, mould, PartName, ref NewOneCode, ref newcode);
                                                #endregion
                                            }

                                            #region 插入数据tb_barCode

                                            md.ID = Guid.NewGuid().ToString();
                                            md.StationID = dt.Rows[0]["StationID"].ToString();
                                            md.OneBarCode = NewOneCode;
                                            md.BarCode = newcode;
                                            md.StockNo = stockNo[j].ToString().Trim();
                                            md.PartNo = partNo[j].ToString().Trim();
                                            md.PrintType = 0;
                                            md.PlanID = planID;
                                            md.ProductNature = ProductNature;
                                            md.Des1 = PartName;
                                            DataTable pdt = productBll.SearchIsImportByPartNo(partNo[j].ToString());
                                            if (pdt != null && pdt.Rows.Count > 0)
                                            {
                                                if (pdt.Rows[0]["isImport"].ToString() == "1")
                                                {
                                                    md.Import = "国产料Kingfa";
                                                }
                                                else
                                                {
                                                    md.Import = "";
                                                }
                                            }

                                            // if (brbll.Add_Info_New(md, Program.tableName) == false)
                                            if (SaveBarCode(md, Program.tableName, true, mould) == false)
                                            {
                                                int a = 0;
                                                for (int l = 0; l < 5; l++)
                                                {
                                                    //if (brbll.Add_Info_New(md, Program.tableName))
                                                    if (SaveBarCode(md, Program.tableName, true, mould) == true)
                                                    {
                                                        break;
                                                    }

                                                    a += 1;
                                                    Thread.Sleep(200);
                                                }

                                                if (a >= 4)
                                                {
                                                    return;
                                                }
                                                //return;
                                            }

                                            #endregion

                                            #region 打印条码,判断是否打印单个条码

                                            DataTable dt3 = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                            if (dt3 != null && dt3.Rows.Count > 0)
                                            {
                                                QLevel = dt3.Rows[0]["QLevel"].ToString();
                                                IsOne = dt3.Rows[0]["IsPrintOneTag"].ToString();
                                                IsPack = dt3.Rows[0]["IsPrintPackList"].ToString();
                                                IsPaint = dt3.Rows[0]["IsPlating"].ToString();
                                                PartName = dt3.Rows[0]["ProductName"].ToString();
                                                //MaxCount = Convert.ToInt32(dt3.Rows[0]["PackCount"].ToString());
                                                IsSame = dt3.Rows[0]["IsSame"].ToString();
                                                IsSupply = dt3.Rows[0]["IsSupply"].ToString();
                                            }
                                            
                                            #region 打印单个标签

                                            if (IsOne == "1")
                                            {
                                                if (IsSupply != "1")
                                                {
                                                    filename = ManufacturerName.Contains("蔚来")
                                                        ? System.AppDomain.CurrentDomain.BaseDirectory +
                                                          "wl.grf"
                                                        : System.AppDomain.CurrentDomain.BaseDirectory +
                                                          PrintMoudleName(); //new
                                                    if (partNo[j].Contains("A2146982300") ||
                                                        partNo[j].Contains("A2146982400"))
                                                    {
                                                        filename = AppDomain.CurrentDomain.BaseDirectory +
                                                                   PrintMoudleName();
                                                    }
                                                }
                                                else
                                                {
                                                    filename = System.AppDomain.CurrentDomain.BaseDirectory +
                                                               PrintMoudleName();
                                                }


                                                //DataTable dt4 = pbll.SearchInfo(partNo[j].ToString().Trim(),
                                                //    dt.Rows[0]["StationID"].ToString());
                                                //if (dt4 != null && dt4.Rows.Count > 0)
                                                //{
                                                //    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                                                //}
                                                printName = "Printer" + _printNameDict[partNo[j].ToString().Trim() + dt.Rows[0]["StationID"].ToString()];

                                                string reportName = ConfigurationManager.AppSettings[printName]
                                                    .ToString();
                                                DataTable headTable = GetPrintHeadTable(partNo[j].ToString().Trim(), PartName, NewOneCode, newcode);


                                                ReportHelper rp = new ReportHelper(filename, headTable, null,
                                                    (int) GRPaperOrientation.grpoDefault, 1, reportName);
                                                LogSysBLL.AddInfo(
                                                    GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode,
                                                    MethodBase.GetCurrentMethod());
                                                rp.Report.Print(false);
                                                
                                            }

                                            #endregion

                                            #endregion

                                            initBarCode();
                                        }
                                    }

                                    #endregion
                                }
                                else
                                {
                                    return;
                                }
                            }
                            else
                            {
                                planID = dt.Rows[0]["InjectionPlanID"].ToString();
                                string[] partNo = dt.Rows[0]["PartNo"].ToString().Split(',');
                                //string[] stockNo = dt.Rows[0]["StockNo"].ToString().Split(',');
                                string[] stockNo = new string[partNo.Length];
                                string ProductNature = dt.Rows[0]["ProductNature"].ToString();
                                //ManufacturerName = dt.Rows[0]["ManufacturerName"].ToString();
                                DataTable dtM = productBll.SearchInfoByPartNo(partNo[0]);
                                if (dtM != null && dtM.Rows.Count > 0)
                                {
                                    ManufacturerName = dtM.Rows[0]["ManufacturerName"].ToString();
                                }

                                #region 判断有几个零件号
                                string mould = "0";
                                for (int j = 0; j < partNo.Length; j++)
                                {
                                    #region 根据零件号查找存货代码
                                    mould = j.ToString();
                                    DataTable sdt = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                    if (sdt != null && sdt.Rows.Count > 0)
                                    {
                                        stockNo[j] = sdt.Rows[0]["StockNo"].ToString();
                                        IsSame = sdt.Rows[0]["IsSame"].ToString();
                                    }
                                    else
                                    {
                                        stockNo[j] = "";
                                    }

                                    #endregion

                                    #region 查询零件属性

                                    DataTable dt10 = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                    if (dt10 != null && dt10.Rows.Count > 0)
                                    {
                                        QLevel = dt10.Rows[0]["QLevel"].ToString();
                                        IsOne = dt10.Rows[0]["IsPrintOneTag"].ToString();
                                        IsPack = dt10.Rows[0]["IsPrintPackList"].ToString();
                                        IsPaint = dt10.Rows[0]["IsPlating"].ToString();
                                        PartName = dt10.Rows[0]["ProductName"].ToString();
                                        //MaxCount = Convert.ToInt32(dt10.Rows[0]["PackCount"].ToString());
                                        IsSupply = dt10.Rows[0]["IsSupply"].ToString();
                                    } 

                                    #endregion

                                    if (IsSame == "1")
                                    {
                                        for (int k = 0; k < 2; k++)
                                        {
                                            if (IsSupply != "1")
                                            {
                                                #region 非直供件

                                                try
                                                {
                                                    if (ManufacturerName.Contains("蔚来"))
                                                    {
                                                        #region 修改前,屏蔽

                                                        //DataTable dts = brbll.SearchInfoByPartNo1(partNo[j].ToString().Trim());
                                                        //if (dts != null && dts.Rows.Count > 0)
                                                        //{
                                                        //    code = dts.Rows[0]["BarCode"].ToString().Trim();
                                                        //    newcode = code.Substring(0, code.Length - 4) +
                                                        //              (Convert.ToInt32(code.Substring(code.Length - 4, 4)) +
                                                        //               1).ToString()
                                                        //              .PadLeft(4, '0');
                                                        //}
                                                        //else
                                                        //{
                                                        //    newcode = partNo[j].Trim() + "." +
                                                        //              Program.ProductDate.Substring(2, 2) +
                                                        //              Program.ProductDate.Substring(5, 2) +
                                                        //              Program.ProductDate.Substring(8, 2) + "." + "0001";
                                                        //}

                                                        #endregion

                                                        GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), true, mould, PartName, ref NewOneCode, ref newcode);

                                                    }
                                                    else
                                                    {
                                                        #region 修改前,屏蔽

                                                        //dt2 = brbll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                                        //if (dt2 != null && dt2.Rows.Count > 0)
                                                        //{
                                                        //    code = dt2.Rows[0]["BarCode"].ToString().Trim();
                                                        //    newcode = code.Substring(0, code.Length - 4) +
                                                        //              (Convert.ToInt32(code.Substring(code.Length - 4,
                                                        //                   4)) + 1)
                                                        //              .ToString()
                                                        //              .PadLeft(4, '0');
                                                        //    OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
                                                        //    NewOneCode =
                                                        //        OneCode.Substring(0, OneCode.Length - 4) +
                                                        //        (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4,
                                                        //             4)) + 1)
                                                        //        .ToString().PadLeft(4, '0');
                                                        //}
                                                        //else
                                                        //{
                                                        //    newcode = partNo[j].ToString().Trim() + "." +
                                                        //              Program.ProductDate.Substring(2, 2) +
                                                        //              Program.ProductDate.Substring(5, 2) +
                                                        //              Program.ProductDate.Substring(8, 2) + "." +
                                                        //              "0001";
                                                        //    NewOneCode =
                                                        //        stockNo[j].ToString().Trim() +
                                                        //        Program.ProductDate.Substring(2, 2) +
                                                        //        Program.ProductDate.Substring(5, 2) +
                                                        //        Program.ProductDate.Substring(8, 2) + "0001";
                                                        //}

                                                        #endregion

                                                        GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), true, mould, PartName, ref NewOneCode, ref newcode);

                                                    }
                                                }
                                                catch (Exception ex)
                                                {
                                                    MessageBox.Show(ex.ToString());
                                                    LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                                                    return;
                                                }
                                                
                                                #endregion
                                            }
                                            else
                                            {
                                                #region 直供件

                                                try
                                                {
                                                    //DataTable dts = brbll.SearchInfoByPartNo1(partNo[j].ToString().Trim());
                                                    //if (dts != null && dts.Rows.Count > 0)
                                                    //{
                                                    //    code = dt2.Rows[0]["BarCode"].ToString().Trim();
                                                    //    newcode = code.Substring(0, code.Length - 4) +
                                                    //              (Convert.ToInt32(code.Substring(23, 3)) +
                                                    //               1).ToString()
                                                    //              .PadLeft(3, '0') + "#";
                                                    //}
                                                    //else
                                                    //{
                                                    //    newcode = partNo[j].ToString().Trim() + "#" + QLevel + "#" +
                                                    //              Program.ProductDate.Substring(2, 2) +
                                                    //              Program.ProductDate.Substring(5, 2) +
                                                    //              Program.ProductDate.Substring(8, 2) + "#" + "001" + "#";
                                                    //}

                                                    GetSupplyCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), QLevel, true, mould, PartName, ref NewOneCode, ref newcode);
                                                }
                                                catch (Exception ex)
                                                {
                                                    MessageBox.Show(ex.ToString());
                                                    LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                                                    return;
                                                }
                                                
                                                #endregion
                                            }

                                            #region 插入数据tb_barCode

                                            md.ID = Guid.NewGuid().ToString();
                                            md.StationID = dt.Rows[0]["StationID"].ToString();
                                            md.OneBarCode = NewOneCode;
                                            md.BarCode = newcode;
                                            md.StockNo = stockNo[j].ToString().Trim();
                                            md.PartNo = partNo[j].ToString().Trim();
                                            md.PrintType = 0;
                                            md.PlanID = planID;
                                            md.ProductNature = ProductNature;
                                            md.Des1 = PartName;
                                            DataTable pdt = productBll.SearchIsImportByPartNo(partNo[j].ToString());
                                            if (pdt != null && pdt.Rows.Count > 0)
                                            {
                                                if (pdt.Rows[0]["isImport"].ToString() == "1")
                                                {
                                                    md.Import = "国产料Kingfa";
                                                }
                                                else
                                                {
                                                    md.Import = "";
                                                }
                                            }

                                            //if (brbll.Add_Info_New(md, Program.tableName) == false)
                                                if (SaveBarCode(md, Program.tableName, true, mould) == false)
                                                {
                                                int a = 0;
                                                for (int l = 0; l < 5; l++)
                                                {
                                                    //if (brbll.Add_Info_New(md, Program.tableName))
                                                    if (SaveBarCode(md, Program.tableName, true, mould) == true)
                                                    {
                                                        break;
                                                    }

                                                    a += 1;
                                                    Thread.Sleep(200);
                                                }

                                                if (a >= 4)
                                                {
                                                    return;
                                                }
                                            }

                                            #endregion

                                            #region 打印条码,判断是否打印单个条码

                                            #region 打印单个标签

                                            if (IsOne == "1")
                                            {
                                                if (IsSupply != "1")
                                                {
                                                    filename = ManufacturerName.Contains("蔚来")
                                                        ? System.AppDomain.CurrentDomain.BaseDirectory +
                                                          "wl.grf"
                                                        : System.AppDomain.CurrentDomain.BaseDirectory +
                                                          PrintMoudleName(); //new
                                                }
                                                else
                                                {
                                                    filename = System.AppDomain.CurrentDomain.BaseDirectory +
                                                               PrintMoudleName();
                                                }

                                                //DataTable dt4 = pbll.SearchInfo(partNo[j].ToString().Trim(),
                                                //    dt.Rows[0]["StationID"].ToString());
                                                //if (dt4 != null && dt4.Rows.Count > 0)
                                                //{
                                                //    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                                                //}
                                                printName = "Printer" + _printNameDict[partNo[j].ToString().Trim() + dt.Rows[0]["StationID"].ToString()];

                                                string reportName = ConfigurationManager.AppSettings[printName]
                                                    .ToString();
                                                DataTable headTable = GetPrintHeadTable(partNo[j].ToString().Trim(), PartName, NewOneCode, newcode);

                                                ReportHelper rp = new ReportHelper(filename, headTable, null,
                                                    (int) GRPaperOrientation.grpoDefault, 1, reportName);

                                                LogSysBLL.AddInfo(
                                                    GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode,
                                                    MethodBase.GetCurrentMethod());
                                                rp.Report.Print(false);
                                                
                                            }

                                            #endregion

                                            #endregion

                                            initBarCode();
                                        }
                                    }
                                    else
                                    {
                                        if (IsSupply != "1")
                                        {
                                            #region 非直供件

                                            try
                                            {
                                                if (ManufacturerName.Contains("蔚来"))
                                                {
                                                    #region 修改前,屏蔽

                                                    //DataTable dts = brbll.SearchInfoByPartNo1(partNo[j].ToString().Trim());
                                                    //if (dts != null && dts.Rows.Count > 0)
                                                    //{
                                                    //    code = dts.Rows[0]["BarCode"].ToString().Trim();
                                                    //    newcode = code.Substring(0, code.Length - 4) +
                                                    //              (Convert.ToInt32(code.Substring(code.Length - 4, 4)) +
                                                    //               1).ToString()
                                                    //              .PadLeft(4, '0');
                                                    //}
                                                    //else
                                                    //{
                                                    //    newcode = partNo[j].Trim() + "." +
                                                    //              Program.ProductDate.Substring(2, 2) +
                                                    //              Program.ProductDate.Substring(5, 2) +
                                                    //              Program.ProductDate.Substring(8, 2) + "." + "0001";
                                                    //}

                                                    #endregion

                                                    GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), true, mould, PartName, ref NewOneCode, ref newcode);

                                                }
                                                else
                                                {
                                                    #region 修改前,屏蔽

                                                    //dt2 = brbll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                                    //if (dt2 != null && dt2.Rows.Count > 0)
                                                    //{
                                                    //    code = dt2.Rows[0]["BarCode"].ToString().Trim();
                                                    //    newcode = code.Substring(0, code.Length - 4) +
                                                    //              (Convert.ToInt32(code.Substring(code.Length - 4, 4)) +
                                                    //               1)
                                                    //              .ToString()
                                                    //              .PadLeft(4, '0');
                                                    //    OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
                                                    //    NewOneCode =
                                                    //        OneCode.Substring(0, OneCode.Length - 4) +
                                                    //        (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) +
                                                    //         1)
                                                    //        .ToString().PadLeft(4, '0');
                                                    //}
                                                    //else
                                                    //{
                                                    //    newcode = partNo[j].ToString().Trim() + "." +
                                                    //              Program.ProductDate.Substring(2, 2) +
                                                    //              Program.ProductDate.Substring(5, 2) +
                                                    //              Program.ProductDate.Substring(8, 2) + "." + "0001";
                                                    //    NewOneCode =
                                                    //        stockNo[j].ToString().Trim() +
                                                    //        Program.ProductDate.Substring(2, 2) +
                                                    //        Program.ProductDate.Substring(5, 2) +
                                                    //        Program.ProductDate.Substring(8, 2) + "0001";
                                                    //}

                                                    #endregion
                                                    
                                                    GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), true, mould, PartName, ref NewOneCode, ref newcode);

                                                }
                                            }
                                            catch (Exception ex)
                                            {
                                                MessageBox.Show(ex.ToString());
                                                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                                                return;
                                            }
                                            
                                            #endregion
                                        }
                                        else
                                        {
                                            #region 直供件

                                            try
                                            {
                                                //DataTable dts = brbll.SearchInfoByPartNo1(partNo[j].ToString().Trim());
                                                //if (dts != null && dts.Rows.Count > 0)
                                                //{
                                                //    code = dts.Rows[0]["BarCode"].ToString().Trim();
                                                //    newcode = code.Substring(0, code.Length - 4) +
                                                //              (Convert.ToInt32(code.Substring(23, 3)) +
                                                //               1).ToString()
                                                //              .PadLeft(3, '0') + "#";
                                                //}
                                                //else
                                                //{
                                                //    newcode = partNo[j].ToString().Trim() + "#" + QLevel + "#" +
                                                //              Program.ProductDate.Substring(2, 2) +
                                                //              Program.ProductDate.Substring(5, 2) +
                                                //              Program.ProductDate.Substring(8, 2) + "#" + "001" + "#";
                                                //}

                                                GetSupplyCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), QLevel, true, mould, PartName, ref NewOneCode, ref newcode);
                                            }
                                            catch (Exception ex)
                                            {
                                                MessageBox.Show(ex.ToString());
                                                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                                                return;
                                            }
                                            
                                            #endregion
                                        }

                                        #region 插入数据tb_barCode

                                        md.ID = Guid.NewGuid().ToString();
                                        md.StationID = dt.Rows[0]["StationID"].ToString();
                                        md.OneBarCode = NewOneCode;
                                        md.BarCode = newcode;
                                        md.StockNo = stockNo[j].ToString().Trim();
                                        md.PartNo = partNo[j].ToString().Trim();
                                        md.PrintType = 0;
                                        md.PlanID = planID;
                                        md.ProductNature = ProductNature;
                                        md.Des1 = PartName;
                                        DataTable pdt = productBll.SearchIsImportByPartNo(partNo[j].ToString());
                                        if (pdt != null && pdt.Rows.Count > 0)
                                        {
                                            if (pdt.Rows[0]["isImport"].ToString() == "1")
                                            {
                                                md.Import = "国产料Kingfa";
                                            }
                                            else
                                            {
                                                md.Import = "";
                                            }
                                        }

                                        //if (brbll.Add_Info_New(md, Program.tableName) == false)
                                            if (SaveBarCode(md, Program.tableName, true, mould) == false)
                                            {
                                            int a = 0;
                                            for (int l = 0; l < 5; l++)
                                            {
                                                //if (brbll.Add_Info_New(md, Program.tableName))
                                                    if (SaveBarCode(md, Program.tableName, true, mould) == true)
                                                    {
                                                    break;
                                                }

                                                a += 1;
                                                Thread.Sleep(200);
                                            }

                                            if (a >= 4)
                                            {
                                                return;
                                            }
                                        }

                                        #endregion

                                        #region 打印条码,判断是否打印单个条码

                                        #region 打印单个标签

                                        if (IsOne == "1")
                                        {

                                            if (IsSupply != "1")
                                            {
                                                filename = ManufacturerName.Contains("蔚来")
                                                    ? System.AppDomain.CurrentDomain.BaseDirectory +
                                                      "wl.grf"
                                                    : System.AppDomain.CurrentDomain.BaseDirectory +
                                                      PrintMoudleName();//new
                                                if (partNo[j].Contains("A2146982300") ||
                                                        partNo[j].Contains("A2146982400"))
                                                    {
                                                    filename = AppDomain.CurrentDomain.BaseDirectory +
                                                               "Sill.grf";
                                                }
                                            }
                                            else
                                            {
                                                filename = System.AppDomain.CurrentDomain.BaseDirectory + PrintMoudleName();
                                            }

                                            //DataTable dt4 = pbll.SearchInfo(partNo[j].ToString().Trim(),
                                            //    dt.Rows[0]["StationID"].ToString());
                                            //if (dt4 != null && dt4.Rows.Count > 0)
                                            //{
                                            //    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                                            //}
                                            printName = "Printer" + _printNameDict[partNo[j].ToString().Trim() + dt.Rows[0]["StationID"].ToString()];

                                            string reportName = ConfigurationManager.AppSettings[printName].ToString();
                                            DataTable headTable = GetPrintHeadTable(partNo[j].ToString().Trim(), PartName, NewOneCode, newcode);

                                            ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);
                                            LogSysBLL.AddInfo(GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode, MethodBase.GetCurrentMethod());
                                            rp.Report.Print(false);
                                        }

                                        #endregion

                                        #endregion

                                        initBarCode();
                                    }

                                }

                                #endregion
                            }
                            
                        }

                        #endregion

                        #region 修改打印时间

                        //UpdatePrintTime(DateTime.Now, label6.Text);

                        #endregion

                        initPlan();
                        lastTime=DateTime.Now;
                    }
                }
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                MessageBox.Show(ex.ToString());
            }
        }

      

        private void TimeGo()
        {
            System.Timers.Timer timer = new System.Timers.Timer();
            timer.Interval = 1000;
            timer.Enabled = true;
            timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick);
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            try
            {
                label2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                Thread.Sleep(500);
            }
           catch(Exception ex)
            {
                Console.Write(ex.Message);
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            int wID = 0;
            WeightRecordBLL wrbll = new WeightRecordBLL();
            WeightBLL wbll = new WeightBLL();
            WeightRecordModel wmd=new WeightRecordModel();
            InjectionPlanBLL bll = new InjectionPlanBLL();
            BarCodeBLL brbll = new BarCodeBLL();
            BarCodeModel md = new BarCodeModel();
            ProductBLL productBll = new ProductBLL();
            PlasticBLL pbll = _plasticBLL;
            InjectionBoxBLL boxbll = new InjectionBoxBLL();
            InjectionBoxModel boxmd = new InjectionBoxModel();
            InjectionQtyBLL qbll=new InjectionQtyBLL();
            InjectionQtyModel qmd = new InjectionQtyModel();
            StationBLL sbll=new StationBLL();
            DataTable dt2 = null;
            string code = "", OneCode = "";
            string newcode = "", newcode1 = "", NewOneCode = "", NewOneCode1 = "";
            string IsPack = "", IsOne = "", QLevel = "", IsPaint = "", PartName = "";
            string filename = "", printName = "",StationID="",printBoxName="";
            int MaxCount = 0, CurrentCount = 0,IsSame=0;
            int aa = 0;

            try
            {
                timer1.Enabled=false; 
                
                GetClass();
                aa = aa + 1;

                LogHelper.WriteLog(aa.ToString());

                #region 查找MES数据库总存储的最大ID

                DataTable wrdt = wrbll.SearchMaxIDByDevice(Program.station);
                if (wrdt != null && wrdt.Rows.Count > 0)
                {
                    ID = Convert.ToInt32(wrdt.Rows[0]["ID"].ToString());
                }
                else
                {
                    ID = 0;
                }
                LogHelper.WriteLog(ID.ToString());

                #endregion

                #region 查找称重数据库的最大ID

                //DataTable wdt = wbll.SearchInfo(Conn);
                //if (wdt != null && wdt.Rows.Count > 0)
                //{
                //    wID = Convert.ToInt32(wdt.Rows[0]["ID"].ToString());
                //}
                //else
                //{
                //    wID = 0;
                //}

                #endregion

                #region 如果称重数据库里的ID大于MES数据库中的ID,打印条码,并将称重数据库中的ID存入MES数据库

                if (wID > ID)
                {
                    #region 打印

                    #region 查找当前计划

                    DataTable dt = bll.SearchInfoByName(Program.station);
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        planID = dt.Rows[0]["InjectionPlanID"].ToString();
                        string[] partNo = dt.Rows[0]["PartNo"].ToString().Split(',');
                        string[] stockNo = new string[partNo.Length]; 
                        //string[] stockNo = dt.Rows[0]["StockNo"].ToString().Split(',');
                        string ProductNature = dt.Rows[0]["ProductNature"].ToString();
                        int[] same = new int[partNo.Length];

                        #region 判断有几个零件号
                        int mould = 0;
                        for (int j = 0; j < partNo.Length; j++)
                        {
                            mould = j;
                            #region 根据零件号查找存货代码

                            DataTable sdt = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                            if (sdt != null && sdt.Rows.Count > 0)
                            {
                                stockNo[j] = sdt.Rows[0]["StockNo"].ToString();
                                same[j] = Convert.ToInt32(sdt.Rows[0]["IsSame"].ToString());
                            }
                            else
                            {
                                stockNo[j] = "";
                                same[j] =0;
                            }


                            #endregion

                            DataTable dt3 = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                            if (dt3 != null && dt3.Rows.Count > 0)
                            {
                                QLevel = dt3.Rows[0]["QLevel"].ToString();
                                IsOne = dt3.Rows[0]["IsPrintOneTag"].ToString();
                                IsPack = dt3.Rows[0]["IsPrintPackList"].ToString();
                                IsPaint = dt3.Rows[0]["IsPlating"].ToString();
                                PartName = dt3.Rows[0]["ProductName"].ToString();
                                MaxCount = Convert.ToInt32(dt3.Rows[0]["PackCount"].ToString());
                            }


                            if (partNo.Length == 1 && same[j] == 1)     //一个零件号,且一模两具生产的是两根一样的产品
                            {
                                for (int k = 0; k < 2; k++)
                                {
                                    //dt2 = brbll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                    //if (dt2 != null && dt2.Rows.Count > 0)
                                    //{
                                    //    code = dt2.Rows[0]["BarCode"].ToString().Trim();
                                    //    newcode = code.Substring(0, code.Length - 4) +
                                    //              (Convert.ToInt32(code.Substring(code.Length - 4, 4)) + 1).ToString()
                                    //              .PadLeft(4, '0');
                                    //    OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
                                    //    NewOneCode = OneCode.Substring(0, OneCode.Length - 4) + (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) + 1).ToString().PadLeft(4, '0');
                                    //}
                                    //else
                                    //{
                                    //    newcode = partNo[j].ToString().Trim() + "." + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "." + "0001";
                                    //    NewOneCode = stockNo[j].ToString().Trim() + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "0001";
                                    //}

                                   

                                    GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), true, mould.ToString(), PartName, ref NewOneCode, ref newcode);


                                    #region 插入数据tb_barCode

                                    md.ID = Guid.NewGuid().ToString();
                                    md.StationID = dt.Rows[0]["StationID"].ToString();
                                    md.OneBarCode = NewOneCode;
                                    md.BarCode = newcode;
                                    md.StockNo = stockNo[j].ToString().Trim();
                                    md.PartNo = partNo[j].ToString().Trim();
                                    md.PrintType = 0;
                                    md.PlanID = planID;
                                    md.ProductNature = ProductNature;
                                    md.Des1 = PartName;
                                    DataTable pdt = productBll.SearchIsImportByPartNo(partNo[j].ToString());
                                    if (pdt != null && pdt.Rows.Count > 0)
                                    {
                                        if (pdt.Rows[0]["isImport"].ToString() == "1")
                                        {
                                            md.Import = "国产料Kingfa";
                                        }
                                        else
                                        {
                                            md.Import = "";
                                        }
                                    }

                                    //if (brbll.Add_Info_New(md, Program.tableName) == false)
                                    if (SaveBarCode(md, Program.tableName, true, same[j].ToString()) == false)
                                    {
                                        int a = 0;
                                        for (int l = 0; l < 5; l++)
                                        {
                                            //if (brbll.Add_Info_New(md, Program.tableName))
                                            if (SaveBarCode(md, Program.tableName, true, same[j].ToString()) == true)
                                            {
                                                break;
                                            }

                                            a += 1;
                                            Thread.Sleep(200);
                                        }

                                        if (a >= 4)
                                        {
                                            return;
                                        }
                                        //return;
                                    }

                                    #endregion

                                    #region 增加产量

                                    qmd.ID = Guid.NewGuid().ToString();
                                    qmd.PlanID = planID;
                                    qmd.StationID = getStationID(Program.station);
                                    qmd.ProductDate = Program.ProductDate;
                                    qmd.ClassName = Program.Shift;
                                    qmd.StockNo = stockNo[j].ToString().Trim();
                                    qmd.PartNo = partNo[j].ToString().Trim();
                                    if (ProductNature == "售后件")
                                    {
                                        qmd.MarketCount = 1;
                                    }
                                    else
                                    {
                                        qmd.MarketCount = 0;
                                    }

                                    DataTable isExistdt = qbll.SearchInfo(qmd);
                                    if (isExistdt != null && isExistdt.Rows.Count > 0)
                                    {
                                        qbll.UpdateQty(qmd);
                                    }
                                    else
                                    {
                                        qmd.ProductCount = 1;
                                        qbll.AddInfo(qmd);
                                    }

                                    #endregion

                                    #region 打印条码,判断是否打印单个条码

                                  

                                    //DataTable dt4 = pbll.SearchInfo(partNo[j].ToString().Trim(),
                                    //    dt.Rows[0]["StationID"].ToString());
                                    //if (dt4 != null && dt4.Rows.Count > 0)
                                    //{
                                    //    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                                    //}
                                    printName = "Printer" + _printNameDict[partNo[j].ToString().Trim() + dt.Rows[0]["StationID"].ToString()];

                                    #region 打印单个标签

                                    if (IsOne == "1")
                                    {
                                        filename = System.AppDomain.CurrentDomain.BaseDirectory + PrintMoudleName(); //new
                                       
                                        string reportName = ConfigurationManager.AppSettings[printName].ToString();
                                        DataTable headTable = GetPrintHeadTable(partNo[j].ToString().Trim(), PartName, NewOneCode, newcode);


                                        ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);

                                        rp.Report.Print(false);
                                    }

                                    #endregion

                                    //DataTable dt5 = brbll.SearchBoxIsNull(partNo[j].ToString().Trim(),
                                    //        dt.Rows[0]["StationID"].ToString(), Program.tableName, ProductNature);

                                    //if (dt5 != null && dt5.Rows.Count > 0)
                                    //{
                                    //    CurrentCount = Convert.ToInt32(dt5.Rows[0]["SumCount"].ToString());
                                    //}

                                    //if (CurrentCount >= MaxCount)
                                    //{
                                    //    #region 判断是否满箱,满箱打印箱单

                                    //    DialogResult result = MessageBox.Show("是否打印装箱单?", "提示", MessageBoxButtons.OKCancel,
                                    //        MessageBoxIcon.Information);
                                    //    if (result == DialogResult.OK)
                                    //    {
                                    //        filename = System.AppDomain.CurrentDomain.BaseDirectory + "装箱单.grf";
                                    //        DataTable headTable = new DataTable();
                                    //        headTable.Columns.Add("BoxNo");
                                    //        headTable.Columns.Add("PartName");
                                    //        headTable.Columns.Add("PartNo");
                                    //        headTable.Columns.Add("BatchNo");
                                    //        headTable.Columns.Add("PackCount");
                                    //        headTable.Columns.Add("QLevel");
                                    //        DataRow row = headTable.NewRow();

                                    //        row["BatchNo"] = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2);

                                    //        #region 查询当前批次装箱单

                                    //        DataTable dt6 = boxbll.SeachInfoByBox(partNo[j].ToString().Trim(), Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2));
                                    //        if (dt6 != null && dt6.Rows.Count > 0)
                                    //        {
                                    //            row["BoxNo"] =
                                    //                dt6.Rows[0]["BoxNo"].ToString().Substring(0,
                                    //                    dt6.Rows[0]["BoxNo"].ToString().Length - 6) +
                                    //                (Convert.ToInt32(dt6.Rows[0]["BoxNo"].ToString()
                                    //                     .Substring(dt6.Rows[0]["BoxNo"].ToString().Length - 6, 6)) + 1)
                                    //                .ToString().PadLeft(6, '0');
                                    //        }
                                    //        else
                                    //        {
                                    //            row["BoxNo"] =
                                    //                partNo[j].ToString().Trim() + "." +
                                    //                Program.ProductDate.Substring(2, 2) +
                                    //                Program.ProductDate.Substring(5, 2) +
                                    //                Program.ProductDate.Substring(8, 2) + "." + "000001";
                                    //        }

                                    //        #endregion

                                    //        row["PartNo"] = partNo[j].ToString().Trim();
                                    //        row["PartName"] = PartName;
                                    //        row["PackCount"] = MaxCount.ToString() + "  EA";
                                    //        row["QLevel"] = QLevel;

                                    //        #region 更新barCode表中BoxNo的绑定关系

                                    //        brbll.UpdateBoxNo(Program.tableName, row["BoxNo"].ToString(),
                                    //            partNo[j].ToString().Trim());

                                    //        #endregion

                                    //        #region 保存箱单记录

                                    //        boxmd.ID = Guid.NewGuid().ToString();
                                    //        boxmd.BoxNo = row["BoxNo"].ToString();
                                    //        boxmd.IsFlag = 0;
                                    //        boxmd.BoxCount = MaxCount;

                                    //        boxbll.AddInfo(boxmd);

                                    //        #endregion

                                    //        #region 打印箱单

                                    //        printBoxName = "Printer" + (Convert.ToInt32(printName.Substring(7, 1))+2).ToString();
                                    //        string reportName = ConfigurationManager.AppSettings[printBoxName].ToString();
                                    //        headTable.Rows.Add(row);

                                    //        ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);

                                    //        rp.Report.Print(false);

                                    //        #endregion
                                    //    }
                                    //    else
                                    //    {

                                    //    }

                                    //    #endregion
                                    //}

                                    #endregion
                                }
                            }
                            else
                            {
                                //dt2 = brbll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                //if (dt2 != null && dt2.Rows.Count > 0)
                                //{
                                //    code = dt2.Rows[0]["BarCode"].ToString().Trim();
                                //    newcode = code.Substring(0, code.Length - 4) +
                                //              (Convert.ToInt32(code.Substring(code.Length - 4, 4)) + 1).ToString()
                                //              .PadLeft(4, '0');
                                //    OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
                                //    NewOneCode = OneCode.Substring(0, OneCode.Length - 4) + (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) + 1).ToString().PadLeft(4, '0');
                                //}
                                //else
                                //{
                                //    newcode = partNo[j].ToString().Trim() + "." + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "." + "0001";
                                //    NewOneCode = stockNo[j].ToString().Trim() + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "0001";
                                //}

                                GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(), true, mould.ToString(), PartName, ref NewOneCode, ref newcode);

                                #region 插入数据tb_barCode

                                md.ID = Guid.NewGuid().ToString();
                                md.StationID = dt.Rows[0]["StationID"].ToString();
                                md.OneBarCode = NewOneCode;
                                md.BarCode = newcode;
                                md.StockNo = stockNo[j].ToString().Trim();
                                md.PartNo = partNo[j].ToString().Trim();
                                md.PrintType = 0;
                                md.PlanID = planID;
                                md.ProductNature = ProductNature;
                                md.Des1 = PartName;
                                DataTable pdt = productBll.SearchIsImportByPartNo(partNo[j].ToString());
                                if (pdt != null && pdt.Rows.Count > 0)
                                {
                                    if (pdt.Rows[0]["isImport"].ToString() == "1")
                                    {
                                        md.Import = "国产料Kingfa";
                                    }
                                    else
                                    {
                                        md.Import = "";
                                    }
                                }

                               // if (brbll.Add_Info_New(md, Program.tableName) == false)
                                    if (SaveBarCode(md, Program.tableName, true, same[j].ToString()) == false)
                                    {
                                    int a = 0;
                                    for (int l = 0; l < 5; l++)
                                    {
                                        //if (brbll.Add_Info_New(md, Program.tableName))
                                            if (SaveBarCode(md, Program.tableName, true, same[j].ToString()) == true)
                                            {
                                            break;
                                        }

                                        a += 1;
                                        Thread.Sleep(200);
                                    }

                                    if (a >= 4)
                                    {
                                        return;
                                    }
                                    //return;
                                }

                                #endregion

                                #region 增加产量

                                qmd.ID = Guid.NewGuid().ToString();
                                qmd.PlanID = planID;
                                qmd.StationID = getStationID(Program.station);
                                qmd.ProductDate = Program.ProductDate;
                                qmd.ClassName = Program.Shift;
                                qmd.StockNo = stockNo[j].ToString().Trim();
                                qmd.PartNo = partNo[j].ToString().Trim();
                                if (ProductNature == "售后件")
                                {
                                    qmd.MarketCount = 1;
                                }
                                else
                                {
                                    qmd.MarketCount = 0;
                                }

                                DataTable isExistdt = qbll.SearchInfo(qmd);
                                if (isExistdt != null && isExistdt.Rows.Count > 0)
                                {
                                    qbll.UpdateQty(qmd);
                                }
                                else
                                {
                                    qmd.ProductCount = 1;
                                    qbll.AddInfo(qmd);
                                }

                                #endregion

                                #region 打印条码,判断是否打印单个条码

                                //DataTable dt3 = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                                //if (dt3 != null && dt3.Rows.Count > 0)
                                //{
                                //    QLevel = dt3.Rows[0]["QLevel"].ToString();
                                //    IsOne = dt3.Rows[0]["IsPrintOneTag"].ToString();
                                //    IsPack = dt3.Rows[0]["IsPrintPackList"].ToString();
                                //    IsPaint = dt3.Rows[0]["IsPlating"].ToString();
                                //    PartName = dt3.Rows[0]["ProductName"].ToString();
                                //    MaxCount = Convert.ToInt32(dt3.Rows[0]["PackCount"].ToString());
                                //}

                                //DataTable dt4 = pbll.SearchInfo(partNo[j].ToString().Trim(),
                                //    dt.Rows[0]["StationID"].ToString());
                                //if (dt4 != null && dt4.Rows.Count > 0)
                                //{
                                //    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                                //}
                                printName = "Printer" + _printNameDict[partNo[j].ToString().Trim() + dt.Rows[0]["StationID"].ToString()];

                                #region 打印单个标签

                                if (IsOne == "1")
                                {
                                    filename = System.AppDomain.CurrentDomain.BaseDirectory + PrintMoudleName(); //new
                                    
                                    string reportName = ConfigurationManager.AppSettings[printName].ToString();
                                    DataTable headTable = GetPrintHeadTable(partNo[j].ToString().Trim(), PartName, NewOneCode, newcode);

                                    ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);

                                    rp.Report.Print(false);
                                }

                                #endregion

                                //DataTable dt5 = brbll.SearchBoxIsNull(partNo[j].ToString().Trim(),
                                //        dt.Rows[0]["StationID"].ToString(), Program.tableName, ProductNature);

                                //if (dt5 != null && dt5.Rows.Count > 0)
                                //{
                                //    CurrentCount = Convert.ToInt32(dt5.Rows[0]["SumCount"].ToString());
                                //}

                                //if (CurrentCount >= MaxCount)
                                //{
                                //    #region 判断是否满箱,满箱打印箱单

                                //    DialogResult result = MessageBox.Show("是否打印装箱单?", "提示", MessageBoxButtons.OKCancel,
                                //        MessageBoxIcon.Information);
                                //    if (result == DialogResult.OK)
                                //    {
                                //        filename = System.AppDomain.CurrentDomain.BaseDirectory + "装箱单.grf";
                                //        DataTable headTable = new DataTable();
                                //        headTable.Columns.Add("BoxNo");
                                //        headTable.Columns.Add("PartName");
                                //        headTable.Columns.Add("PartNo");
                                //        headTable.Columns.Add("BatchNo");
                                //        headTable.Columns.Add("PackCount");
                                //        headTable.Columns.Add("QLevel");
                                //        DataRow row = headTable.NewRow();

                                //        row["BatchNo"] = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2);

                                //        #region 查询当前批次装箱单

                                //        DataTable dt6 = boxbll.SeachInfoByBox(partNo[j].ToString().Trim(), Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2));
                                //        if (dt6 != null && dt6.Rows.Count > 0)
                                //        {
                                //            row["BoxNo"] =
                                //                dt6.Rows[0]["BoxNo"].ToString().Substring(0,
                                //                    dt6.Rows[0]["BoxNo"].ToString().Length - 6) +
                                //                (Convert.ToInt32(dt6.Rows[0]["BoxNo"].ToString()
                                //                     .Substring(dt6.Rows[0]["BoxNo"].ToString().Length - 6, 6)) + 1)
                                //                .ToString().PadLeft(6, '0');
                                //        }
                                //        else
                                //        {
                                //            row["BoxNo"] =
                                //                partNo[j].ToString().Trim() + "." +
                                //                Program.ProductDate.Substring(2, 2) +
                                //                Program.ProductDate.Substring(5, 2) +
                                //                Program.ProductDate.Substring(8, 2) + "." + "000001";
                                //        }

                                //        #endregion

                                //        row["PartNo"] = partNo[j].ToString().Trim();
                                //        row["PartName"] = PartName;
                                //        row["PackCount"] = MaxCount.ToString() + "  EA";
                                //        row["QLevel"] = QLevel;

                                //        #region 更新barCode表中BoxNo的绑定关系

                                //        brbll.UpdateBoxNo(Program.tableName, row["BoxNo"].ToString(),
                                //            partNo[j].ToString().Trim());

                                //        #endregion

                                //        #region 保存箱单记录

                                //        boxmd.ID = Guid.NewGuid().ToString();
                                //        boxmd.BoxNo = row["BoxNo"].ToString();
                                //        boxmd.IsFlag = 0;
                                //        boxmd.BoxCount = MaxCount;

                                //        boxbll.AddInfo(boxmd);

                                //        #endregion

                                //        #region 打印箱单

                                //        printBoxName = "Printer" + (Convert.ToInt32(printName.Substring(7, 1)) + 2).ToString();
                                //        string reportName = ConfigurationManager.AppSettings[printBoxName].ToString();
                                //        headTable.Rows.Add(row);

                                //        ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);

                                //        rp.Report.Print(false);

                                //        #endregion
                                //    }
                                //    else
                                //    {

                                //    }

                                //    #endregion
                                //}

                                #endregion
                            }
                            

                            initBarCode();
                        }

                        #endregion
                    }

                    #endregion

                    #endregion

                    #region 存ID

                    wmd.GID = Guid.NewGuid().ToString();
                    wmd.ID = wID;
                    wmd.DeviceNo = Program.station;
                    wrbll.AddInfo(wmd);

                    #endregion
                }

                #endregion

                timer1.Enabled = true;
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
            
        }

        private void initProduct()
        {
            comboBox2.Items.Clear();

            PlasticBLL bll= _plasticBLL;

            try
            {
                DataTable dt = bll.SearchPartByStation(Program.station);
                if (dt != null && dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        comboBox2.Items.Add(dt.Rows[i]["ProductName"].ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
            
        }

        private void GetClass()
        {
            try
            {
                DateTime aa = GetDateTime();

                if (GetDateTime().Hour >= 8 && GetDateTime().Hour < 20)
                {
                    Program.Shift = "A班";
                    Program.ProductDate = aa.ToString("yyyy-MM-dd");
                     
                }
                else
                {
                    Program.Shift = "B班";
                    if (GetDateTime().Hour >= 0 && GetDateTime().Hour < 8)
                    {
                        Program.ProductDate = aa.AddDays(-1).ToString("yyyy-MM-dd");
                    }
                    else if (GetDateTime().Hour >= 20 && GetDateTime().Hour <= 23)
                    {
                        Program.ProductDate = aa.ToString("yyyy-MM-dd");
                    }
                }
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
        }

        private DateTime GetDateTime()
        {
            string sql = "";
            DateTime time;
            DataTable dt;
            try
            {
                sql = @"select  convert(char(23),getdate(),121) as time";

                dt = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0];
                if (dt != null && dt.Rows.Count > 0)
                {
                    //time = Convert.ToDateTime(dt.Rows[0]["time"].ToString());
                    time = DateTime.ParseExact(dt.Rows[0]["time"].ToString(), "yyyy-MM-dd HH:mm:ss.fff",
                        System.Globalization.CultureInfo.CurrentCulture);

                }
                else
                {
                    time = DateTime.Now;
                }
                return time;
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                return DateTime.Now;
            }
        }

        private void initBarCode()
        {
            BarCodeBLL bll = new BarCodeBLL();

            try
            {
                glacialList1.Items.Clear();
                DataTable dt1 = bll.SearchInfo(Program.station);
                DataTable dt = dt1.Clone();
                //List<DataRow> list = dt1.AsEnumerable().Where(p => string.IsNullOrEmpty(p.Field<string>("BoxNo")) == false).ToList();
                List<DataRow> list = dt1.AsEnumerable().ToList();
                if (list.Count > 0)
                {
                    dt = list.CopyToDataTable();
                }
                Program.strBarCode = "";
                Program.strBoxCode = "";
                if (dt != null && dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        glacialList1.Items.Add(i.ToString());
                        glacialList1.Items[i].SubItems[0].Text = dt.Rows[i]["BarCode"].ToString();
                        glacialList1.Items[i].SubItems[0].Tag = dt.Rows[i]["BoxNo"].ToString();
                        glacialList1.Items[i].SubItems[1].Text = dt.Rows[i]["ProductName"].ToString();
                        glacialList1.Items[i].SubItems[2].Text = dt.Rows[i]["PrintType"].ToString();
                        glacialList1.Items[i].SubItems[3].Text = dt.Rows[i]["CreateTime"].ToString() == "" ? "" : Convert.ToDateTime(dt.Rows[i]["CreateTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
                        //glacialList1.Items[i].SubItems[4].Text = dt.Rows[i]["BoxNo"].ToString();
                        
                    }
                }
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
        }

        
        /// <summary>  
        /// 创建服务  
        /// </summary>  
        /// <returns></returns>  
        private bool CreateServer()
        {
            try
            {
                opcServer = new OPCServer();
            }
            catch
            {
                return false;
            }
            return true;
        }

        /// <summary>  
        /// 连接到服务器  
        /// </summary>  
        /// <param name="strHostIP"></param>  
        /// <param name="strHostName"></param>  
        /// <returns></returns>  
        private bool ConnectServer(string strHostIP, string strHostName)
        {
            try
            {
                opcServer.Connect(strHostName, strHostIP);
            }
            catch
            {
                return false;
            }
            return true;
        }

        /// <summary>  
        /// 设置组的属性   
        /// </summary>  
        /// <param name="opcGroup"></param>  
        /// <param name="updateRate"></param>
        
        private void SetGroupProperty(OPCGroup opcGroup, int updateRate)
        {
            opcGroup.IsActive = true;
            opcGroup.DeadBand = 0;
            opcGroup.UpdateRate = updateRate;
            opcGroup.IsSubscribed = true;
        }

        #region 调用键盘

        private const Int32 WM_SYSCOMMAND = 274;

        private const UInt32 SC_CLOSE = 61536;

        [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]

        private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

        [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]

        private static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);

        [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]

        private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

        [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]

        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]

        private static extern int RegisterWindowMessage(string lpString);



        //显示屏幕键盘

        public static int ShowInputPanel()
        {

            try
            {

                dynamic file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";

                if (!System.IO.File.Exists(file))

                    return -1;

                Process.Start(file);

                //return SetUnDock(); //不知SetUnDock()是什么,所以直接注释返回1

                return 1;

            }

            catch (Exception)
            {

                return 255;

            }

        }

        #endregion

        private void label2_Click(object sender, EventArgs e)
        {
            try
            {
                if (serialPort1.IsOpen)
                {
                    serialPort1.Close();
                }
                Environment.Exit(0);
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod());
                Environment.Exit(0);
            }
        }

       
        /// <summary>
        /// 手工打印条码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label23_Click(object sender, EventArgs e)
        {
            string code = "",stationID="",OneCode="";
            string newcode = "",partNo="",stockNo="",NewOneCode="";
            string IsPack = "", IsOne = "", QLevel = "", IsPaint = "", PartName = "", printBoxName="",IsSupply="",ManufacturerName="";
            string filename = "", printName = "";
            int MaxCount = 0, CurrentCount = 0;
            CheckPackageSelect();
            ProductBLL pbll = new ProductBLL();
            BarCodeBLL bll = new BarCodeBLL();
            BarCodeModel md = new BarCodeModel();
            PlasticBLL plbll= _plasticBLL;
            InjectionBoxBLL boxbll = new InjectionBoxBLL();
            InjectionBoxModel boxmd = new InjectionBoxModel();
            InjectionPlanBLL planbll=new InjectionPlanBLL();

            try
            {
                //if (status == false)
                //{
                //    MessageBox.Show("连接服务器失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //    return;
                //}

                #region 数据合法性判断

                if (comboBox2.Text.Trim() == "")
                {
                    MessageBox.Show("请选择产品!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                if (textBox1.Text.Trim() == "")
                {
                    MessageBox.Show("请输入批次!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                if (textBox1.Text.Trim().Length != 6)
                {
                    MessageBox.Show("批次格式不正确!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                if (textBox2.Text.Trim() == "")
                {
                    MessageBox.Show("请输入数量!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                if (!IsNumeric(textBox2.Text.Trim()))
                {
                    MessageBox.Show("数量格式不正确!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                //if (Convert.ToInt32(textBox2.Text.Trim()) > 10)
                //{
                //    MessageBox.Show("数量不能大于10!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //    return;
                //}

                #endregion

                #region 获取工位编号

                StationBLL sbll = new StationBLL();
                DataTable sdt = sbll.SearchInfoByNo(Program.station);
                if (sdt != null && sdt.Rows.Count > 0)
                {
                    stationID = sdt.Rows[0]["StationID"].ToString();
                }

                #endregion

                DialogResult result = MessageBox.Show("确定手工打印条码?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                if (result == DialogResult.OK)
                {
                    #region 查询零件号

                    DataTable pdt = pbll.SearchInfoByName(comboBox2.Text, "2000");
                    if (pdt != null && pdt.Rows.Count > 0)
                    {
                        partNo = pdt.Rows[0]["PartNo"].ToString().Trim();
                        stockNo = pdt.Rows[0]["StockNo"].ToString().Trim();
                        ManufacturerName = pdt.Rows[0]["ManufacturerName"].ToString().Trim();
                    }
                    else
                    {
                        MessageBox.Show($"零件[{comboBox2.Text}]在系统中不存在!");
                        return;
                    }

                    #endregion

                    #region 判断是否打印单个条码

                    DataTable dt3 = pbll.SearchInfoByPartNo(partNo);
                    if (dt3 != null && dt3.Rows.Count > 0)
                    {
                        QLevel = dt3.Rows[0]["QLevel"].ToString();
                        IsOne = dt3.Rows[0]["IsPrintOneTag"].ToString();
                        PartName = dt3.Rows[0]["ProductName"].ToString();
                        IsSupply = dt3.Rows[0]["IsSupply"].ToString();

                    }

                    #endregion

                    //todo 判断零件号和计划是不是一致

                    DataTable plandt = planbll.searchPlanInfo(planID);
                    if (plandt != null && plandt.Rows.Count > 0)
                    {
                        if (plandt.Rows[0]["PartNo"].ToString().Contains(partNo)==false)
                        {
                            planID = "";
                        }
                    }

                    if (IsSupply != "1")
                    {
                        #region 非直供件
                        int printCount = Convert.ToInt32(textBox2.Text.Trim());
                        for (int i = 1; i <= printCount; i++)
                        {
                            GetSjBarCode(stockNo, partNo,false,"0", PartName, ref NewOneCode, ref newcode);

                            string[] part = newcode.Split('.');

                            #region 插入数据tb_barCode

                            md.ID = Guid.NewGuid().ToString();
                            md.StationID = stationID;
                            md.OneBarCode = NewOneCode;
                            md.BarCode = newcode;
                            md.StockNo = stockNo;
                            md.PartNo = partNo;
                            md.PrintType = 1;
                            md.PlanID = planID;
                            
                            md.ProductNature = "正常件"; //第一次没有这个
                            md.Des1 = PartName;
                            DataTable dt2 = pbll.SearchIsImportByPartNo(partNo);
                            if (dt2 != null && dt2.Rows.Count > 0)
                            {
                                if (dt2.Rows[0]["isImport"].ToString() == "1")
                                {
                                    md.Import = "国产料Kingfa";
                                }
                                else
                                {
                                    md.Import = "";
                                }
                            }

                            //if (bll.Add_Info_New(md, Program.tableName) == false)
                            if (SaveBarCode(md, Program.tableName, false, "0",i== printCount) == false)
                            {
                                return;
                            }

                            #endregion

                            #region 打印单个标签

                            if (IsOne == "1")
                            {
                                //filename = System.AppDomain.CurrentDomain.BaseDirectory + "单个条码.grf";
                                filename = ManufacturerName.Contains("蔚来")
                                    ? System.AppDomain.CurrentDomain.BaseDirectory +
                                      "wl.grf"
                                    : System.AppDomain.CurrentDomain.BaseDirectory +
                                      PrintMoudleName(); //new
                                if (partNo.Contains("A2146982300") ||
                                    partNo.Contains("A2146982400"))
                                {
                                    filename = AppDomain.CurrentDomain.BaseDirectory +
                                               "Sill.grf";
                                }
                                
                                //DataTable dt4 = plbll.SearchInfo(partNo, stationID);
                                //if (dt4 != null && dt4.Rows.Count > 0)
                                //{
                                //    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                                //}
                                printName = "Printer" + _printNameDict[partNo + stationID];

                                string reportName = ConfigurationManager.AppSettings[printName].ToString();
                                DataTable headTable = GetPrintHeadTable(partNo, PartName, NewOneCode, newcode);

                                ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);
                                LogSysBLL.AddInfo(GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode, MethodBase.GetCurrentMethod());
                                rp.Report.Print(false);
                            }

                            #endregion


                        }

                        #region 原来的 已注释
                        //DataTable dt = bll.SearchSerialNoByBarCodeNew(partNo + "." + textBox1.Text.Trim(), Program.tableName);
                        //if (dt != null && dt.Rows.Count > 0)
                        //{
                        //    OneCode = dt.Rows[0]["OneBarCode"].ToString().Trim();
                        //    code = dt.Rows[0]["BarCode"].ToString().TrimEnd();
                        //    for (int i = 1; i <= Convert.ToInt32(textBox2.Text.Trim()); i++)
                        //    {
                        //        //newcode = code.Substring(0, code.Length - 4) +
                        //        //          (Convert.ToInt32(code.Substring(code.Length - 4, 4)) + i)
                        //        //          .ToString()
                        //        //          .PadLeft(4, '0');
                        //        ////86611-BU500.240826.0003
                        //        //if (OneCode != "")
                        //        //{
                        //        //    NewOneCode = OneCode.Substring(0, OneCode.Length - 4) +
                        //        //                 (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) + i)
                        //        //                 .ToString()
                        //        //                 .PadLeft(4, '0');
                        //        //}
                        //        //60000001942408260003
                        //        GetSjBarCode(stockNo, partNo, ref NewOneCode, ref newcode);
                        //        string[] part = newcode.Split('.');

                        //        #region 插入数据tb_barCode

                        //        md.ID = Guid.NewGuid().ToString();
                        //        md.StationID = stationID;
                        //        md.OneBarCode = NewOneCode;
                        //        md.BarCode = newcode;
                        //        md.StockNo = stockNo;
                        //        md.PartNo = partNo;
                        //        md.PrintType = 1;
                        //        md.PlanID = planID;

                        //        md.ProductNature = "正常件"; //第一次没有这个

                        //        DataTable dt2 = pbll.SearchIsImportByPartNo(partNo);
                        //        if (dt2 != null && dt2.Rows.Count > 0)
                        //        {
                        //            if (dt2.Rows[0]["isImport"].ToString() == "1")
                        //            {
                        //                md.Import = "国产料Kingfa";
                        //            }
                        //            else
                        //            {
                        //                md.Import = "";
                        //            }
                        //        }

                        //        if (bll.Add_Info_New(md, Program.tableName) == false)
                        //        {
                        //            return;
                        //        }

                        //        #endregion

                        //        #region 打印单个标签

                        //        if (IsOne == "1")
                        //        {
                        //            //filename = System.AppDomain.CurrentDomain.BaseDirectory + "单个条码.grf";
                        //            filename = ManufacturerName.Contains("蔚来")
                        //                ? System.AppDomain.CurrentDomain.BaseDirectory +
                        //                  "wl.grf"
                        //                : System.AppDomain.CurrentDomain.BaseDirectory +
                        //                  "单个条码.grf";
                        //            if (partNo.Contains("A2146982300") ||
                        //                partNo.Contains("A2146982400"))
                        //            {
                        //                filename = AppDomain.CurrentDomain.BaseDirectory +
                        //                           "Sill.grf";
                        //            }
                        //            DataTable headTable = new DataTable();
                        //            headTable.Columns.Add("PrintTime");
                        //            headTable.Columns.Add("PartNo");
                        //            headTable.Columns.Add("PartName");
                        //            headTable.Columns.Add("OneBarCode");
                        //            headTable.Columns.Add("BarCode");
                        //            DataRow row = headTable.NewRow();
                        //            row["PrintTime"] = GetDateTime().ToString("yyyy/MM/dd HH:mm:ss");
                        //            row["PartNo"] = partNo;
                        //            row["PartName"] = PartName;
                        //            row["OneBarCode"] = NewOneCode;
                        //            row["BarCode"] = newcode;

                        //            DataTable dt4 = plbll.SearchInfo(partNo, stationID);
                        //            if (dt4 != null && dt4.Rows.Count > 0)
                        //            {
                        //                printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                        //            }

                        //            string reportName = ConfigurationManager.AppSettings[printName].ToString();
                        //            headTable.Rows.Add(row);

                        //            ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);
                        //            LogSysBLL.AddInfo(GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode, MethodBase.GetCurrentMethod());
                        //            rp.Report.Print(false);
                        //        }

                        //        #endregion
                        //    }
                        //}
                        //else
                        //{
                        //    for (int i = 1; i <= Convert.ToInt32(textBox2.Text.Trim()); i++)
                        //    {
                        //        //newcode = partNo + "." + textBox1.Text.Trim() + "." + i.ToString().PadLeft(4, '0');
                        //        //NewOneCode = stockNo + textBox1.Text.Trim() + i.ToString().PadLeft(4, '0');

                        //        GetSjBarCode(stockNo, partNo,false, ref NewOneCode, ref newcode);
                        //        string[] part = newcode.Split('.');

                        //        #region 插入数据tb_barCode

                        //        md.ID = Guid.NewGuid().ToString();
                        //        md.StationID = stationID;
                        //        md.OneBarCode = NewOneCode;
                        //        md.BarCode = newcode;
                        //        md.StockNo = stockNo;
                        //        md.PartNo = partNo;
                        //        md.PrintType = 1;
                        //        md.PlanID = planID;

                        //        DataTable dt2 = pbll.SearchIsImportByPartNo(partNo);
                        //        if (dt2 != null && dt2.Rows.Count > 0)
                        //        {
                        //            if (dt2.Rows[0]["isImport"].ToString() == "1")
                        //            {
                        //                md.Import = "国产料Kingfa";
                        //            }
                        //            else
                        //            {
                        //                md.Import = "";
                        //            }
                        //        }

                        //        if (bll.Add_Info_New(md, Program.tableName) == false)
                        //        {
                        //            return;
                        //        }

                        //        #endregion

                        //        #region 打印单个标签

                        //        if (IsOne == "1")
                        //        {
                        //            //filename = System.AppDomain.CurrentDomain.BaseDirectory + "单个条码.grf";
                        //            filename = ManufacturerName.Contains("蔚来")
                        //                ? System.AppDomain.CurrentDomain.BaseDirectory +
                        //                  "wl.grf"
                        //                : System.AppDomain.CurrentDomain.BaseDirectory +
                        //                  "单个条码.grf";
                        //            DataTable headTable = new DataTable();
                        //            headTable.Columns.Add("PrintTime");
                        //            headTable.Columns.Add("PartNo");
                        //            headTable.Columns.Add("PartName");
                        //            headTable.Columns.Add("OneBarCode");
                        //            headTable.Columns.Add("BarCode");
                        //            DataRow row = headTable.NewRow();
                        //            row["PrintTime"] = GetDateTime().ToString("yyyy/MM/dd HH:mm:ss");
                        //            row["PartNo"] = partNo;
                        //            row["PartName"] = PartName;
                        //            row["OneBarCode"] = NewOneCode;
                        //            row["BarCode"] = newcode;

                        //            DataTable dt4 = plbll.SearchInfo(partNo, stationID);
                        //            if (dt4 != null && dt4.Rows.Count > 0)
                        //            {
                        //                printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                        //            }

                        //            string reportName = ConfigurationManager.AppSettings[printName].ToString();
                        //            headTable.Rows.Add(row);

                        //            ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);
                        //            LogSysBLL.AddInfo(GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode, MethodBase.GetCurrentMethod());
                        //            rp.Report.Print(false);
                        //        }

                        //        #endregion
                        //    }
                        //}
                        #endregion

                        #endregion
                    }
                    else
                    {
                        #region 直供件

                        for (int i = 1; i <= Convert.ToInt32(textBox2.Text.Trim()); i++)
                        {
                            //newcode = code.Substring(0, code.Length - 4) +
                            //          (Convert.ToInt32(code.Substring(23, 3)) +
                            //           i).ToString()
                            //          .PadLeft(3, '0') + "#";
                            GetSupplyCode(stockNo, partNo, QLevel,false, "0", PartName, ref NewOneCode, ref newcode);

                            #region 插入数据tb_barCode

                            md.ID = Guid.NewGuid().ToString();
                            md.StationID = stationID;
                            md.OneBarCode = NewOneCode;
                            md.BarCode = newcode;
                            md.StockNo = stockNo;
                            md.PartNo = partNo;
                            md.PrintType = 1;
                            md.PlanID = planID;

                            DataTable dt2 = pbll.SearchIsImportByPartNo(partNo);
                            if (dt2 != null && dt2.Rows.Count > 0)
                            {
                                if (dt2.Rows[0]["isImport"].ToString() == "1")
                                {
                                    md.Import = "国产料Kingfa";
                                }
                                else
                                {
                                    md.Import = "";
                                }
                            }

                            //if (bll.Add_Info_New(md, Program.tableName) == false)
                                if (SaveBarCode(md, Program.tableName, false, "0") == false)
                                {
                                return;
                            }

                            #endregion

                            #region 打印单个标签

                            if (IsOne == "1")
                            {
                                filename = System.AppDomain.CurrentDomain.BaseDirectory + PrintMoudleName();
                                
                                //DataTable dt4 = plbll.SearchInfo(partNo, stationID);
                                //if (dt4 != null && dt4.Rows.Count > 0)
                                //{
                                //    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                                //}
                                printName = "Printer" + _printNameDict[partNo + stationID];

                                string reportName = ConfigurationManager.AppSettings[printName].ToString();
                                DataTable headTable = GetPrintHeadTable(partNo, PartName, NewOneCode, newcode);

                                ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);
                                LogSysBLL.AddInfo(GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode, MethodBase.GetCurrentMethod());
                                rp.Report.Print(false);
                            }

                            #endregion
                        }



                        //DataTable dts = bll.SearchInfoByPartNo1(partNo);
                        //if (dts != null && dts.Rows.Count > 0)
                        //{
                        //    code = dts.Rows[0]["BarCode"].ToString().Trim();
                        //    for (int i = 1; i <= Convert.ToInt32(textBox2.Text.Trim()); i++ )
                        //    {
                        //        newcode = code.Substring(0, code.Length - 4) +
                        //                  (Convert.ToInt32(code.Substring(23, 3)) +
                        //                   i).ToString()
                        //                  .PadLeft(3, '0') + "#";
                        //        需要用GetSupplyCode新生成

                        //        #region 插入数据tb_barCode

                        //        md.ID = Guid.NewGuid().ToString();
                        //        md.StationID = stationID;
                        //        md.OneBarCode = NewOneCode;
                        //        md.BarCode = newcode;
                        //        md.StockNo = stockNo;
                        //        md.PartNo = partNo;
                        //        md.PrintType = 1;
                        //        md.PlanID = planID;

                        //        DataTable dt2 = pbll.SearchIsImportByPartNo(partNo);
                        //        if (dt2 != null && dt2.Rows.Count > 0)
                        //        {
                        //            if (dt2.Rows[0]["isImport"].ToString() == "1")
                        //            {
                        //                md.Import = "国产料Kingfa";
                        //            }
                        //            else
                        //            {
                        //                md.Import = "";
                        //            }
                        //        }

                        //        if (bll.Add_Info_New(md, Program.tableName) == false)
                        //        {
                        //            return;
                        //        }

                        //        #endregion

                        //        #region 打印单个标签

                        //        if (IsOne == "1")
                        //        {
                        //            filename = System.AppDomain.CurrentDomain.BaseDirectory + "单个条码1.grf";
                        //            DataTable headTable = new DataTable();
                        //            headTable.Columns.Add("PrintTime");
                        //            headTable.Columns.Add("PartNo");
                        //            headTable.Columns.Add("PartName");
                        //            headTable.Columns.Add("OneBarCode");
                        //            headTable.Columns.Add("BarCode");
                        //            DataRow row = headTable.NewRow();
                        //            row["PrintTime"] = GetDateTime().ToString("yyyy/MM/dd HH:mm:ss");
                        //            row["PartNo"] = partNo;
                        //            row["PartName"] = PartName;
                        //            row["OneBarCode"] = NewOneCode;
                        //            row["BarCode"] = newcode;

                        //            DataTable dt4 = plbll.SearchInfo(partNo, stationID);
                        //            if (dt4 != null && dt4.Rows.Count > 0)
                        //            {
                        //                printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                        //            }

                        //            string reportName = ConfigurationManager.AppSettings[printName].ToString();
                        //            headTable.Rows.Add(row);

                        //            ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);
                        //            LogSysBLL.AddInfo(GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode, MethodBase.GetCurrentMethod());
                        //            rp.Report.Print(false);
                        //        }

                        //        #endregion
                        //    }
                        //}
                        //else
                        //{
                        //    for (int i = 1; i <= Convert.ToInt32(textBox2.Text.Trim()); i++)
                        //    {
                        //        newcode = partNo + "#" + QLevel + "#" +
                        //                  textBox1.Text.Trim() + "#" + i.ToString().PadLeft(3, '0') + "#";
                        //        需要用GetSupplyCode新写
                        //        #region 插入数据tb_barCode

                        //        md.ID = Guid.NewGuid().ToString();
                        //        md.StationID = stationID;
                        //        md.OneBarCode = NewOneCode;
                        //        md.BarCode = newcode;
                        //        md.StockNo = stockNo;
                        //        md.PartNo = partNo;
                        //        md.PrintType = 1;
                        //        md.PlanID = planID;

                        //        DataTable dt2 = pbll.SearchIsImportByPartNo(partNo);
                        //        if (dt2 != null && dt2.Rows.Count > 0)
                        //        {
                        //            if (dt2.Rows[0]["isImport"].ToString() == "1")
                        //            {
                        //                md.Import = "国产料Kingfa";
                        //            }
                        //            else
                        //            {
                        //                md.Import = "";
                        //            }
                        //        }

                        //        if (bll.Add_Info_New(md, Program.tableName) == false)
                        //        {
                        //            return;
                        //        }

                        //        #endregion

                        //        #region 打印单个标签

                        //        if (IsOne == "1")
                        //        {
                        //            filename = System.AppDomain.CurrentDomain.BaseDirectory + "单个条码1.grf";
                        //            DataTable headTable = new DataTable();
                        //            headTable.Columns.Add("PrintTime");
                        //            headTable.Columns.Add("PartNo");
                        //            headTable.Columns.Add("PartName");
                        //            headTable.Columns.Add("OneBarCode");
                        //            headTable.Columns.Add("BarCode");
                        //            DataRow row = headTable.NewRow();
                        //            row["PrintTime"] = GetDateTime().ToString("yyyy/MM/dd HH:mm:ss");
                        //            row["PartNo"] = partNo;
                        //            row["PartName"] = PartName;
                        //            row["OneBarCode"] = NewOneCode;
                        //            row["BarCode"] = newcode;

                        //            DataTable dt4 = plbll.SearchInfo(partNo, stationID);
                        //            if (dt4 != null && dt4.Rows.Count > 0)
                        //            {
                        //                printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                        //            }

                        //            string reportName = ConfigurationManager.AppSettings[printName].ToString();
                        //            headTable.Rows.Add(row);

                        //            ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);
                        //            LogSysBLL.AddInfo(GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + NewOneCode, MethodBase.GetCurrentMethod());
                        //            rp.Report.Print(false);
                        //        }

                        //        #endregion
                        //    }
                        //}

                        #endregion
                    }
                    
                    initBarCode();
                }
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                MessageBox.Show(ex.ToString());
            }
        }

        private static bool IsNumeric(string str)
        {
            System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[0-9]\d*$");
            return reg1.IsMatch(str);
        }

        private static string getStationID(string stationName)
        {
            try
            {
                string id = "";
                StationBLL bll=new StationBLL();

                DataTable dt = bll.SearchInfoByNo(stationName);
                if (dt != null && dt.Rows.Count > 0)
                {
                    id = dt.Rows[0]["StationID"].ToString();
                }
                else
                {
                    id = "";
                }

                return id;

            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                return "";
            }
        }

        /// <summary>
        /// 补打条码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label22_Click(object sender, EventArgs e)
        {
            string code = "", filename = "", printName = "", ManufacturerName="";
            BarCodeModel md = new BarCodeModel();
            BarCodeBLL bll = new BarCodeBLL();
            ProductBLL pbll = new ProductBLL();
            PlasticBLL plbll = _plasticBLL;
            try
            {
                if (glacialList1.SelectedItems.Count == 0)
                {
                    MessageBox.Show("请选择要补打的条码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    GlacialComponents.Controls.GLItem gv;
                    gv = glacialList1.SelectedItems[0] as GlacialComponents.Controls.GLItem;
                    code = gv.Text;
                    DialogResult result = MessageBox.Show($"补打条码[{code}]将被新的替换,确定补打条码?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                    if (result == DialogResult.OK)
                    {

                        bool exsitWms = _wmsBll.IsReadBarCodeInWms(code);
                        if (exsitWms)
                        {
                            MessageBox.Show($"条码[{code}]在WMS系统已处理,无法补打!");
                            return;
                        }

                        DataTable dt = bll.SearchInfoByBarCodeNew(code, Program.tableName);
                        if (dt != null && dt.Rows.Count > 0)
                        {
                            md.ID = Guid.NewGuid().ToString();
                            //md.BarCode = code;
                            md.StationID = dt.Rows[0]["StationID"].ToString();
                            md.StockNo = dt.Rows[0]["StockNo"].ToString();
                            md.PartNo = dt.Rows[0]["PartNo"].ToString();
                            md.BatchNo = dt.Rows[0]["BatchNo"].ToString();
                            string newOneCode = string.Empty;
                            string newBarCode = string.Empty;
                            GetBarCode(md.StockNo, md.BatchNo, md.PartNo, ref newOneCode, ref newBarCode);
                            md.OneBarCode = newOneCode; 
                            md.BarCode = newBarCode;
                            md.BoxNo = dt.Rows[0]["BoxNo"].ToString();
                            if (gv.SubItems.Count > 1)
                            {
                                md.Des1 = gv.SubItems[1].Text;
                            }

                            md.PrintType = 2;

                            //DataTable pdt = pbll.SearchIsImportByPartNo(md.PartNo);

                            DataTable pdt = pbll.SearchInfoByPartNo(md.PartNo);
                            if (pdt != null && pdt.Rows.Count > 0)
                            {
                                if (pdt.Rows[0]["isImport"].ToString() == "1")
                                {
                                    md.Import = "国产料Kingfa";
                                }
                                else
                                {
                                    md.Import = "";
                                }

                                ManufacturerName = pdt.Rows[0]["ManufacturerName"].ToString().Trim();

                            }
                        }
                        else
                        {
                            MessageBox.Show($"补打失败,条码[{code}]在表[{ Program.tableName}]中不存在!");
                            return;
                        }

                        string msg = bll.ReprintSave(md, Program.tableName, dt.Rows[0]["OneBarCode"].ToString(), dt.Rows[0]["BarCode"].ToString(),Program.station);
                        if (!string.IsNullOrEmpty(msg))
                        {
                            MessageBox.Show($"补打失败,原因:" + msg);
                            return;
                        }
                        //if (bll.Add_Info_New(md, Program.tableName) == false)
                        //{
                        //    return;
                        //}
                        glacialList1.SelectedItems.Clear();
                        initBarCode();

                        #region 打印条码

                        //filename = System.AppDomain.CurrentDomain.BaseDirectory + "单个条码.grf";
                        filename = ManufacturerName.Contains("蔚来")
                            ? AppDomain.CurrentDomain.BaseDirectory +
                              "wl.grf"
                            : AppDomain.CurrentDomain.BaseDirectory +
                              PrintMoudleName(); //new
                        if (md.PartNo.Contains("A2146982300") ||
                            md.PartNo.Contains("A2146982400"))
                        {
                            filename = AppDomain.CurrentDomain.BaseDirectory +
                                       "Sill.grf";
                        }
                      
                        string partName = "";
                        DataTable dt2 = pbll.SearchInfoByPartNo(md.PartNo);
                        if (dt2 != null && dt2.Rows.Count > 0)
                        {
                            partName = dt2.Rows[0]["ProductName"].ToString();
                        }
                        else
                        {
                            partName = "";
                        }


                        //DataTable dt4 = plbll.SearchInfo(md.PartNo, md.StationID);
                        //if (dt4 != null && dt4.Rows.Count > 0)
                        //{
                        //    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                        //}
                        printName = "Printer" + _printNameDict[md.PartNo + md.StationID];

                        string reportName = ConfigurationManager.AppSettings[printName].ToString();
                        DataTable headTable = GetPrintHeadTable(md.PartNo, partName, md.OneBarCode, md.BarCode);


                        ReportHelper rp = new ReportHelper(filename, headTable, null,
                            (int) GRPaperOrientation.grpoDefault, 1, reportName);
                        LogSysBLL.AddInfo(GetDateTime().ToString("yyyy/MM/dd HH:mm:ss") + md.OneBarCode, MethodBase.GetCurrentMethod());
                        rp.Report.Print(false);

                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
        }

        /// <summary>
        /// 补打箱单
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label16_Click(object sender, EventArgs e)
        {
            panel44.Visible = true;
        }

        /// <summary>
        /// 删除条码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label15_Click(object sender, EventArgs e)
        {
            BarCodeBLL bll = new BarCodeBLL();
            BarCodeModel md = new BarCodeModel();

            try
            {
                if (glacialList1.SelectedItems.Count == 0)
                {
                    MessageBox.Show("请选择要删除的条码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    DialogResult result = MessageBox.Show("确定删除条码?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                    if (result == DialogResult.OK)
                    {
                        GlacialComponents.Controls.GLItem gv;
                        gv = glacialList1.SelectedItems[0] as GlacialComponents.Controls.GLItem;
                        md.BarCode = gv.Text;
                        string boxCode = (glacialList1.SelectedItems[0] as GlacialComponents.Controls.GLItem).SubItems[0].Tag?.ToString();
                        if(boxCode == lbPackageCodeL.Text?.Trim() || boxCode == lbPackageCodeR.Text?.Trim())
                        {
                            string msg = bll.DelBarCode(gv.Text?.Trim(), Program.tableName,true, boxCode);
                            if (!string.IsNullOrEmpty(msg))
                            {
                                MessageBox.Show(msg);
                            }
                            else
                            {
                                InitPackageInfo();
                            }
                            initBarCode();
                        }
                        else
                        {
                            MessageBox.Show($" 删除条码的箱码[{boxCode}]不属于当前装箱范围内,无法删除.!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                       
                    }
                }
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
        }


        /// <summary>
        /// 补打装箱单确定按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                InjectionBoxBLL boxbll=new InjectionBoxBLL();
                InjectionBoxModel boxmd=new InjectionBoxModel();
                BarCodeBLL bll=new BarCodeBLL();
                ProductBLL pbll=new ProductBLL();
                PlasticBLL plbll= _plasticBLL;
                StationBLL sbll=new StationBLL();
                string filename = "", printName = "", printBoxName="",stationID="";
                 
                #region 验证输入合法性

                if (textBox3.Text.Trim() == "")
                {
                    MessageBox.Show("请输入箱单号", "提示", MessageBoxButtons.OK);
                    return;
                }

                DataTable dt = boxbll.SearchBox(textBox3.Text.Trim());
                if (dt != null && dt.Rows.Count > 0)
                {
                    DataTable dt1 = bll.SearchCountByBox(textBox3.Text.Trim(), Program.tableName);
                    if (dt1 != null && dt1.Rows.Count > 0)
                    {
                        #region 查找该箱单内容

                        filename = System.AppDomain.CurrentDomain.BaseDirectory + "装箱单.grf";
                        DataTable headTable = new DataTable();
                        headTable.Columns.Add("BoxNo");
                        headTable.Columns.Add("PartName");
                        headTable.Columns.Add("PartNo");
                        headTable.Columns.Add("BatchNo");
                        headTable.Columns.Add("PackCount");
                        headTable.Columns.Add("QLevel");
                        DataRow row = headTable.NewRow();

                        string[] box = textBox3.Text.Trim().Split('.');
                        row["BoxNo"] = textBox3.Text.Trim();
                        row["PartNo"] = box[0].Trim();

                        DataTable dt2 = pbll.SearchInfoByPartNo(row["PartNo"].ToString());
                        if (dt2 != null && dt2.Rows.Count > 0)
                        {
                            row["PartName"] = dt2.Rows[0]["ProductName"].ToString();
                        }

                        row["BatchNo"] = box[1].Trim();
                        row["PackCount"] = dt1.Rows[0]["SumCount"].ToString();
                        row["QLevel"] = dt2.Rows[0]["QLevel"].ToString();

                        #endregion

                        #region 保存箱单

                        boxmd.ID = Guid.NewGuid().ToString();
                        boxmd.BoxNo = textBox3.Text.Trim();
                        boxmd.IsFlag = 1;
                        boxmd.BoxCount = Convert.ToInt32(dt1.Rows[0]["SumCount"].ToString());

                        boxbll.AddInfo(boxmd);

                        #endregion

                        #region 打印箱单

                        #region 查询工位ID

                        DataTable sdt = sbll.SearchInfoByNo(Program.station);
                        if (sdt != null && sdt.Rows.Count > 0)
                        {
                            stationID = sdt.Rows[0]["StationID"].ToString();
                        }

                        #endregion

                        #region 查询打印机名称

                        //DataTable dt3 = plbll.SearchInfo(row["PartNo"].ToString(), stationID);
                        //if (dt3 != null && dt3.Rows.Count > 0)
                        //{
                        //    printName = "Printer" + dt3.Rows[0]["PrinterNo"].ToString();
                        //}
                        printName = "Printer" + _printNameDict[row["PartNo"].ToString() + stationID];

                        #endregion

                        printBoxName = "Printer" + (Convert.ToInt32(printName.Substring(7, 1)) + 2).ToString();
                        string reportName = ConfigurationManager.AppSettings[printBoxName].ToString();
                        headTable.Rows.Add(row);

                        ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);

                        rp.Report.Print(false);

                        #endregion

                        panel44.Visible = false;
                        textBox3.Text = "";

                       
                    }
                }
                else
                {
                    MessageBox.Show("此箱单不存在,请重新输入", "提示", MessageBoxButtons.OK);
                    textBox3.Focus();
                    return;
                }

                #endregion
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            panel44.Visible = false;
            textBox3.Text = "";
        }

        /// <summary>
        /// 下一计划
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label14_Click(object sender, EventArgs e)
        {
            try
            {
                if (UnCompletePrintBox("切换下一计划","all") == false) return;

                InjectionPlanBLL planbll=new InjectionPlanBLL();
                
                #region 查询有无下一计划

                DataTable dt = planbll.NextSearchInfoByName(Program.station);
                if (dt != null && dt.Rows.Count > 1)
                { 
                    planID = dt.Rows[0]["InjectionPlanID"].ToString();
                    productID = dt.Rows[0]["ProductID"].ToString();
                    nextproductID = dt.Rows[1]["InjectionPlanID"].ToString();
                    panel45.Visible = true;
                    if (lbCurrentlQtyL.Text == "0" || string.IsNullOrEmpty(lbCurrentlQtyL.Text))
                    {
                        lbPackageCodeL.Text = "";
                    }
                    if (lbCurrentlQtyR.Text == "0" || string.IsNullOrEmpty(lbCurrentlQtyR.Text))
                    {
                        lbPackageCodeR.Text = "";
                    }


                }
                else
                {
                    MessageBox.Show("暂无下一计划,请联系计划员!", "提示", MessageBoxButtons.OK);
                    return;
                }

                #endregion
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
        }

        /// <summary>
        /// 切换模具
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                ModelInfoBLL bll=new ModelInfoBLL();
                ModelProductBLL mbll=new ModelProductBLL();
                InjectionPlanBLL ibll=new InjectionPlanBLL();
                InjectionPlanModel md=new InjectionPlanModel();
                ProductBLL productBll = new ProductBLL();
                string aa = "";
                string[] partNo = null; 
                

                #region 验证数据有效性  模具条码不全暂时先屏蔽

                if (textBox4.Text.Trim() == "")
                {
                    MessageBox.Show("请扫描模具条码!", "提示", MessageBoxButtons.OK);
                    textBox4.Focus();
                    return;
                }

                #endregion

                #region 更新上一计划为完成模具条码不全暂时直接更新计划,后期需要屏蔽,打开下面的Region

                //StationBLL sbll = new StationBLL();
                //DataTable sdt = sbll.SearchInfoByNo(Program.station);
                //if (sdt != null && sdt.Rows.Count > 0)
                //{
                //    md.StationID = sdt.Rows[0]["StationID"].ToString();
                //}

                //ibll.UpdateFinish(md);

                #endregion

                #region 判断模具编号是否存在 模具条码不全暂时先屏蔽

                DataTable dt5 = bll.SearchInfo(textBox4.Text.Trim());
                if (dt5 != null && dt5.Rows.Count > 0)
                {
                    #region 校验模具和下一计划是否匹配

                    DataTable nextdt = ibll.NextSearchInfoByName(Program.station);
                    if (nextdt != null && nextdt.Rows.Count > 1)
                    {
                        nextPlanID = nextdt.Rows[1]["InjectionPlanID"].ToString();
                        aa= nextdt.Rows[1]["PartNo"].ToString();
                        partNo = aa.Split(',');

                        DataTable dt1 = mbll.SearchInfo(textBox4.Text.Trim(), partNo[0]);
                        if (dt1 != null && dt1.Rows.Count > 0)
                        {
                            #region 更新上一计划为完成

                            //#region 获取工位编号

                            //StationBLL sbll1 = new StationBLL();
                            //DataTable sdt1 = sbll1.SearchInfoByNo(Program.station);
                            //if (sdt1 != null && sdt1.Rows.Count > 0)
                            //{
                            //    md.StationID = sdt1.Rows[0]["StationID"].ToString();
                            //}

                            //#endregion
                            md.InjectionPlanID = planID;
                            ibll.UpdateFinish(md);
                            if (!string.IsNullOrEmpty(nextPlanID) && nextPlanID != planID)
                            {
                                ibll.UpdatePlanStartTime(nextPlanID);
                            }

                            #endregion

                            panel45.Visible = false;
                            textBox4.Text = "";

                        }
                        else
                        {
                            MessageBox.Show("模具和计划不匹配!", "提示", MessageBoxButtons.OK);
                            textBox4.SelectAll();
                            textBox4.Focus();
                            return;
                        }
                        
                    }
                    else
                    {
                        #region 更新上一计划为完成

                        //StationBLL sbll1 = new StationBLL();
                        //DataTable sdt1 = sbll1.SearchInfoByNo(Program.station);
                        //if (sdt1 != null && sdt1.Rows.Count > 0)
                        //{
                        //    md.StationID = sdt1.Rows[0]["StationID"].ToString();
                        //}

                        //md.InjectionPlanID = planID;
                        //ibll.UpdateFinish(md);

                        #endregion

                        label12.Text = "暂无一下生产计划";
                        return;
                    }

                    

                    #endregion
                }
                else
                {
                    MessageBox.Show("模具条码不存在!", "提示", MessageBoxButtons.OK);
                    textBox4.Focus();
                    return;
                }

                #endregion

                panel45.Visible = false;

                #region 获取当前生产信息

                //DataTable dt = ibll.SearchInfoByName(Program.station);
                //if (dt != null && dt.Rows.Count > 0)
                //{
                //    planID = dt.Rows[0]["InjectionPlanID"].ToString();
                //    string[] partNo1 = dt.Rows[0]["PartNo"].ToString().Split(',');

                //    label12.Text = "当前生产计划为:";
                //    for (int i = 0; i < partNo1.Length; i++)
                //    {
                //        DataTable dt2 = productBll.SearchInfoByPartNo(partNo1[i].ToString().Trim());
                //        if (dt2 != null && dt2.Rows.Count > 0)
                //        {
                //            label12.Text += "零件号" + partNo1[i].ToString().Trim() + ",零件名称" + dt2.Rows[0]["ProductName"].ToString() + ";";
                //        }
                //    }
                //}
                //else
                //{
                //    label12.Text = "暂无生产计划";
                //}
                initPlan();

                #endregion
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            panel45.Visible = false;
            textBox4.Text = "";
        }

        /// <summary>
        /// 暂停打印
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label13_Click(object sender, EventArgs e)
        {
            try
            {
                
                if (label13.Text == "暂停打印")
                {
                   
                    DialogResult result = MessageBox.Show("确认暂停打印?", "提示", MessageBoxButtons.OKCancel,
                        MessageBoxIcon.Information);
                    if (result == DialogResult.OK)
                    {
                        if (UnCompletePrintBox("切换手动打印","all") == false) return;
                        opcGroup1.DataChange -= new DIOPCGroupEvent_DataChangeEventHandler(opcGroup1_DataChange);
                        cboxHandBox.Enabled = true;
                        opcServer.OPCGroups.RemoveAll();
                        opcServer.Disconnect();
                        serialPort1.Close();
                        comboBox2.Enabled = true;
                        label23.Enabled = true;
                        label23.BackColor = System.Drawing.Color.DeepSkyBlue;
                        //if (ConfigurationManager.AppSettings["StationMode"].ToString() == "1")
                        //{
                        //    timer1.Enabled = false;
                        //}
                        //if (ConfigurationManager.AppSettings["StationMode"].ToString() == "2")
                        //{
                        //    serialPort1.Close();
                        //}
                        label13.Text = "开始打印";
                        label13.BackColor = System.Drawing.Color.Gray;
                    }
                    else
                    {
                        return;
                    }
                }

                else
                {
                   
                    DialogResult result = MessageBox.Show("确认开始打印?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                    if (result == DialogResult.OK)
                    {
                        if (UnCompletePrintBox("切换自动打印","all") == false) return;

                        cboxHandBox.Enabled = false;
                        comboBox2.Enabled = false;
                        #region 连接PLC  
                        try
                        {
                            if (CreateServer())
                            {
                                if (ConnectServer(strHostIP, "Kepware.KEPServerEX.V6"))
                                {
                                    Connected = true;

                                    #region 创建组

                                    opcGroups = opcServer.OPCGroups;
                                    opcGroup1 = opcGroups.Add("Mould");
                                    SetGroupProperty(opcGroup1, 500);

                                    #endregion

                                    #region 创建项

                                    opcItems1 = opcGroup1.OPCItems;
                                    opcItems1.DefaultIsActive = true;

                                    PLCMouldBLL PLCbll = new PLCMouldBLL();
                                    PLCBreakBLL bbll = new PLCBreakBLL();

                                    DataTable PLCdt = PLCbll.SearchMould(Program.station);
                                    if (PLCdt != null && PLCdt.Rows.Count > 0)
                                    {
                                        opcItemm1 = new OPCItem[PLCdt.Rows.Count];
                                        for (int i = 0; i < PLCdt.Rows.Count; i++)
                                        {
                                            opcItemm1[i] = opcItems1.AddItem(PLCdt.Rows[i]["Address"].ToString(), i);
                                        }
                                    }

                                    Thread.Sleep(200);

                                    opcGroup1.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup1_DataChange);


                                    #endregion
                                }
                                else
                                {
                                    MessageBox.Show("连接到OPC服务器失败!", "提示", MessageBoxButtons.OK);
                                    Connected = false;
                                    LogHelper.WriteLog("连接到OPC服务器失败!");
                                    return;
                                }
                            }
                            else
                            {
                                MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK);
                                Connected = false;
                                LogHelper.WriteLog("创建OPC服务失败!");
                                return;
                            }
                           
                        }
                        catch(Exception ex)
                        {
                            MessageBox.Show("创建OPC服务失败!", "提示", MessageBoxButtons.OK);
                            Connected = false;
                            LogHelper.WriteLog("创建OPC服务失败!");
                            LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                            return;
                        }
                       

                        #endregion

                        
                        //if (ConfigurationManager.AppSettings["StationMode"].ToString() == "1")
                        //{
                        //    timer1.Enabled = true;
                        //}
                        //if (ConfigurationManager.AppSettings["StationMode"].ToString() == "2")
                        //{
                        //    if (serialPort1.IsOpen)
                        //    {
                        //        serialPort1.Close();
                        //        serialPort1.Open();
                        //    }
                        //    else
                        //    {
                        //        serialPort1.Open();
                        //    }
                        //}

                        label13.Text = "暂停打印";
                        label13.BackColor = System.Drawing.Color.DeepSkyBlue;
                        label23.Enabled = false;
                        label23.BackColor = System.Drawing.Color.Gray;
                        textBox2.Text = "";
                    }
                    else
                    {
                        return;
                    }
                }
                
            }
        
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
        }

        /// <summary>
        /// 质量录入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label9_Click(object sender, EventArgs e)
        {
            FrmQuality fr = new FrmQuality();
            fr.QualityViewClosed += (arg1) =>
            {
                try
                {
                    InitPackageInfo();
                    initBarCode();
                    if (arg1.Contains(lbPackageCodeL.Text?.Trim()))
                    {
                        lbPackageCodeL.Text = "";
                        lbCurrentlQtyL.Text = "0";
                    }
                    else if (arg1.Contains(lbPackageCodeR.Text?.Trim()))
                    {
                        lbPackageCodeR.Text = "";
                        lbCurrentlQtyR.Text = "0";
                    }
                }
               catch(Exception ex)
                {
                    LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                }
            };
            fr.Show();
        }

        /// <summary>
        /// 停机录入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label10_Click(object sender, EventArgs e)
        {
            Form fr = new FrmDown();
            fr.Show();
        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                base.Invoke(new EventHandler(this.Scan));
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
            
        }

        private void Scan(object sender, EventArgs e)
        {
            string _code_meca = "",printBoxName="";
            try
            {
                Thread.Sleep(1500);
                char[] buffer = new char[serialPort1.BytesToRead];
                serialPort1.Read(buffer, 0, serialPort1.BytesToRead);
                for (int i = 0; i < buffer.Length; i++)
                {
                    _code_meca = _code_meca + buffer[i];
                }

                GetClass();

                string aa = _code_meca;

                var result1 = System.Text.RegularExpressions.Regex.Replace(aa, @"\s*\n\s*", ",");
                result1 = System.Text.RegularExpressions.Regex.Replace(aa, @"\s*\f\s*", ",");
                result1 = System.Text.RegularExpressions.Regex.Replace(aa, @"\s*\r\s*", ",");
                result1 = result1.Remove(result1.LastIndexOf(","), 1);
                result1 = result1.Remove(result1.LastIndexOf("g"), 1);
                int idxStart = result1.LastIndexOf(" ");
                string value = result1.Substring(idxStart, result1.Length - idxStart).Trim();
                string[] b = value.Split('.');
                string c = b[0];
                string d = b[1];
                int chengzhong = Convert.ToInt32(c);
                int chengzhong1 = Convert.ToInt32(d);
                if (chengzhong1 >= 5)
                {
                    chengzhong = chengzhong + 1; //重量
                }

                InjectionPlanBLL bll = new InjectionPlanBLL();
                BarCodeBLL brbll = new BarCodeBLL();
                BarCodeModel md = new BarCodeModel();
                ProductBLL productBll = new ProductBLL();
                PlasticBLL pbll = _plasticBLL;
                InjectionBoxBLL boxbll = new InjectionBoxBLL();
                InjectionBoxModel boxmd = new InjectionBoxModel();
                DataTable dt2 = null;
                string code = "", OneCode = "";
                string newcode = "", newcode1 = "", NewOneCode = "", NewOneCode1 = "";
                string IsPack = "", IsOne = "", QLevel = "", IsPaint = "", PartName = "",IsSupply="";
                string filename = "", printName = "";
                int MaxCount = 0, CurrentCount = 0;

                #region 查找当前计划

                DataTable dt = bll.SearchInfoByName(Program.station);
                if (dt != null && dt.Rows.Count > 0)
                {
                    planID = dt.Rows[0]["InjectionPlanID"].ToString();
                    string[] partNo = dt.Rows[0]["PartNo"].ToString().Split(',');
                    string[] stockNo = new string [partNo.Length];
                    //string[] stockNo = dt.Rows[0]["StockNo"].ToString().Split(',');
                    string ProductNature = dt.Rows[0]["ProductNature"].ToString();
                    int IsSame = 0;

                    #region 判断有几个零件号
                    string mould = "0";
                    for (int j = 0; j < partNo.Length; j++)
                    {
                        #region 根据零件号查找存货代码

                        DataTable sdt = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                        if (sdt != null && sdt.Rows.Count > 0)
                        {
                            stockNo[j] = sdt.Rows[0]["StockNo"].ToString();
                            IsSame=Convert.ToInt32(sdt.Rows[0]["IsSame"].ToString());
                        }
                        else
                        {
                            stockNo[j] = "";
                            IsSame = 0;
                        }

                        #endregion

                        DataTable dt3 = productBll.SearchInfoByPartNo(partNo[j].ToString().Trim());
                        if (dt3 != null && dt3.Rows.Count > 0)
                        {
                            QLevel = dt3.Rows[0]["QLevel"].ToString();
                            IsOne = dt3.Rows[0]["IsPrintOneTag"].ToString();
                            IsPack = dt3.Rows[0]["IsPrintPackList"].ToString();
                            IsPaint = dt3.Rows[0]["IsPlating"].ToString();
                            PartName = dt3.Rows[0]["ProductName"].ToString();
                            MaxCount = Convert.ToInt32(dt3.Rows[0]["PackCount"].ToString());
                            IsSupply = dt3.Rows[0]["IsSupply"].ToString();
                        }

                        if (IsSame == 1)
                        {
                            for (int k = 0; k < 2; k++)
                            {
                              
                                GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(),true, mould, PartName, ref NewOneCode, ref newcode);

                                #region 插入数据tb_barCode

                                md.ID = Guid.NewGuid().ToString();
                                md.StationID = dt.Rows[0]["StationID"].ToString();
                                md.OneBarCode = NewOneCode;
                                md.BarCode = newcode;
                                md.StockNo = stockNo[j].ToString().Trim();
                                md.PartNo = partNo[j].ToString().Trim();
                                md.PrintType = 0;
                                md.PlanID = planID;
                                md.ProductNature = ProductNature;
                                md.Des1 = PartName;
                                DataTable pdt = productBll.SearchIsImportByPartNo(partNo[j].ToString());
                                if (pdt != null && pdt.Rows.Count > 0)
                                {
                                    if (pdt.Rows[0]["isImport"].ToString() == "1")
                                    {
                                        md.Import = "国产料Kingfa";
                                    }
                                    else
                                    {
                                        md.Import = "";
                                    }
                                }

                                //if (brbll.Add_Info_New(md, Program.tableName)==false)
                                    if (SaveBarCode(md, Program.tableName, true, mould) == false)
                                    {
                                    return;
                                }

                                #endregion

                                #region 打印条码,判断是否打印单个条码

                                DataTable dt4 = pbll.SearchInfo(partNo[j].ToString().Trim(),
                                    dt.Rows[0]["StationID"].ToString());
                                if (dt4 != null && dt4.Rows.Count > 0)
                                {
                                    printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                                }

                                #region 打印单个标签

                                if (IsOne == "1")
                                {
                                    if (IsSupply == "1")
                                    {
                                        filename = System.AppDomain.CurrentDomain.BaseDirectory + PrintMoudleName();
                                       
                                        string reportName = ConfigurationManager.AppSettings[printName].ToString();
                                        DataTable headTable = GetPrintHeadTable(partNo[j].ToString().Trim(), PartName, NewOneCode, newcode);

                                        ReportHelper rp = new ReportHelper(filename, headTable, null,
                                            (int) GRPaperOrientation.grpoDefault, 1, reportName);

                                        rp.Report.Print(false);
                                    }
                                }

                                #endregion

                               

                                #endregion
                            }
                        }
                        else
                        {
                            GetSjBarCode(stockNo[j].ToString().Trim(), partNo[j].ToString().Trim(),true, mould, PartName, ref NewOneCode, ref newcode);

                            #region 插入数据tb_barCode

                            md.ID = Guid.NewGuid().ToString();
                            md.StationID = dt.Rows[0]["StationID"].ToString();
                            md.OneBarCode = NewOneCode;
                            md.BarCode = newcode;
                            md.StockNo = stockNo[j].ToString().Trim();
                            md.PartNo = partNo[j].ToString().Trim();
                            md.PrintType = 0;
                            md.PlanID = planID;
                            md.ProductNature = ProductNature;
                            md.Des1 = PartName;
                            DataTable pdt = productBll.SearchIsImportByPartNo(partNo[j].ToString());
                            if (pdt != null && pdt.Rows.Count > 0)
                            {
                                if (pdt.Rows[0]["isImport"].ToString() == "1")
                                {
                                    md.Import = "国产料Kingfa";
                                }
                                else
                                {
                                    md.Import = "";
                                }
                            }

                            //if (brbll.Add_Info_New(md, Program.tableName)==false)
                                if (SaveBarCode(md, Program.tableName, true, mould) == false)
                                {
                                return;
                            }

                            #endregion

                            #region 打印条码,判断是否打印单个条码

                            DataTable dt4 = pbll.SearchInfo(partNo[j].ToString().Trim(),
                                dt.Rows[0]["StationID"].ToString());
                            if (dt4 != null && dt4.Rows.Count > 0)
                            {
                                printName = "Printer" + dt4.Rows[0]["PrinterNo"].ToString();
                            }

                            #region 打印单个标签

                            if (IsOne == "1")
                            {
                                if (IsSupply == "1")
                                {
                                    filename = System.AppDomain.CurrentDomain.BaseDirectory + PrintMoudleName();  //new
                                   
                                    string reportName = ConfigurationManager.AppSettings[printName].ToString();
                                    DataTable headTable = GetPrintHeadTable(partNo[j].ToString().Trim(), PartName, NewOneCode, newcode);

                                    LogHelper.WriteLog(printName + ";" + reportName + ";" + filename);
                                    ReportHelper rp = new ReportHelper(filename, headTable, null,
                                        (int) GRPaperOrientation.grpoDefault, 1, reportName);

                                    rp.Report.Print(false);
                                }
                            }

                            #endregion

                         
                            #endregion
                        }
                        initBarCode();
                    }

                    #endregion
                }

                #endregion
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
        }
        private void timer2_Tick(object sender, EventArgs e)
        {
            initPlan();
        }

        private void comboBox2_TextChanged(object sender, EventArgs e)
        {
            label12.Focus();
        }

        private void glacialList1_Click(object sender, EventArgs e)
        {
            try
            {
                if (glacialList1.SelectedItems.Count > 0)
                {
                    GlacialComponents.Controls.GLItem gv;
                    gv = glacialList1.SelectedItems[0] as GlacialComponents.Controls.GLItem;
                     Program.strBarCode = gv.Text;
                    //Program.strBoxCode = gv.SubItems[4].Text;
                    Program.strBoxCode = gv.SubItems[0].Tag?.ToString();
                }
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }

        }
        /// <summary>
        /// 每隔几秒,连接一下服务器,刷新一下当前计划
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer3_Tick(object sender, EventArgs e)
        {
            try
            {
                Ping p1 = new Ping();

                PingReply reply = p1.Send("10.60.101.60"); //发送主机名或Ip地址
                StringBuilder sbuilder;
                if (reply.Status == IPStatus.Success)
                {
                    status = true;
                    label2.BackColor = Color.LightGray;
                }
                else
                {
                    status = false;
                    label2.BackColor = Color.Red;
                }
                GetClass();
                textBox1.Text = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) +
                                Program.ProductDate.Substring(8, 2);     //批次




                #region 获取当前生产信息

                initPlan();
                #endregion
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Program.cc = comboBox1.Text;
        }



        private DateTime GetPrintTime(string station)
        {
            try
            {
                DateTime time = DateTime.Now;
                StationBLL bll = new StationBLL();

                DataTable dt = bll.SearchInfoByNo(station);
                if (dt != null && dt.Rows.Count > 0)
                {
                    if (string.IsNullOrEmpty(dt.Rows[0]["PrintTime"].ToString()))
                    {
                        time = DateTime.Now;
                    }
                    else
                    {
                        time = Convert.ToDateTime(dt.Rows[0]["PrintTime"].ToString());
                    }
                }

                return time;
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                return DateTime.Now;
            }
        }



        private bool UpdatePrintTime(DateTime time, string station)
        {
            try
            {
                StationBLL bll = new StationBLL();
                return bll.UpdateTime(time, station);
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                return false;
            }
        }

        private int GetSeconds(string station)
        {
            try
            {
                int seconds = 0;
                StationBLL bll = new StationBLL();

                DataTable dt = bll.SearchInfoByNo(station);
                if (dt != null && dt.Rows.Count > 0)
                {
                    if (string.IsNullOrEmpty(dt.Rows[0]["Seconds"].ToString()))
                    {
                        seconds = 0;
                    }
                    else
                    {
                        seconds = Convert.ToInt32(dt.Rows[0]["Seconds"].ToString());
                    }
                }

                return seconds;
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
                return 0;
            }
        }

        /// <summary>
        /// 计算时间差
        /// </summary>
        /// <param name="t">时间1</param>
        /// <param name="t2">时间2</param>
        /// <returns>返回值:时间差(毫秒为单位)</returns>
        private long TimeDiff(DateTime t, DateTime t2)
        {
            long lReturn = -1;
            System.TimeSpan NowValue = new TimeSpan(t.Ticks);
            System.TimeSpan TimeValue = new TimeSpan(t2.Ticks);
            System.TimeSpan DateDiff = TimeSpan.Zero;
            try
            {
                //计算时间差
                //DateDiff = TimeValue.Subtract(NowValue).Duration();
                DateDiff = TimeValue.Subtract(NowValue);
                int hours = DateDiff.Hours;
                int minutes = DateDiff.Minutes;
                int seconds = DateDiff.Seconds;
                int milliseconds = DateDiff.Milliseconds;

                string TimeDiff = hours.ToString() + ":"
                                                   + minutes.ToString() + ":"
                                                   + seconds.ToString() + "."
                                                   + milliseconds.ToString();
                //是否比现在的时间小,如果小就设置成第二天再启动,否则当天启动
                if (hours <= 0 && minutes <= 0 && seconds <= 0 && milliseconds <= 0)
                    hours += 24;

                lReturn = hours * 3600
                          + minutes * 60
                          + seconds;
            }
            catch (Exception ex)
            {
                LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
            }
            return lReturn;
        }



        bool SaveBarCode(BarCodeModel bcm,string tableName, bool isAutoPrint,string mould,bool handPrint = false)
        {
            Label lbPackageCode = lbPackageCodeL;
            Label lbCurrentlQty = lbCurrentlQtyL;
            Label lbNeedQty = lbNeedQtyL;
            if (mould == _leftType)
            {
                lbPackageCode = lbPackageCodeL;
                lbCurrentlQty = lbCurrentlQtyL;
                lbNeedQty = lbNeedQtyL;
            }
            else
            {
                lbPackageCode = lbPackageCodeR;
                lbCurrentlQty = lbCurrentlQtyR;
                lbNeedQty = lbNeedQtyR;
            }
            
            bool saveRst = false;
            //自动模式 或者手动模式选中绑定箱码
            if (isAutoPrint == true || (isAutoPrint==false && cboxHandBox.Checked ==true))
            {
                bcm.BoxNo = lbPackageCode.Text.Trim();
                 saveRst = _barCodeBLL.Add_Info_New(bcm, Program.tableName);
                if (saveRst == true)
                {
                    //更新箱单数量
                    //查询箱单数量 是否等于标包数量 等于的话清空lb显示  小于,数量值赋值给lb显示
                    if (_injectionBoxBLL.UpdateBoxCount(bcm.BoxNo,1))
                    {
                        DataTable dt = _injectionBoxBLL.SearchBox(bcm.BoxNo);
                        if (dt.Rows.Count == 0)
                        {
                            return false;
                        }
                        string realCountStr = dt.Rows[0]["BoxCount"].ToString();
                        string sizeCountStr = lbNeedQty.Text.Trim();
                        int realCount = 0;
                        int sizeCount = 0;
                        int.TryParse(realCountStr, out realCount);
                        int.TryParse(sizeCountStr, out sizeCount);
                        if ((realCount != 0 && realCount == sizeCount) || (isAutoPrint == false && handPrint==true))
                        {
                            lbPackageCode.Text = "";
                            lbCurrentlQty.Text = "0";


                            ////检查上一个箱码是否给wms传成功了, 没成功重传一次.
                            //if (!string.IsNullOrEmpty(_lastBoxNoL))
                            //{
                            //    if (_wmsBll.IsSendPackageCode(_lastBoxNoL) == false)
                            //    {
                            //        DataTable dt2 = _injectionBoxBLL.SearchBox(_lastBoxNoL);
                            //        if (dt2.Rows.Count > 0)
                            //        {
                            //            _wmsBll.SaveInterface(dt2.Rows[0], MESClassLibrary.Enum.WmsInterfaceEnum.塑件箱码报工);
                            //        }
                            //    }
                            //    _lastBoxNoL = "";

                            //}
                            //if (!string.IsNullOrEmpty(_lastBoxNoR))
                            //{
                            //    if (_wmsBll.IsSendPackageCode(_lastBoxNoR) == false)
                            //    {
                            //        DataTable dt2 = _injectionBoxBLL.SearchBox(_lastBoxNoR);
                            //        if (dt2.Rows.Count > 0)
                            //        {
                            //            _wmsBll.SaveInterface(dt2.Rows[0], MESClassLibrary.Enum.WmsInterfaceEnum.塑件箱码报工);
                            //        }
                            //    }
                            //    _lastBoxNoR = "";

                            //}

                            ////wms接口传递
                            //_wmsBll.SaveInterface(dt.Rows[0]["BoxNo"].ToString(), MESClassLibrary.Enum.WmsInterfaceEnum.塑件箱码报工);

                           string rst =  _wmsBll.SaveInterface(dt.Rows[0]["BoxNo"].ToString(), _lastBoxNoL, _lastBoxNoR, MESClassLibrary.Enum.WmsInterfaceEnum.塑件箱码报工, Program.station);
                            if (string.IsNullOrEmpty(rst))
                            {
                                _lastBoxNoL = lbPackageCodeL.Text;
                                _lastBoxNoR = lbPackageCodeR.Text;
                                PrintBoxCode(dt.Rows[0], realCount, mould);
                            }
                            else
                            {
                                MessageBox.Show(rst);
                            }
                        }
                        else
                        {
                            lbCurrentlQty.Text = realCountStr;
                        }
                    }
                }
                else
                {
                    saveRst = false;
                }
            }
            else
            {
                //手动打印, 关闭打印箱码, 直接存条码记录.不处理其他
                saveRst = _barCodeBLL.Add_Info_New(bcm, Program.tableName);
            }

            return saveRst;
        }

        void InitPackageInfo()
        {
            DataTable dt0 = _injectionBoxBLL.SearchUnBox(Program.station, "0");
            if (dt0.Rows.Count > 0)
            {
                lbPackageCodeL.Text = dt0.Rows[0]["BoxNo"].ToString();
                lbCurrentlQtyL.Text = dt0.Rows[0]["BoxCount"].ToString();
            }
            DataTable dt1 = _injectionBoxBLL.SearchUnBox(Program.station, "1");
            if (dt1.Rows.Count > 0)
            {
                lbPackageCodeR.Text = dt1.Rows[0]["BoxNo"].ToString();
                lbCurrentlQtyR.Text = dt1.Rows[0]["BoxCount"].ToString();
            }
        }

        /// <summary>
        /// 打印箱码
        /// </summary>
        /// <param name="boxRow"></param>
        /// <param name="realCount"></param>
        /// <param name="mould"></param>
        private void PrintBoxCode(DataRow boxRow,int realCount,string mould)
        {
            string filename = System.AppDomain.CurrentDomain.BaseDirectory + "装箱单.grf";
            DataTable headTable = new DataTable();
            headTable.Columns.Add("BoxNo");
            headTable.Columns.Add("PartName");
            headTable.Columns.Add("PartNo");
            headTable.Columns.Add("BatchNo");
            headTable.Columns.Add("PackCount");
            headTable.Columns.Add("Line");
            DataRow row = headTable.NewRow();
            string boxCode = boxRow["BoxNo"].ToString();
            string[] boxes = boxCode.Split('.');
            if(boxes.Length != 4)
            {
                //新生成一个箱码  应该都有
            }
            else
            {
                row["BoxNo"] = boxCode;
                row["PartNo"] = boxes[0].Trim();
                row["PartName"] = boxRow["PartName"].ToString();
                row["BatchNo"] = boxes[1].Trim();
                row["PackCount"] = realCount;
                row["Line"] = boxRow["StationNo"].ToString()+"注塑机";
            }
            UpdateBoxRecordPrintState(boxCode);
            string printBoxName = string.Empty;
            if (mould == "1")
            {
                printBoxName = "Printer3";
            }
            else
            {
                printBoxName = "Printer4";
            }
          
            string reportName = ConfigurationManager.AppSettings[printBoxName].ToString();
            headTable.Rows.Add(row);

            ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoDefault, 1, reportName);

            rp.Report.Print(false);


        }

        private void UpdateBoxRecordPrintState(string UpdatePrinted)
        {
            _injectionBoxBLL.UpdatePrinted(UpdatePrinted);
        }

       
        /// <summary>
        /// 检查是否有箱码. 没有箱码,生成一个箱码
        /// </summary>
        /// <param name="partCode"></param>
        /// <param name="autoPrint"></param>
        private void CheckPackageCode(string partCode, bool autoPrint,string mould, string partName)
        {
            if (autoPrint == true || (autoPrint == false && cboxHandBox.Checked == true))
            {
                Label lbPackageCode = lbPackageCodeL;
                Label lbNeedQty = lbNeedQtyL;
                if (mould == _leftType)
                {
                    lbPackageCode = lbPackageCodeL;
                    lbNeedQty = lbNeedQtyL;
                }
                else
                {
                    lbPackageCode = lbPackageCodeR;
                    lbNeedQty = lbNeedQtyR;
                }
                string pkgCode = lbPackageCode.Text.Trim();
                if (string.IsNullOrEmpty(pkgCode))
                {
                    string packageCode = GetPackageCode(partCode, autoPrint);
                    InjectionBoxModel boxmd = new InjectionBoxModel();
                    boxmd.ID = Guid.NewGuid().ToString();
                    boxmd.BoxNo = packageCode;
                    boxmd.BoxCount = 0;
                    boxmd.BoxType = 0;
                    boxmd.IsFlag = 0;
                    boxmd.StationNo = Program.station;
                    boxmd.PartName = partName;

                    boxmd.Mould = mould;
                    boxmd.StandardQty = lbNeedQty.Text;
                    if (_injectionBoxBLL.AddInfo(boxmd))
                    {
                        lbPackageCode.Text = packageCode;
                    }
                }
            }
              
        }

        /// <summary>
        /// 20位注塑条码
        /// </summary>
        /// <param name="stockNo"></param>
        /// <param name="partNo"></param>
        /// <param name="autoPrint"></param>
        /// <param name="mould"></param>
        /// <param name="newOneCode"></param>
        /// <param name="newCode"></param>
        void GetSjBarCode(string stockNo,string partNo, bool autoPrint,string mould,string partName, ref string newOneCode,ref string newCode)
        {
            CheckPackageCode(partNo, autoPrint, mould, partName);

            string batch = GetBatch(autoPrint);
            GetBarCode(stockNo, batch, partNo, ref newOneCode, ref newCode);
            // newOneCode = _uniqueBll.GetSjBarCodeSerialNo(stockNo, batch);
            //newCode = partNo + "." + batch + "." + newOneCode.Substring(newOneCode.Length - 4, 4);
        }
        void GetBarCode(string stockNo,string batch,string partNo,ref string newOneCode, ref string newCode)
        {
            newOneCode = _uniqueBll.GetSjBarCodeSerialNo(stockNo, batch);
            newCode = partNo + "." + batch + "." + newOneCode.Substring(newOneCode.Length - 4, 4);
        }

        string GetPackageCode(string partNo,bool autoPrint )
        {
            string batch = GetBatch(autoPrint);
            string packageSize = lbNeedQtyL.Text.Trim();
            if (string.IsNullOrEmpty(packageSize))
            {
                packageSize = "1";
            }
            
            string packageCode = _uniqueBll. GetPackageCodeSerialNo(partNo, batch, packageSize);
            return packageCode;

        }
        string GetBatch(bool isAutoPrint)
        {
            string batch = string.Empty;
            if (isAutoPrint)
            {
                batch = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2);
            }
            else
            {
                batch = textBox1.Text.Trim();
            }
            return batch;
        }
        private object _selectItemL = null;
        bool _isShowHintL = true;

        private object _selectItemR = null;
        bool _isShowHintR = true;
        private void comBoxSizeL_SelectedValueChanged(object sender, EventArgs e)
        {
            //TimeSpan interval = DateTime.Now - _loginTime;
            //if (interval.Minutes > 0)
            if(_isLoad == true)
            {
                if (_isShowHintL)
                {
                    DialogResult result = MessageBox.Show("确认切换当前包装箱规格?", "提示", MessageBoxButtons.OKCancel,
                        MessageBoxIcon.Information);
                    if (result == DialogResult.OK)
                    {
                        if (UnCompletePrintBox("切换包装规格","left") == false) 
                        {
                            _isShowHintL = false;
                            comBoxSizeL.SelectedItem = _selectItemL;
                            _isShowHintL = true;
                            return; 
                        }

                        string val = comBoxSizeL.SelectedValue?.ToString();
                        int i = 0;
                        int.TryParse(val, out i);
                        if (i > 0)
                        {
                            lbNeedQtyL.Text = i.ToString();
                        }
                    }
                    else
                    {
                        if (_selectItemL != null)
                        {
                            _isShowHintL = false;
                            comBoxSizeL.SelectedItem = _selectItemL;
                            _isShowHintL = true;
                        }

                    }
                }
                
            }
            else
            {
                string val = comBoxSizeL.SelectedValue?.ToString();
                int i = 0;
                int.TryParse(val, out i);
                if (i > 0)
                {
                    lbNeedQtyL.Text = i.ToString();
                }
                _selectItemL = comBoxSizeL.SelectedItem;
            }
            comBoxSizeL.Enabled = false;
        }
        private void comBoxSizeR_SelectedValueChanged(object sender, EventArgs e)
        {
            //TimeSpan interval = DateTime.Now - _loginTime;
            //if (interval.Minutes > 0)
              if (_isLoad == true)
                {
                if (_isShowHintR)
                {
                    DialogResult result = MessageBox.Show("确认切换当前包装箱规格?", "提示", MessageBoxButtons.OKCancel,
                           MessageBoxIcon.Information);
                    if (result == DialogResult.OK)
                    {
                        if (UnCompletePrintBox("切换包装规格", "right") == false)
                        {
                            _isShowHintR = false;
                            comBoxSizeR.SelectedItem = _selectItemR;
                            _isShowHintR = true;
                            return;
                        }

                        string val = comBoxSizeR.SelectedValue?.ToString();
                        int i = 0;
                        int.TryParse(val, out i);
                        if (i > 0)
                        {
                            lbNeedQtyR.Text = i.ToString();
                        }
                    }
                    else
                    {
                        if (_selectItemR != null)
                        {
                            _isShowHintR = false;
                            comBoxSizeR.SelectedItem = _selectItemR;
                            _isShowHintR = true;
                        }

                    }
                }
                   
            }
            else
            {
                string val = comBoxSizeR.SelectedValue?.ToString();
                int i = 0;
                int.TryParse(val, out i);
                if (i > 0)
                {
                    lbNeedQtyR.Text = i.ToString();
                }
                _selectItemR = comBoxSizeR.SelectedItem;
            }
            comBoxSizeR.Enabled = false;


        }
        void CheckPackageSelect()
        {
            string txt = lbNeedQtyL.Text;
            int i = 0;
            if(_isPrintPackage)
            {
                int.TryParse(txt, out i);
                if(i == 0)
                {
                    throw new Exception("未选择装箱规格,请选择. ");
                    //MessageBox.Show("未选择装箱规格,请选择. ");
                }
            }
        }

        private void lbCurrentlQty_Click(object sender, EventArgs e)
        {
            string boxCode  = "";
            Label lb = sender as Label;
            if(lb.Name == "lbCurrentlQtyL")
            {
                boxCode = lbPackageCodeL.Text?.Trim();
            }
            else
            {
                boxCode = lbPackageCodeR.Text?.Trim();
            }
            if (string.IsNullOrEmpty(boxCode)) return;

            FrmPackageDetail frmPackageDetail = new FrmPackageDetail(boxCode);
            frmPackageDetail.ShowDialog();
        }

        private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
        {

        }

      
        /// <summary>
        /// 直供件条码  A2478852600#Q02#240826#001#
        /// </summary>
        /// <param name="partNo"></param>
        /// <param name="qLevel"></param>
        /// <param name="newCode"></param>
        void GetSupplyCode(string stockNo, string partNo,string qLevel, bool autoPrint,string mould,string partName, ref string newOneCode, ref string newCode)
        {
            string batch = string.Empty;
            if (autoPrint)
            {
                batch = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2);
            }
            else
            {
                batch = textBox1.Text.Trim();
            }
            newCode = _uniqueBll.GetSupplySerialNo(partNo, qLevel, batch);
            newOneCode = _uniqueBll.GetSjBarCodeSerialNo(stockNo, batch);

            CheckPackageCode(partNo, autoPrint, mould, partName);
        }

        private void btnHandPrintL_Click(object sender, EventArgs e)
        {
            UnCompletePrintBox("手动打印箱码","left");
        }

        private void btnHandPrintR_Click(object sender, EventArgs e)
        {
            UnCompletePrintBox("手动打印箱码","right");
        }

        bool? lastCheckState = null;
        /// <summary>
        /// 手动打码是否打印箱码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cboxHandBox_CheckedChanged(object sender, EventArgs e)
        {
            if (cboxHandBox.Enabled == false)
            {
                return;
            }
                string display = "";
                if (cboxHandBox.Checked)
                {
                    display = "绑定";
                    cboxHandBox.Tag = "true";
                }
                else
                {
                    display = "解绑";
                    cboxHandBox.Tag = "false";
                }
            if (lastCheckState != cboxHandBox.Checked)
            {
                DialogResult result = MessageBox.Show($"确认手打条码与箱码{display}?", "提示", MessageBoxButtons.OKCancel,
                    MessageBoxIcon.Information);
                if (result == DialogResult.OK)
                {
                    if (UnCompletePrintBox("手打条码与箱码" + display,"all") == false)
                    {


                        if (cboxHandBox.Checked == true)
                        {
                            lastCheckState = false;
                            cboxHandBox.Checked = false;
                        }
                        else
                        {
                            lastCheckState = true;
                            cboxHandBox.Checked = true;
                        }

                    }
                    else
                    {
                        if (cboxHandBox.Checked == true)
                        {
                            lastCheckState = true;
                        }
                        else
                        {
                            lastCheckState = false;
                        }
                    }

                }
                else
                {

                    if (cboxHandBox.Checked == true)
                    {
                        lastCheckState = false;
                        cboxHandBox.Checked = false;
                    }
                    else
                    {
                        lastCheckState = true;
                        cboxHandBox.Checked = true;
                    }
                }


            }
            comboBox2_SelectedValueChanged(null, null);

        }

        /// <summary>
        /// 用户双击
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label7_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            timer3.Enabled = false;
            //调用测试
            Array a = null;
            Array b = null;
            Array c = null;
            Array d = null;
            status = true;
            IsTest = true;
            bool bbb = true;
            //label23_Click(null, null);
            textBox1.Text = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) +
                                        Program.ProductDate.Substring(8, 2);
            if (bbb == true)
            {   //自动
                opcGroup1_DataChange(1, 1, ref a, ref b, ref c, ref d);
            }
            else
            {   //手动
                label23_Click(null, null);
            }
        }
        bool IsTest = false;
        /// <summary>
        /// 工位双击
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void label5_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            timer3.Enabled = false;
        }
        /// <summary>
        /// 未满器具打箱码 变更规格型号,手工打印箱码,切换下一计划,手动自动切换
        /// </summary>
        /// <param name="lable"></param>
        /// <returns></returns>
        bool UnCompletePrintBox(string lable,string  leftOrRight)
        {
            string boxCodeL = lbPackageCodeL.Text?.Trim();
            string boxCodeR = lbPackageCodeR.Text?.Trim();

            if(leftOrRight == "left" || leftOrRight == "all")
            {
                if (!string.IsNullOrEmpty(boxCodeL))
                {
                    DataTable dt = _injectionBoxBLL.SearchBox(boxCodeL);
                    if (dt.Rows.Count > 0 && dt.Rows[0]["IsPrint"].ToString() == "0" && int.Parse(dt.Rows[0]["BoxCount"].ToString()) > 0)
                    {
                        if (MessageBox.Show($"当前箱码[{boxCodeL}]未满器具,执行[{lable}]操作,该箱码会被设置为完成状态,是否继续?", "未满器具提醒", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                        {
                            return false;
                        }
                        lbPackageCodeL.Text = "";
                        lbCurrentlQtyL.Text = "0";

                        string rst = _wmsBll.SaveInterface(dt.Rows[0]["BoxNo"].ToString(), "", "", MESClassLibrary.Enum.WmsInterfaceEnum.塑件箱码报工, Program.station);
                        if (string.IsNullOrEmpty(rst))
                        {
                            PrintBoxCode(dt.Rows[0], int.Parse(dt.Rows[0]["BoxCount"].ToString()), "0");
                        }
                        else
                        {
                            MessageBox.Show(rst);
                            return false;
                        }
                       
                    }
                }
            }
            if (leftOrRight == "right" || leftOrRight == "all")
            {
                if (!string.IsNullOrEmpty(boxCodeR))
                {
                    DataTable dt = _injectionBoxBLL.SearchBox(boxCodeR);
                    if (dt.Rows.Count > 0 && dt.Rows[0]["IsPrint"].ToString() == "0" && int.Parse(dt.Rows[0]["BoxCount"].ToString()) > 0)
                    {
                        if (MessageBox.Show($"当前箱码[{boxCodeR}]未满器具,执行[{lable}]操作,该箱码会被设置为完成状态,是否继续?", "未满器具提醒", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                        {
                            return false;
                        }
                        lbPackageCodeR.Text = "";
                        lbCurrentlQtyR.Text = "0";

                        _wmsBll.SaveInterface(dt.Rows[0]["BoxNo"].ToString(), "", "", MESClassLibrary.Enum.WmsInterfaceEnum.塑件箱码报工, Program.station);
                        PrintBoxCode(dt.Rows[0], int.Parse(dt.Rows[0]["BoxCount"].ToString()), "1");
                    }
                }
            }
            
            return true;
        }

        private void btnChangeSizeL_Click(object sender, EventArgs e)
        {
            ChangeSize("0");
        }

        private void btnChangeSizeR_Click(object sender, EventArgs e)
        {
            ChangeSize("1");
        }
        void ChangeSize(string moudel)
        {
            string pass = _basicBLL1.GetInjectionChangedSizePass();
            Form frm = new Form();
            frm.Size = new Size(400, 300);
            frm.StartPosition = FormStartPosition.CenterParent;
            TextBox tb = new TextBox();
            tb.Width = 300;
            tb.Location = new System.Drawing.Point(30, 30);
            tb.PasswordChar = '#';
            Button bt = new Button();
            bt.Width = 100;
            bt.Text = "确定";
            bt.Margin = new Padding(40, 100, 0, 0);
            bt.Location = new System.Drawing.Point(100, 171);
            bt.Click += (arg1, arg2) => {
                frm.Close();
                string s = tb.Text;
                if(s == pass)
                {
                    if(moudel == "0")
                    {
                        comBoxSizeL.Enabled = true;
                    }
                    else
                    {
                        comBoxSizeR.Enabled = true;
                    }
                }
                else
                {
                    MessageBox.Show("密码错误");
                }
            };
            frm.Controls.Add(tb);
            frm.Controls.Add(bt);
            frm.ShowDialog();

          
        }

        private void btnOnlyBarCode_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("确定切换为单条码模式?", "切换确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return;
            try
            {
                this.FormClosed += (arg1, arg2) => {
                    FrmMain2411 frm = new FrmMain2411();
                    frm.Show();
                };
                this.Close();
            }
            catch(Exception ex)
            {

            }
            
           
        }

        private void comboBox2_SelectedValueChanged(object sender, EventArgs e)
        {
            if (cboxHandBox.Checked == false) return;
            if (label13.Text == "暂停打印") return;

            string s = comboBox2.SelectedValue?.ToString();
            ProductBLL pbll = new ProductBLL();
            DataTable pdt = pbll.SearchInfoByName(comboBox2.Text, "2000");
            if (pdt != null && pdt.Rows.Count > 0)
            {
                string partNo = pdt.Rows[0]["PartNo"].ToString().Trim();
                //stockNo = pdt.Rows[0]["StockNo"].ToString().Trim();
                //ManufacturerName = pdt.Rows[0]["ManufacturerName"].ToString().Trim();

                string currentSize = string.Empty;
                List<string> list = GetProductBoxSize(partNo, ref currentSize);

                    comBoxSizeL.DataSource = list;
                    comBoxSizeL.SelectedItem = currentSize;
                    _selectItemL = currentSize;
                    int j = 0;
                    int.TryParse(currentSize, out j);
                    if (j > 0)
                    {
                        lbNeedQtyL.Text = j.ToString();
                    }
            }
            else
            {
                MessageBox.Show($"零件[{comboBox2.Text}]在系统中不存在!");
                return;
            }

            

        }

        string PrintMoudleName()
        {
            if("IM05,IM08,IM10".Contains(Program.station)) //二维小条码
            {
                return "单个条码2.grf";
            }
            else if ("IM06,IM07,IM09,IM11,IM12,".Contains(Program.station)) //一维条码
            {
                return "单个条码.grf";
            }
           
            else if ("IM01,IM02,IM03,IM04,IM15,IM18,IM20".Contains(Program.station)) //小米大条码
            {
                return "Sill.grf";
            }
            else if ("IM13,IM14".Contains(Program.station)) //直供条码
            {
                return "单个条码1.grf";
            }
            else
            {
                return "单个条码2.grf";
            }

        }
        DataTable GetPrintLableModel()
        {
            DataTable headTable = new DataTable();
            headTable.Columns.Add("PrintTime");
            headTable.Columns.Add("PartNo");
            headTable.Columns.Add("PartName");
            headTable.Columns.Add("OneBarCode");
            headTable.Columns.Add("BarCode");
            headTable.Columns.Add("Station");
            return headTable;
        }
        DataTable GetPrintHeadTable(string partNo,string partName,string oneBarCode,string barCode)
        {
            DataTable headTable = GetPrintLableModel();
            DataRow row = headTable.NewRow();
            row["PrintTime"] =
                GetDateTime().ToString("yyyy/MM/dd HH:mm:ss");
            row["PartNo"] = partNo;
            row["PartName"] = partName;
            row["OneBarCode"] = oneBarCode;
            row["BarCode"] = barCode;
            row["Station"] = Program.station;
            headTable.Rows.Add(row);
            return headTable;
        }
        List<string> GetProductBoxSize(string productCode,ref string currentSize)
        {
            try
            {
                ProductBLL productBll = new ProductBLL();
                DataTable dt = productBll.SearchInfoByPartNo(productCode);
                if (dt.Rows.Count == 0)
                {
                    currentSize = "24";
                    MessageBox.Show("零件号{productCode}未设置标包,默认为24,请及时核对后进行配置.");
                    return null;
                }
                currentSize = dt.Rows[0]["PackCount"].ToString();
                string sizeStr = dt.Rows[0]["PackCountSize"].ToString();
                List<string> list = new List<string>();
                if (string.IsNullOrEmpty(sizeStr))
                {
                    list.Add(currentSize);
                    return list;
                }
                else
                {
                    string[] array = sizeStr.Split(',');
                    foreach (string item in array)
                    {
                        if (!list.Contains(item))
                        {
                            list.Add(item);
                        }
                    }
                    if (!list.Contains(currentSize))
                    {
                        list.Add(currentSize);
                    }
                }
                return list;
            }
            catch(Exception ex)
            {
                currentSize = "24";
                MessageBox.Show("零件号{productCode}未设置标包,默认为24,请及时核对后进行配置.");
                return null;
            }
           
        }
    }
}