/*  End  */

        #endregion



        #region 数据查询
        /*****************************   数据查询  *********************************/
        //
        //
        //查找数据
        private void btn_Find_Click(object sender, RoutedEventArgs e)
        {
            DataDelivery temdata = new DataDelivery();

            temdata.Option   = cmb_Find_Option.SelectedIndex;
            temdata._BarCode = txb_Find_OrderID.Text;
            FindData(temdata);
        }
        /*  End  */

        #endregion



        #region  除数据
        /*****************************   删除条码  *********************************/
        //
        //删除数据
        //
        private void btn_Delete_Click(object sender, RoutedEventArgs e)
        {
            User_Verify f = new User_Verify();

            f.ShowDialog();
            if (f.Result_InspectUser == true && f.SysUser.Privilege == "系统管理员" || f.SysUser.Privilege == "主管" || f.SysUser.Privilege == "工程师" || f.SysUser.Privilege == "助理")
            {
                My_MessageBox.My_MessageBox_Message("用户:" + f.SysUser.UserName);
                DataDelivery temData = new DataDelivery();

                object[] temList = new string[this.lst_DeleteList.Items.Count];
                lst_DeleteList.Items.CopyTo(temList, 0);

                temData.Option = cmb_Delete_Option.SelectedIndex;
                temData.SNlist = temList;

                temData.IsDeleteSourceData = ckb_DeleteSorceData.IsChecked;


                if (temData.Option != -1)     //如果已经选择
                {
                    if (temData.Option == 3)  //如果为删除源码
                    {
                        if (f.SysUser.Privilege == "助理" || f.SysUser.Privilege == "系统管理员")
                        {
                            DeleteSN_List(temData);
                        }
                        else
                        {
                            My_MessageBox.My_MessageBox_Message("对不起!您无权删除原始条码!请联系系统管理员或工程师!");
                        }
                    }
                    else
                    {
                        DeleteSN_List(temData);
                    }
                }
                lst_DeleteList.Items.Clear();
                DeleteRecord          = 0;
                lab_DeleteRecord.Text = DeleteRecord + "条";

                MCP_CS._Operation_log.UserName  = f.SysUser.UserName;
                MCP_CS._Operation_log.Operation = "删除";
            }
            else
            {
                My_MessageBox.My_MessageBox_Message("未执行,操作被用户终止!或未通过验证 请确定您是否有权限删除数据!");
            }
        }
        //数据查看
        private void FindData(DataDelivery e)
        {
            Maticsoft.BLL.SerialNumber sn = new Maticsoft.BLL.SerialNumber();        //条码操作类
            Type   BarcodeState           = typeof(Maticsoft.Model.E_Barcode_State); //条码状态
            string s = BarcodeState.GetEnumName(e.Option);                           //根据 索引获取 字符串  结果为 red

            Maticsoft.BLL.Pack_3D _M_Pack3D       = new Pack_3D();
            SerialNumber          _M_SerialNumber = new SerialNumber();

            switch (e.Option)
            {
            case 0:     //未包装
                ds_Record = sn.GetList("(State = '" + s + "') AND (OrderID = '" + txb_Find_OrderID.Text + "')");
                break;

            case 1:     //已包装
                ds_Record = sn.GetList("(State = '" + s + "') AND (OrderID = '" + txb_Find_OrderID.Text + "')");
                break;

            case 2:     //未装箱
                ds_Record = sn.GetList("(State = '" + s + "') AND (OrderID = '" + txb_Find_OrderID.Text + "')");
                break;

            case 3:     //已装箱
                ds_Record = sn.GetList("(State = '" + s + "') AND (OrderID = '" + txb_Find_OrderID.Text + "')");
                break;

            case 4:     //未打印
                break;

            case 5:     //已打印
                Maticsoft.BLL.tb_PrintRecord print_Record = new tb_PrintRecord();
                ds_Record = print_Record.GetList("(OrderID = '" + txb_Find_OrderID.Text + "')");
                break;

            case 6:    //客户编码
                ds_Record = _M_Pack3D.GetList("ClientSN ='" + txb_Find_OrderID.Text.Trim() + "'");
                // ds_Record = _M_Pack3D.Get_PackData(txb_Find_OrderID.Text.Trim(), Maticsoft.Model.E_InspectMethod.配组_四十八芯);
                break;

            case 7:    //客户编码
                ds_Record = _M_Pack3D.GetList("SN ='" + txb_Find_OrderID.Text.Trim() + "'");
                break;

            case 8:    //SN查询
                ds_Record = _M_SerialNumber.GetList("SN ='" + txb_Find_OrderID.Text.Trim() + "'");
                break;

            case 9:      //原始数据3D查询 根据SN
                ds_Record = MCP_CS._M_User_3D_Test_Good.GetList("SN LIKE '" + txb_Find_OrderID.Text.Trim() + "%'");
                break;

            case 10:     //原始数据JDS查询 根据SN
                ds_Record = MCP_CS._M_User_JDS_Test_Good.GetList("SN LIKE '" + txb_Find_OrderID.Text.Trim() + "%'");
                break;

            case 11:      //删除记录查询
                ds_Record = MCP_CS.Operation_Log.GetList("Remarks LIKE '%" + txb_Find_OrderID.Text.Trim() + "%'");
                break;
            }
            dgv_Info.ItemsSource = ds_Record.Tables[0].DefaultView;                      //显示控件中显示
            lab_Record.Text      = ds_Record.Tables[0].Rows.Count.ToString() + "条";      //记录数量
        }
        /// <summary>
        ///  条码更改为 未包装
        /// </summary>
        private static void Update_SN_TO_Not_Pack(ref DataDelivery e, SerialNumber sn, ref int temRecordCount)
        {
            //原始数据删除数量 计数
            int       temCount           = 0;
            int       fillDelete_snCount = 0;
            string    fillDelete_snList  = "";
            Pack_3D   pk_3d   = new Pack_3D();
            Pack_Exfo pk_Exfo = new Pack_Exfo();

            Maticsoft.BLL.User_3D_Test_Good user3D = new User_3D_Test_Good();
            string temSN = "";

            foreach (object _sn in e.SNlist)
            {
                //如果长度大于13 temSN = 前13位条码
                if (_sn.ToString().Length > 13)
                {
                    temSN = _sn.ToString().Substring(0, 10);
                }
                else
                {
                    temSN = _sn.ToString();
                }
                temSN = _sn.ToString();

                //删除原始数据
                if (e.IsDeleteSourceData == true)
                {
                    //删除3D数据
                    if (_sn.ToString().Length > 13)
                    {
                        if (user3D.Delete(_sn.ToString(), 1))
                        {
                            temCount++;
                        }
                    }
                    else
                    {
                        Maticsoft.BLL.MultiFiber _MPO_3D = new MultiFiber();
                        if (user3D.Delete(_sn.ToString(), 2) || _MPO_3D.Delete(_sn.ToString()))
                        {
                            temCount++;
                        }
                    }
                    //删除Exfo数据
                }
                //删除Pack中的数据
                pk_Exfo.Delete("SN Like '" + temSN + "%'");
                pk_3d.Delete("SN Like '" + temSN + "%'");

                //将已包装改写为未包装
                Maticsoft.Model.SerialNumber _serialNumber = sn.GetModel(temSN);
                if (_serialNumber != null)
                {
                    _serialNumber.State = Maticsoft.Model.E_Barcode_State.Not_Pack.ToString();
                    //如果更新成功
                    if (sn.Update(_serialNumber))
                    {
                        temRecordCount++;
                    }
                    else
                    {
                        fillDelete_snCount++;
                    }
                }
                else
                {
                    fillDelete_snCount++;
                }
                MCP_CS._Operation_log.Remarks += "," + _sn;
            }
            MCP_CS._Operation_log.DateTime = DateTime.Now;
            MCP_CS.Operation_Log.Add(MCP_CS._Operation_log);  //添加删除记录
            My_MessageBox.My_MessageBox_Message("成功删除已包装:" + temRecordCount + "条  原始数据:" + temCount + "条;\r\n失败" + fillDelete_snCount + "条  \r\n" + fillDelete_snList);
        }
        //删除数据
        private void DeleteSN_List(DataDelivery e)
        {
            try
            {
                SerialNumber   sn             = new SerialNumber();
                tb_PrintRecord print          = new tb_PrintRecord();
                int            temRecordCount = 0;
                switch (e.Option)
                {
                //删除已包装
                case 0:
                    Update_SN_TO_Not_Pack(ref e, sn, ref temRecordCount);
                    break;

                //删除已打印
                case 1:
                    foreach (object _sn in e.SNlist)
                    {
                        string tem = "";
                        if (_sn.ToString().Length > 10)
                        {
                            tem = _sn.ToString().Substring(0, 10);
                        }
                        else
                        {
                            tem = _sn.ToString();
                        }
                        print.Delete(tem);
                        temRecordCount++;
                    }
                    My_MessageBox.My_MessageBox_Message("成功删除已打印:" + temRecordCount + "");
                    break;

                //删除已装箱
                case 2:
                    foreach (object _sn in e.SNlist)
                    {
                        Maticsoft.Model.SerialNumber _serialNumber = sn.GetModel(_sn.ToString());
                        _serialNumber.State = Maticsoft.Model.E_Barcode_State.Not_Encasement.ToString();
                        if (sn.Update(_serialNumber))
                        {
                            temRecordCount++;
                        }
                    }
                    My_MessageBox.My_MessageBox_Message("成功删除已装箱" + temRecordCount + "");
                    break;

                case 3:
                    foreach (object _sn in e.SNlist)
                    {
                        if (sn.Delete(_sn.ToString()))
                        {
                            temRecordCount++;
                        }
                    }
                    My_MessageBox.My_MessageBox_Message("成功删除条码" + temRecordCount + "");
                    break;

                default:
                    My_MessageBox.My_MessageBox_Message("不包含此项目");
                    break;
                }
            }
            catch (Exception ex)
            {
                My_MessageBox.My_MessageBox_Message(ex.Message);
            }
        }