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.未检查分数); } }
//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.配置错误分数); } }
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; } }