private static List <TestResultBasic> SelectTestResultBasic()
        {
            DataTable typeNoDt = SelectTypeNoList().Tables[0];
            List <TestResultBasic> testResultsList = new List <TestResultBasic>();

            if (typeNoDt.Rows.Count > 0)
            {
                for (int i = 0; i < typeNoDt.Rows.Count; i++)
                {
                    var typeNo = typeNoDt.Rows[i][0].ToString();

                    DataTable stationList = SelectStationList(typeNo).Tables[0];
                    if (stationList.Rows.Count > 0)
                    {
                        for (int j = 0; j < stationList.Rows.Count; j++)
                        {
                            var stationName     = stationList.Rows[j][1].ToString();
                            var selectResultSQL = $"SELECT TOP 1 " +
                                                  $"{DbTable.F_Test_Result.SN}," +
                                                  $"{DbTable.F_Test_Result.TYPE_NO}," +
                                                  $"{DbTable.F_Test_Result.STATION_NAME}," +
                                                  $"{DbTable.F_Test_Result.STATION_IN_DATE}," +
                                                  $"{DbTable.F_Test_Result.STATION_OUT_DATE}," +
                                                  $"{DbTable.F_Test_Result.TEST_RESULT}," +
                                                  $"{DbTable.F_Test_Result.TEAM_LEADER}," +
                                                  $"{DbTable.F_Test_Result.ADMIN} " +
                                                  $"FROM " +
                                                  $"{DbTable.F_TEST_RESULT_NAME} " +
                                                  $"WHERE " +
                                                  $"{DbTable.F_Test_Result.STATION_NAME} = '{stationName}' " +
                                                  $"AND " +
                                                  $"{DbTable.F_Test_Result.TYPE_NO} = '{typeNo}' " +
                                                  $"ORDER BY " +
                                                  $"{DbTable.F_Test_Result.STATION_IN_DATE} DESC";
                            var             dtResult        = SQLServer.ExecuteDataSet(selectResultSQL).Tables[0];
                            TestResultBasic testResultBasic = new TestResultBasic();
                            if (dtResult.Rows.Count > 0)
                            {
                                testResultBasic.ProductSN       = dtResult.Rows[0][0].ToString();
                                testResultBasic.ProductTypeNo   = dtResult.Rows[0][1].ToString();
                                testResultBasic.StationName     = dtResult.Rows[0][2].ToString();
                                testResultBasic.StationInDate   = dtResult.Rows[0][3].ToString();
                                testResultBasic.StationOutDate  = dtResult.Rows[0][4].ToString();
                                testResultBasic.TestResultValue = dtResult.Rows[0][5].ToString();
                                testResultBasic.UserTeamLeader  = dtResult.Rows[0][6].ToString();
                                testResultBasic.UserAdmin       = dtResult.Rows[0][7].ToString();
                                testResultsList.Add(testResultBasic);
                            }
                        }
                    }
                }
            }
            return(testResultsList);
        }
        public static string GetProductTestFinalResult(string pcbsn, string productsn, int shellLen, string productTypeNo)
        {
            bool IsFinalResultPass = true;

            //var productTypeNo = GetProductTypeNoOfSN(pcbsn, productsn);
            if (productTypeNo == "")
            {
                return("未完成");
            }
            DataTable stationList = SelectStationList(productTypeNo).Tables[0];
            //判断当前工艺流程是否没有外壳装配工站---即不能完成绑定关系

            /*
             * 1)将有PCBA的几个工站进行计算
             * 2)将有外壳SN的几个工站进行计算
             */
            var stationRow = stationList.Select($"{DbTable.F_Test_Result.STATION_NAME} = '外壳装配工站'");

            if (stationRow.Length < 1)
            {
                //不包含外壳装配工站,重新生成计算工站
                var cirticalID = CalCirticalStationID();
                if (pcbsn.Length == shellLen && productsn == "")
                {
                    //只计算外壳装配之后的工站--临界点
                    LogHelper.Log.Info("【只计算外壳装配之后的工站】" + pcbsn);
                    stationList = SelectCirticalStationList(productTypeNo, cirticalID, false).Tables[0];
                }
                else if (pcbsn.Length < shellLen && productsn == "")
                {
                    //只计算外壳装配之前的工站
                    LogHelper.Log.Info("【只计算外壳装配之前的工站】" + pcbsn);
                    stationList = SelectCirticalStationList(productTypeNo, cirticalID, true).Tables[0];
                }
            }
            if (stationList.Rows.Count > 0)
            {
                for (int j = 0; j < stationList.Rows.Count; j++)
                {
                    var stationName     = stationList.Rows[j][1].ToString();
                    var selectResultSQL = $"SELECT TOP 1 " +
                                          $"{DbTable.F_Test_Result.SN}," +
                                          $"{DbTable.F_Test_Result.TYPE_NO}," +
                                          $"{DbTable.F_Test_Result.STATION_NAME}," +
                                          $"{DbTable.F_Test_Result.STATION_IN_DATE}," +
                                          $"{DbTable.F_Test_Result.STATION_OUT_DATE}," +
                                          $"{DbTable.F_Test_Result.TEST_RESULT}," +
                                          $"{DbTable.F_Test_Result.TEAM_LEADER}," +
                                          $"{DbTable.F_Test_Result.ADMIN} " +
                                          $"FROM " +
                                          $"{DbTable.F_TEST_RESULT_NAME} " +
                                          $"WHERE " +
                                          $"{DbTable.F_Test_Result.STATION_NAME} = '{stationName}' " +
                                          $"AND " +
                                          $"{DbTable.F_Test_Result.SN} = '{pcbsn}' " +
                                          $"ORDER BY " +
                                          $"{DbTable.F_Test_Result.STATION_IN_DATE} DESC";
                    var             dtResult        = SQLServer.ExecuteDataSet(selectResultSQL).Tables[0];
                    TestResultBasic testResultBasic = new TestResultBasic();
                    if (dtResult.Rows.Count > 0)
                    {
                        //pcbasn查询结果
                        testResultBasic.TestResultValue = dtResult.Rows[0][5].ToString();
                        var currentTestResult = testResultBasic.TestResultValue.Trim().ToLower();
                        if (currentTestResult != "pass")
                        {
                            IsFinalResultPass = false;
                        }
                    }
                    else
                    {
                        //productsn查询结果
                        selectResultSQL = $"SELECT TOP 1 " +
                                          $"{DbTable.F_Test_Result.SN}," +
                                          $"{DbTable.F_Test_Result.TYPE_NO}," +
                                          $"{DbTable.F_Test_Result.STATION_NAME}," +
                                          $"{DbTable.F_Test_Result.STATION_IN_DATE}," +
                                          $"{DbTable.F_Test_Result.STATION_OUT_DATE}," +
                                          $"{DbTable.F_Test_Result.TEST_RESULT}," +
                                          $"{DbTable.F_Test_Result.TEAM_LEADER}," +
                                          $"{DbTable.F_Test_Result.ADMIN} " +
                                          $"FROM " +
                                          $"{DbTable.F_TEST_RESULT_NAME} " +
                                          $"WHERE " +
                                          $"{DbTable.F_Test_Result.STATION_NAME} = '{stationName}' " +
                                          $"AND " +
                                          $"{DbTable.F_Test_Result.SN} = '{productsn}' " +
                                          $"ORDER BY " +
                                          $"{DbTable.F_Test_Result.STATION_IN_DATE} DESC";
                        dtResult = SQLServer.ExecuteDataSet(selectResultSQL).Tables[0];
                        if (dtResult.Rows.Count > 0)
                        {
                            testResultBasic.TestResultValue = dtResult.Rows[0][5].ToString();
                            var currentTestResult = testResultBasic.TestResultValue.Trim().ToLower();
                            if (currentTestResult != "pass")
                            {
                                IsFinalResultPass = false;
                            }
                        }
                        else
                        {
                            //pcbasn/productsn都无查询结果;无进站记录
                            //流程为未完成状态
                            return("未完成");
                        }
                    }
                }
            }

            if (IsFinalResultPass)
            {
                return("PASS");
            }
            else
            {
                return("FAIL");
            }
        }