private static void SelectTestResultDetail1(TestResultHistory testResult, int count)
        {
            #region 查询明细
            DataRow dr        = testResultDataSource.NewRow();
            var     pcbsn     = testResult.PcbaSN;//GetPCBASn(pcbaSN);
            var     productsn = GetProductSn(testResult.PcbaSN);
            //GetProductSNOfShell(testRestul.PcbaSN);

            dr[TestResultItemContent.Order]            = count;
            dr[TestResultItemContent.PcbaSN]           = pcbsn;
            dr[TestResultItemContent.ProductSN]        = productsn;
            dr[TestResultItemContent.FinalResultValue] = GetProductTestFinalResult(pcbsn, productsn, testResult.ShellCodeLen, testResult.ProductTypeNo);
            var currentProductType = testResult.ProductTypeNo;//GetProductTypeNoOfSN(pcbsn, productsn);
            dr[TestResultItemContent.ProductTypeNo] = currentProductType;

            #region 烧录工位信息
            var testResultTurn = SelectTestResultOfSN(pcbsn, productsn, STATION_TURN);
            //dr[TestResultItemContent.StationName_turn] = STATION_TURN;
            dr[STATION_TURN + TestResultItemContent.StationInDate_turn]      = testResultTurn.StationInDate;
            dr[STATION_TURN + TestResultItemContent.StationOutDate_turn]     = testResultTurn.StationOutDate;
            dr[STATION_TURN + TestResultItemContent.UserTeamLeader_turn]     = testResultTurn.UserTeamLeader;
            dr[STATION_TURN + TestResultItemContent.TestResultValue_turn]    = testResultTurn.TestResultValue;
            dr[STATION_TURN + TestResultItemContent.Turn_TurnItem]           = SelectTestItemValue(pcbsn, productsn, STATION_TURN, TestResultItemContent.Turn_TurnItem);
            dr[STATION_TURN + TestResultItemContent.Turn_Voltage_12V_Item]   = SelectTestItemValue(pcbsn, productsn, STATION_TURN, TestResultItemContent.Turn_Voltage_12V_Item);
            dr[STATION_TURN + TestResultItemContent.Turn_Voltage_5V_Item]    = SelectTestItemValue(pcbsn, productsn, STATION_TURN, TestResultItemContent.Turn_Voltage_5V_Item);
            dr[STATION_TURN + TestResultItemContent.Turn_Voltage_33_1V_Item] = SelectTestItemValue(pcbsn, productsn, STATION_TURN, TestResultItemContent.Turn_Voltage_33_1V_Item);
            dr[STATION_TURN + TestResultItemContent.Turn_Voltage_33_2V_Item] = SelectTestItemValue(pcbsn, productsn, STATION_TURN, TestResultItemContent.Turn_Voltage_33_2V_Item);
            dr[STATION_TURN + TestResultItemContent.Turn_SoftVersion]        = SelectTestItemValue(pcbsn, productsn, STATION_TURN, TestResultItemContent.Turn_SoftVersion);
            #endregion

            #region 灵敏度
            var testResultSen = SelectTestResultOfSN(pcbsn, productsn, STATION_SENSIBLITY);
            //dr[TestResultItemContent.StationName_sen] = STATION_SENSIBLITY;
            dr[STATION_SENSIBLITY + TestResultItemContent.StationInDate_sen]   = testResultSen.StationInDate;
            dr[STATION_SENSIBLITY + TestResultItemContent.StationOutDate_sen]  = testResultSen.StationOutDate;
            dr[STATION_SENSIBLITY + TestResultItemContent.UserTeamLeader_sen]  = testResultSen.UserTeamLeader;
            dr[STATION_SENSIBLITY + TestResultItemContent.TestResultValue_sen] = testResultSen.TestResultValue;

            dr[STATION_SENSIBLITY + TestResultItemContent.Sen_Work_Electric_Test] = SelectTestItemValue(pcbsn, productsn, STATION_SENSIBLITY, TestResultItemContent.Sen_Work_Electric_Test);
            dr[STATION_SENSIBLITY + TestResultItemContent.Sen_PartNumber]         = SelectTestItemValue(pcbsn, productsn, STATION_SENSIBLITY, TestResultItemContent.Sen_PartNumber);
            dr[STATION_SENSIBLITY + TestResultItemContent.Sen_HardWareVersion]    = SelectTestItemValue(pcbsn, productsn, STATION_SENSIBLITY, TestResultItemContent.Sen_HardWareVersion);
            dr[STATION_SENSIBLITY + TestResultItemContent.Sen_SoftVersion]        = SelectTestItemValue(pcbsn, productsn, STATION_SENSIBLITY, TestResultItemContent.Sen_SoftVersion);
            dr[STATION_SENSIBLITY + TestResultItemContent.Sen_ECUID]             = SelectTestItemValue(pcbsn, productsn, STATION_SENSIBLITY, TestResultItemContent.Sen_ECUID);
            dr[STATION_SENSIBLITY + TestResultItemContent.Sen_BootloaderVersion] = SelectTestItemValue(pcbsn, productsn, STATION_SENSIBLITY, TestResultItemContent.Sen_BootloaderVersion);
            dr[STATION_SENSIBLITY + TestResultItemContent.Sen_RadioFreq]         = SelectTestItemValue(pcbsn, productsn, STATION_SENSIBLITY, TestResultItemContent.Sen_RadioFreq);
            dr[STATION_SENSIBLITY + TestResultItemContent.Sen_DormantElect]      = SelectTestItemValue(pcbsn, productsn, STATION_SENSIBLITY, TestResultItemContent.Sen_DormantElect);
            #endregion

            #region 外壳
            var testResultShell = SelectTestResultOfSN(pcbsn, productsn, STATION_SHELL);
            //dr[TestResultItemContent.StationName_shell] = STATION_SHELL;
            dr[STATION_SHELL + TestResultItemContent.StationInDate_shell]   = testResultShell.StationInDate;
            dr[STATION_SHELL + TestResultItemContent.StationOutDate_shell]  = testResultShell.StationOutDate;
            dr[STATION_SHELL + TestResultItemContent.UserTeamLeader_shell]  = testResultShell.UserTeamLeader;
            dr[STATION_SHELL + TestResultItemContent.TestResultValue_shell] = testResultShell.TestResultValue;
            dr[STATION_SHELL + TestResultItemContent.Shell_FrontCover]      = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_FrontCover);
            dr[STATION_SHELL + TestResultItemContent.Shell_BackCover]       = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_BackCover);
            dr[STATION_SHELL + TestResultItemContent.Shell_PCBScrew1]       = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_PCBScrew1);
            dr[STATION_SHELL + TestResultItemContent.Shell_PCBScrew2]       = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_PCBScrew2);
            dr[STATION_SHELL + TestResultItemContent.Shell_PCBScrew3]       = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_PCBScrew3);
            dr[STATION_SHELL + TestResultItemContent.Shell_PCBScrew4]       = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_PCBScrew4);
            dr[STATION_SHELL + TestResultItemContent.Shell_ShellScrew1]     = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_ShellScrew1);
            dr[STATION_SHELL + TestResultItemContent.Shell_ShellScrew2]     = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_ShellScrew2);
            dr[STATION_SHELL + TestResultItemContent.Shell_ShellScrew3]     = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_ShellScrew3);
            dr[STATION_SHELL + TestResultItemContent.Shell_ShellScrew4]     = SelectTestItemValue(pcbsn, productsn, STATION_SHELL, TestResultItemContent.Shell_ShellScrew4);

            #endregion

            #region 气密
            var testResultAir = SelectTestResultOfSN(pcbsn, productsn, STATION_AIR);
            //dr[TestResultItemContent.StationName_air] = STATION_AIR;
            dr[STATION_AIR + TestResultItemContent.StationInDate_air]   = testResultAir.StationInDate;
            dr[STATION_AIR + TestResultItemContent.StationOutDate_air]  = testResultAir.StationOutDate;
            dr[STATION_AIR + TestResultItemContent.UserTeamLeader_air]  = testResultAir.UserTeamLeader;
            dr[STATION_AIR + TestResultItemContent.TestResultValue_air] = testResultAir.TestResultValue;
            dr[STATION_AIR + TestResultItemContent.Air_AirtightTest]    = SelectTestItemValue(pcbsn, productsn, STATION_AIR, TestResultItemContent.Air_AirtightTest);
            #endregion

            #region 支架
            var testResultStent = SelectTestResultOfSN(pcbsn, productsn, STATION_STENT);
            //drTestResultItemContent.StationName_stent] = STATION_STENT;
            dr[STATION_STENT + TestResultItemContent.StationInDate_stent]   = testResultStent.StationInDate;
            dr[STATION_STENT + TestResultItemContent.StationOutDate_stent]  = testResultStent.StationOutDate;
            dr[STATION_STENT + TestResultItemContent.UserTeamLeader_stent]  = testResultStent.UserTeamLeader;
            dr[STATION_STENT + TestResultItemContent.TestResultValue_stent] = testResultStent.TestResultValue;
            dr[STATION_STENT + TestResultItemContent.Stent_Screw1]          = SelectTestItemValue(pcbsn, productsn, STATION_STENT, TestResultItemContent.Stent_Screw1);
            dr[STATION_STENT + TestResultItemContent.Stent_Screw2]          = SelectTestItemValue(pcbsn, productsn, STATION_STENT, TestResultItemContent.Stent_Screw1);
            dr[STATION_STENT + TestResultItemContent.Stent_Stent]           = SelectTestItemValue(pcbsn, productsn, STATION_STENT, TestResultItemContent.Stent_Stent);
            dr[STATION_STENT + TestResultItemContent.Stent_LeftStent]       = SelectTestItemValue(pcbsn, productsn, STATION_STENT, TestResultItemContent.Stent_LeftStent);
            dr[STATION_STENT + TestResultItemContent.Stent_RightStent]      = SelectTestItemValue(pcbsn, productsn, STATION_STENT, TestResultItemContent.Stent_RightStent);
            #endregion

            #region 成品
            var testResultProduct = SelectTestResultOfSN(pcbsn, productsn, STATION_PRODUCT);
            //dr[TestResultItemContent.StationName_product] = STATION_PRODUCT;
            dr[STATION_PRODUCT + TestResultItemContent.StationInDate_product]      = testResultProduct.StationInDate;
            dr[STATION_PRODUCT + TestResultItemContent.StationOutDate_product]     = testResultProduct.StationOutDate;
            dr[STATION_PRODUCT + TestResultItemContent.UserTeamLeader_product]     = testResultProduct.UserTeamLeader;
            dr[STATION_PRODUCT + TestResultItemContent.TestResultValue_product]    = testResultProduct.TestResultValue;
            dr[STATION_PRODUCT + TestResultItemContent.Product_Work_Electric_Test] = SelectTestItemValue(pcbsn, productsn, STATION_PRODUCT, TestResultItemContent.Product_Work_Electric_Test);
            dr[STATION_PRODUCT + TestResultItemContent.Product_DormantElect]       = SelectTestItemValue(pcbsn, productsn, STATION_PRODUCT, TestResultItemContent.Product_DormantElect);
            dr[STATION_PRODUCT + TestResultItemContent.Product_Inspect_Result]     = SelectTestItemValue(pcbsn, productsn, STATION_PRODUCT, TestResultItemContent.Product_InspectItem);
            #endregion

            testResultDataSource.Rows.Add(dr);
            #endregion
        }
        private static TestResultHistory SelectUseAllPcbaSN(string querySN, int pageIndex, int pageSize)
        {
            //List<string> pcbaList = new List<string>();
            DataSet           ds = new DataSet();
            TestResultHistory testResultHistory = new TestResultHistory();
            var selectSQL = $"select {DbTable.F_Test_Result.SN},{DbTable.F_Test_Result.PROCESS_NAME} " +
                            $"from {DbTable.F_TEST_RESULT_NAME} " +
                            $"order by {DbTable.F_Test_Result.STATION_IN_DATE} desc";
            int count   = 1;
            var pcbaLen = ReadPCBACodeLength();

            if (pcbaLen == 0)
            {
                pcbaLen = 16;
            }
            var shellLen = ReadShellCodeLength();

            if (querySN != "" && querySN != null)
            {
                TestResultHistory testResult = new TestResultHistory();
                testResult.PcbaSN        = querySN.Trim();
                testResult.ProductTypeNo = GetProductTypeNo(querySN);
                testResult.ShellCodeLen  = shellLen;
                testResult.PcbaCodeLen   = pcbaLen;
                SelectTestResultDetail1(testResult, count);

                testResultHistory.TestResultNumber = 1;
                ds.Tables.Add(testResultDataSource);
                testResultHistory.TestResultDataSet = ds;
                return(testResultHistory);
            }
            else
            {
                var dbReader = SQLServer.ExecuteDataReader(selectSQL);
                if (dbReader.HasRows)
                {
                    pcbaCacheList.Clear();
                    int i          = 0;
                    int startIndex = (pageIndex - 1) * pageSize;
                    while (dbReader.Read())
                    {
                        var pcbaSN = dbReader[0].ToString();
                        if (pcbaSN.Length == pcbaLen)
                        {
                            //是PCBA
                            var productTypeNo = dbReader[1].ToString();
                            TestResultHistory queryTestObj = new TestResultHistory();

                            queryTestObj.PcbaSN        = pcbaSN;
                            queryTestObj.ProductTypeNo = productTypeNo;
                            queryTestObj.ShellCodeLen  = shellLen;
                            queryTestObj.PcbaCodeLen   = pcbaLen;
                            var pcbaObj = pcbaCacheList.Find(m => m.PcbaSN == pcbaSN);
                            if (pcbaObj == null)
                            {
                                pcbaCacheList.Add(queryTestObj);
                                i++;
                            }
                        }
                    }
                    LogHelper.Log.Info("开始查询明细...");
                    //开始查询明细
                    int j = 0;
                    foreach (var pcbaItem in pcbaCacheList)
                    {
                        if (j >= startIndex && j < pageIndex * pageSize)
                        {
                            TestResultHistory testResult = new TestResultHistory();
                            testResult.PcbaSN        = pcbaItem.PcbaSN;
                            testResult.ProductTypeNo = pcbaItem.ProductTypeNo;
                            testResult.ShellCodeLen  = shellLen;
                            testResult.PcbaCodeLen   = pcbaLen;
                            SelectTestResultDetail1(testResult, count);
                            count++;
                        }
                        j++;
                    }
                    LogHelper.Log.Info("查询明细结束...");
                    ds.Tables.Add(testResultDataSource);
                    testResultHistory.TestResultNumber  = j;
                    testResultHistory.TestResultDataSet = ds;
                }
            }
            LogHelper.Log.Info("查询结束...");
            return(testResultHistory);
        }