Exemplo n.º 1
0
        public static double CalScoreMM0(string 参数, QcEvaPara Para)
        {
            var    paraary = new QcEvaPara(参数);
            double m       = -1;
            double m0      = -1;

            if (paraary.Count > 0)
            {
                if (double.TryParse(paraary[0], out m))
                {
                    if (double.TryParse(Para[0], out m0))
                    {
                        if (Para.GetKey(0).ToUpper() == "GB24356")
                        {
                            if (m < m0 / 3 + 0.0000001)
                            {
                                return(100);
                            }
                            else if (m < m0 + 0.0000001)
                            {
                                return(120 - (60 * m / m0));
                            }
                            else
                            {
                                return(QcEvaConst.符合分数);
                            }
                        }
                        else
                        {
                            return(CalcScoreMM0(m, m0));
                        }
                    }
                    else
                    {
                        return(QcEvaConst.配置错误分数);
                    }
                }
                else
                {
                    return(QcEvaConst.配置错误分数);
                }
            }
            else
            {
                return(QcEvaConst.未检查分数);
            }
        }
Exemplo n.º 2
0
        //public static double CalScoreRR0(string 参数, double A类错误, double B类错误, double C类错误, double D类错误, QcEvaPara Para)
        //{
        //    var errorparas = new QcEvaPara(参数);
        //    double N = -1;
        //    double r = 1;
        //    if (double.TryParse(errorparas[0], out N))
        //    {

        //        double sumra = A类错误;
        //        double sumrb = B类错误;
        //        double sumrc = C类错误;
        //        if (Para.Count == 1)
        //        {
        //            double r0 = 0;
        //            if (double.TryParse(Para[0], out r0))
        //            {
        //                r = (sumra + sumrb + sumrc) / N * 100;
        //                if (r0 > 0)
        //                {
        //                    return CalcScoreRR0(r, r0);
        //                }
        //                else
        //                {
        //                    if (sumra + sumrb + sumrc > 0)
        //                    {
        //                        return QcEvaConst.不符合分数;

        //                    }
        //                    return 100;
        //                }
        //            }
        //            else
        //            {
        //                return QcEvaConst.配置错误分数;
        //            }
        //            //double sumrd=lst.Where(t=>t.错漏类别=="D").Sum(t=>double.Parse(t.错漏数量));
        //        }
        //        else if (Para.Count == 2)
        //        {
        //            double r01 = 0;
        //            double r02 = 0;

        //            if (double.TryParse(Para[0], out r01) && double.TryParse(Para[1], out r02))
        //            {
        //                if (Para.GetKey(0) == "A+B")
        //                {
        //                    double r1 = (sumra + sumrb) / N * 100;
        //                    double r2 = (sumrc) / N * 100;
        //                    return Math.Min(CalcScoreRR0(r1, r01), CalcScoreRR0(r2, r02));
        //                }
        //                else if (Para.GetKey(0) == "A")
        //                {

        //                    double r1 = (sumra) / N * 100;
        //                    double r2 = (sumrb + sumrc) / N * 100;
        //                    if (r01 > 0)
        //                    {
        //                        return Math.Min(CalcScoreRR0(r1, r01), CalcScoreRR0(r2, r02));
        //                    }
        //                    else
        //                    {
        //                        if (sumra > 0)
        //                        {
        //                            return QcEvaConst.不符合分数;
        //                        }
        //                        else
        //                            return CalcScoreRR0(r2, r02);
        //                    }
        //                }


        //            }
        //            else
        //            {
        //                return QcEvaConst.配置错误分数;
        //            }
        //        }
        //        else if (Para.Count == 3)
        //        {

        //            double r01 = 0;
        //            double r02 = 0;
        //            double r03 = 0;
        //            if (double.TryParse(Para[0], out r01) && double.TryParse(Para[1], out r02) && double.TryParse(Para[2], out r03))
        //            {
        //                double r1 = (sumra) / N * 100;
        //                if (r1 > r01)
        //                {
        //                    return QcEvaConst.不符合分数;

        //                }
        //                double r2 = (sumrb) / N * 100;
        //                double r3 = (sumrc) / N * 100;
        //                return Math.Min(CalcScoreRR0(r2, r02), CalcScoreRR0(r3, r03));
        //            }
        //            else
        //            {
        //                return QcEvaConst.配置错误分数;
        //            }
        //        }
        //    }
        //    return QcEvaConst.未检查分数;
        //}
