瀏覽代碼

PR值调整

zhouj1203@hotmail.com 4 年之前
父節點
當前提交
cd440df196

+ 3 - 3
TEAMModelOS.SDK/Models/Cosmos/School/GradeAnalysis.cs

@@ -9,13 +9,13 @@ namespace TEAMModelOS.SDK.Models.Cosmos.School
         public GradeAnalysis()
         public GradeAnalysis()
         {
         {
             subjects = new List<GradeSubjectScore>();
             subjects = new List<GradeSubjectScore>();
-            passPersent = new List<double>();
+            //passPersent = new List<double>();
         }
         }
         //public List<string> subjectId { get; set; }
         //public List<string> subjectId { get; set; }
         public string gradeId { get; set; }
         public string gradeId { get; set; }
-        public List<double> passPersent { get; set; }
+        //public List<double> passPersent { get; set; }
 
 
-        public List<double> averageScore { get; set; }
+        //public List<double> averageScore { get; set; }
 
 
         public double GradeaverageScore { get; set; }
         public double GradeaverageScore { get; set; }
         public List<GradeSubjectScore> subjects { get; set; }
         public List<GradeSubjectScore> subjects { get; set; }

+ 4 - 2
TEAMModelOS.SDK/Models/Cosmos/Student/StudentAnalysis.cs

@@ -20,12 +20,14 @@ namespace TEAMModelOS.SDK.Models.Cosmos.Student
         public List<double> total { get; set; }
         public List<double> total { get; set; }
         public class Score {
         public class Score {
             public Score() {
             public Score() {
-                sc = new List<double>();
+                csc = new List<double>();
                 cdpr = new List<double>();
                 cdpr = new List<double>();
                 gdpr = new List<double>();
                 gdpr = new List<double>();
+                gsc = new List<double>();
             }
             }
             public string subjectId { get; set; }
             public string subjectId { get; set; }
-            public List<double> sc { get; set; }
+            public List<double> csc { get; set; }
+            public List<double> gsc { get; set; }
             public List<double> cdpr { get; set; }
             public List<double> cdpr { get; set; }
             public List<double> gdpr { get; set; }
             public List<double> gdpr { get; set; }
         }
         }

+ 51 - 46
TEAMModelOS/Controllers/Analysis/AchievementController.cs

@@ -2268,15 +2268,17 @@ namespace TEAMModelOS.Controllers.Analysis
                     }
                     }
                 }
                 }
                 //获取进线人数
                 //获取进线人数
-                int personCount = (int)System.Math.Round( (double)info.stuCount * (touch / 100), 1 ,MidpointRounding.AwayFromZero);
+
+                int personCount = (int)System.Math.Round( info.stuCount * (touch / 100.0), MidpointRounding.AwayFromZero);
                 
                 
                 StudentAnalysis analysis = new StudentAnalysis();
                 StudentAnalysis analysis = new StudentAnalysis();
                 List<ClassAnalysis> classAnalyses = new List<ClassAnalysis>();
                 List<ClassAnalysis> classAnalyses = new List<ClassAnalysis>();
