Explorar el Código

处理学情异常部分以及添加结算年级内容

zhouj1203@hotmail.com hace 4 años
padre
commit
60dc6f4467

+ 1 - 0
TEAMModelFunction/ExamTrigger.cs

@@ -213,6 +213,7 @@ namespace TEAMModelFunction
                     ClassRange range = new ClassRange();
                     range.id = classResult.info.id;
                     range.name = classResult.info.name;
+                    range.gradeId = classResult.gradeId;
                     List<int> ran = new List<int>();
                     int stuCount = classResult.studentIds.Count;
                     Count += stuCount;

+ 29 - 7
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -124,18 +124,38 @@ namespace TEAMModelOS.Controllers.Analysis
                         touch = period.analysis.touch;
                     }
                 }
-                //计算每个年级参考人数
-                List<KeyValuePair<string, int>> keys = new List<KeyValuePair<string, int>>();
+                //计算每个年级参考人数并计算进线分数
+                List<KeyValuePair<string, double>> keys = new List<KeyValuePair<string, double>>();
                 foreach (Grade grade in info.grades) {
+                    double ipoint = 0;
                     int gradeCount = 0;
+                    List<double> gradeTotal = new List<double>();
+                    HashSet<string> sno = new HashSet<string>();
                     foreach (ExamClassResult examClassResult in examClassResults) {
                         if (grade.id.Equals(examClassResult.gradeId)) {
                             gradeCount += examClassResult.studentIds.Count;
+                            foreach (string s in examClassResult.studentIds) {
+                                sno.Add(s);
+                            }
                         }
                     }
+                    foreach (string sid in sno) {
+                        double total = 0;
+                        foreach (ExamClassResult examClassResult in examClassResults) {
+                            if (grade.id.Equals(examClassResult.gradeId))
+                            {
+                                int index = examClassResult.studentIds.IndexOf(sid);
+                                if (index == -1) continue;
+                                total += examClassResult.studentScores[index].Sum();
+                            }                              
+                        }
+                        gradeTotal.Add(total);
+                    }
+                    gradeTotal.Sort((s1, s2) => { return s2.CompareTo(s1); });
                     //获取进线人数
                     int personCount = (int)System.Math.Round(gradeCount / info.subjects.Count * (touch / 100.0), MidpointRounding.AwayFromZero);
-                    keys.Add(new KeyValuePair<string, int>(grade.id, personCount));
+                    ipoint = gradeTotal[personCount];
+                    keys.Add(new KeyValuePair<string, double>(grade.id, ipoint));
                 }
                 //获取进线人数
                 //int personCount = (int)System.Math.Round(info.stuCount * (touch / 100.0), MidpointRounding.AwayFromZero);
@@ -156,7 +176,7 @@ namespace TEAMModelOS.Controllers.Analysis
                     subjectPaperDatas.Add(subjectData);
                     classSubjectPaperDatas.Add(classSubjectData);
                     subjectScatter.Add(DoSubjectScatter(examResult));
-                    gpoint = DoKnowledgePoint(examResult,info);
+                    //gpoint = DoKnowledgePoint(examResult,info);
                     //获取一张试卷的满分
                     paperScore.Add(examResult.subjectId, examResult.paper.point.Sum());
                     List<double> StuSubjectTotals = new List<double>();
@@ -220,9 +240,11 @@ namespace TEAMModelOS.Controllers.Analysis
                     List<double> stuTotals = classStudents.Select(x=>x.total).ToList();
                     stuTotals.Sort(  (  s1,   s2) =>{ return s2.CompareTo(s1); });
                     double ipoint = 0;
-                    foreach (KeyValuePair<string, int> key1 in keys) {
-                        if (classroom.gradeId.Equals(key1.Key)) {
-                            ipoint = stuTotals[key1.Value];
+                    foreach (KeyValuePair<string, double> key1 in keys)
+                    {
+                        if (classroom.gradeId.Equals(key1.Key))
+                        {
+                            ipoint = key1.Value;
                         }
                     }
                     //double ipoint = stuTotals[personCount];