//        17:05:10
//abao++ 2014/9/23 17:05:10
        public static double CalScoreRR0(string 参数, double A类错误, double B类错误, double C类错误, double D类错误, QcEvaPara Para)
        {
            var    errorparas = new QcEvaPara(参数);
            double N          = -1;

            if (Para.Count == 0)
            {
                return(QcEvaConst.配置错误分数);
            }
            if (double.TryParse(errorparas[0], out N))
            {
                double sumra = A类错误;
                double sumrb = B类错误;
                double sumrc = C类错误;
                double sumrd = D类错误;
                double Score = 999999;
                for (int i = 0; i < Para.Count; i++)
                {
                    double r0 = 0;
                    if (double.TryParse(Para[i], out r0))
                    {
                        var    exprs = Para.GetKey(i).Split('+');
                        double sum   = 0;
                        foreach (var e in exprs)
                        {
                            switch (e)
                            {
                            case "A":
                                sum += sumra;
                                break;

                            case "B":
                                sum += sumrb;
                                break;

                            case "C":
                                sum += sumrc;
                                break;

                            case "D":
                                sum += sumrd;
                                break;
                            }
                        }
                        double r = sum / N * 100;
                        if (r0 > 0)
                        {
                            Score = Math.Min(Score, CalcScoreRR0(r, r0));
                        }
                        else
                        {
                            if (sum > 0)
                            {
                                Score = QcEvaConst.符合分数;
                            }
                            else
                            {
                                Score = Math.Min(Score, QcEvaConst.总分数);
                            }
                        }
                    }
                    else
                    {
                        return(QcEvaConst.配置错误分数);
                    }
                }
                return(Score);
            }
            else
            {
                return(QcEvaConst.配置错误分数);
            }
        }
Exemplo n.º 3
0
        public void Calc()
        {
            if (ReCode == null)
            {
                this.Statistics();
            }
            Para = new QcEvaPara(this.限差值);
            switch (结果值枚举)
            {
            case "M;M0":
                CalScoreMM0();
                break;

            case "R:R0":
                CalScoreRR0();
                break;

            case "Y/N":
                if (描述类型 == "1")
                {
                    if (Para.Count > 1)
                    {
                        double df1 = 0;
                        if (double.TryParse(Para["N"], out df1) == false)
                        {
                            this.得分 = QcEvaConst.配置错误分数;
                        }
                        else
                        {
                            this.得分 = df1;
                        }
                    }
                    else
                    {
                        this.得分 = QcEvaConst.符合分数;
                    }
                }
                else if (描述类型 == "")
                {
                    this.得分 = QcEvaConst.未检查分数;
                }
                else
                {
                    if (Para.Count > 0)
                    {
                        double df2 = 0;
                        if (double.TryParse(Para["Y"], out df2) == false)
                        {
                            this.得分 = QcEvaConst.配置错误分数;
                        }
                        else
                        {
                            this.得分 = df2;
                        }
                    }
                    else
                    {
                        this.得分 = QcEvaConst.符合分数;
                    }
                }
                break;

            case "A?B?C?D?":
                if (描述类型 == "")
                {
                    this.得分 = QcEvaConst.未检查分数;
                }
                else
                {
                    if (this.限差值 == "")
                    {
                        this.得分 = QcEvaConst.总分数 - QcEvaConst.A类错误扣分 * this.A类错误 - QcEvaConst.B类错误扣分 * this.B类错误
                                  - QcEvaConst.C类错误扣分 * this.C类错误 - QcEvaConst.D类错误扣分 * this.D类错误;
                    }
                    else
                    {
                        double a = 0, b = 0, c = 0, d = 0;
                        if (double.TryParse(Para["A"], out a) == false ||
                            double.TryParse(Para["B"], out b) == false ||
                            double.TryParse(Para["C"], out c) == false ||
                            double.TryParse(Para["D"], out d) == false)
                        {
                            this.得分 = QcEvaConst.配置错误分数;
                            return;
                        }

                        this.得分 = QcEvaConst.总分数 - a * this.A类错误 - b * this.B类错误 - c * this.C类错误 - d * this.D类错误;
                    }
                }
                break;
            }
        }