+               /* //声明年级所有科目总分
+                List<double> total = new List<double>();*/
                 //以班级为单位
                 //以班级为单位
                 List<double> stuTotals = new List<double>();
                 List<double> stuTotals = new List<double>();
                 foreach (string s in info.targetClassIds) {
                 foreach (string s in info.targetClassIds) {
-                    //声明班级所有科目总分
-                    double total = 0;
+
                     //存放每个班级学生总分
                     //存放每个班级学生总分
                     List<double> totalClass = new List<double>();
                     List<double> totalClass = new List<double>();
                     ClassAnalysis classAnalysis = new ClassAnalysis();
                     ClassAnalysis classAnalysis = new ClassAnalysis();
@@ -2301,6 +2303,7 @@ namespace TEAMModelOS.Controllers.Analysis
                             analysis.total.Add(stuTotal);
                             analysis.total.Add(stuTotal);
                             stuTotals.Add(stuTotal);
                             stuTotals.Add(stuTotal);
                             totalClass.Add(stuTotal);
                             totalClass.Add(stuTotal);
+                            //total.Add(stuTotal);
                         }
                         }
                     }
                     }
                     /* //声明单个班级单科总分
                     /* //声明单个班级单科总分
@@ -2337,7 +2340,7 @@ namespace TEAMModelOS.Controllers.Analysis
                                 foreach (List<double> scores in result.studentScores)
                                 foreach (List<double> scores in result.studentScores)
                                 {
                                 {
                                     //添加每个学生各科总分
                                     //添加每个学生各科总分
-                                    score.sc.Add(scores.Sum());
+                                    score.csc.Add(scores.Sum());
                                     //计算大于及格分数的人数
                                     //计算大于及格分数的人数
                                     if (scores.Sum() >= passScore)
                                     if (scores.Sum() >= passScore)
                                     {
                                     {
@@ -2349,9 +2352,9 @@ namespace TEAMModelOS.Controllers.Analysis
 
 
                                 }
                                 }
                                 //处理班级及格率以及均分
                                 //处理班级及格率以及均分
-                                double persentClass = i / result.studentIds.Count;
-                                double averageClass = sumClass / result.studentIds.Count;
-                                total += averageClass;
+                                double persentClass = i / (result.studentIds.Count * 1.0);
+                                double averageClass = sumClass / (result.studentIds.Count * 1.0);
+                                //total += averageClass;
                                 subjectScore.passPersent.Add(persentClass);
                                 subjectScore.passPersent.Add(persentClass);
                                 subjectScore.averageScore.Add(averageClass);
                                 subjectScore.averageScore.Add(averageClass);
                                 classAnalysis.subjects.Add(subjectScore);
                                 classAnalysis.subjects.Add(subjectScore);
@@ -2360,10 +2363,10 @@ namespace TEAMModelOS.Controllers.Analysis
                         }
                         }
                         //处理单科科班级PR
                         //处理单科科班级PR
                         subjectTotal.Sort(delegate (double s1, double s2) { return s2.CompareTo(s1); });
                         subjectTotal.Sort(delegate (double s1, double s2) { return s2.CompareTo(s1); });
-                        foreach (double sc in score.sc)
+                        foreach (double sc in score.csc)
                         {
                         {
                             int index = subjectTotal.IndexOf(sc);
                             int index = subjectTotal.IndexOf(sc);
-                            double CPR = 100 - (100 * (index + 1) - 50) / score.sc.Count;
+                            double CPR = 100 - (100 * (index + 1) - 50) / score.csc.Count;
                             score.cdpr.Add(CPR);
                             score.cdpr.Add(CPR);
 
 
                         }
                         }
@@ -2463,51 +2466,53 @@ namespace TEAMModelOS.Controllers.Analysis
                     }
                     }
                     //单科及格率分数
                     //单科及格率分数
                     passScore = subjectSum * 0.6;
                     passScore = subjectSum * 0.6;
-                    //存放学生单科记录
-                    Score score = new Score();
                     List<double> subjectTotal = new List<double>();
                     List<double> subjectTotal = new List<double>();
                     //存放单科每个班级学生总分
                     //存放单科每个班级学生总分
                     List<double> totalClass = new List<double>();
                     List<double> totalClass = new List<double>();
-                    //处理每个班级各个学生各科总分
-                    foreach (ExamClassResult result in examClassResults)
-                    {
-                        if (sub.id.Equals(result.subjectId) && g.id.Equals(result.gradeId))
-                        {
-                            foreach (List<double> scores in result.studentScores)
+                    //存放学生单科记录
+                    foreach (Score score in analysis.scores) {
+                        if (score.subjectId.Equals(sub.id)) {
+                            //处理每个班级各个学生各科总分
+                            foreach (ExamClassResult result in examClassResults)
                             {
                             {
-                                //添加每个学生各科总分
-                                score.sc.Add(scores.Sum());
-                                //计算大于及格分数的人数
-                                if (scores.Sum() >= passScore)
+                                if (sub.id.Equals(result.subjectId) && g.id.Equals(result.gradeId))
                                 {
                                 {
-                                    i++;
-                                }
-                               subjectTotal.Add(scores.Sum());
-                               sumClass = sumClass + scores.Sum();
+                                    foreach (List<double> scores in result.studentScores)
+                                    {
+                                        //添加每个学生各科总分
+                                        score.gsc.Add(scores.Sum());
+                                        //计算大于及格分数的人数
+                                        if (scores.Sum() >= passScore)
+                                        {
+                                            i++;
+                                        }
+                                        subjectTotal.Add(scores.Sum());
+                                        sumClass = sumClass + scores.Sum();
 
 
+                                    }
+                                    count += result.studentIds.Count;
+                                }
+                            }
+                            //处理班级及格率以及均分
+                            double persentClass = i / (count*1.0);
+                            double averageClass = sumClass / (count * 1.0);
+                            gradeScore += averageClass;
+                            subjectScore.passPersent.Add(persentClass);
+                            subjectScore.averageScore.Add(averageClass);
+                            gradeAnalysis.subjects.Add(subjectScore);
+                            gradeAnalyses.Add(gradeAnalysis);
+                            //处理单科科年级PR
+                            subjectTotal.Sort(delegate (double s1, double s2) { return s2.CompareTo(s1); });
+                            foreach (double sc in score.gsc)
+                            {
+                                int index = subjectTotal.IndexOf(sc);
+                                double GPR = 100 - (100 * (index + 1) - 50) / score.gsc.Count;
+                                score.gdpr.Add(GPR);
+                                //analysis.gpr.Add(GPR);
                             }
                             }
-                            count += result.studentIds.Count;
+                            //analysis.scores.Add(score);
                         }
                         }
-                    }
-                    //处理班级及格率以及均分
-                    double persentClass = i / count;
-                    double averageClass = sumClass / count;
-                    gradeScore += averageClass;
-                    subjectScore.passPersent.Add(persentClass);
-                    subjectScore.averageScore.Add(averageClass);
-                    gradeAnalysis.subjects.Add(subjectScore);
-                    gradeAnalyses.Add(gradeAnalysis);
-                    //处理单科科年级PR
-                    subjectTotal.Sort(delegate (double s1, double s2) { return s2.CompareTo(s1); });
-                    foreach (double sc in score.sc)
-                    {
-                        int index = subjectTotal.IndexOf(sc);
-                        double GPR = 100 - (100 * (index + 1) - 50) / score.sc.Count;
-                        score.gdpr.Add(GPR);
-                        //analysis.gpr.Add(GPR);
-                    }
-                    analysis.scores.Add(score);
-
+                    }                                                  
                 });
                 });
                 foreach (GradeAnalysis grade in gradeAnalyses) {
                 foreach (GradeAnalysis grade in gradeAnalyses) {
                     grade.GradeaverageScore = gradeScore / grade.subjects.Count;
                     grade.GradeaverageScore = gradeScore / grade.subjects.Count;