Browse Source

处理学情结算名单重复的问题以及总人数问题

zhouj1203@hotmail.com 3 years ago
parent
commit
200eb393d7

+ 1 - 1
TEAMModelOS.FunctionV4/CosmosDB/TriggerExam.cs

@@ -572,7 +572,7 @@ namespace TEAMModelOS.FunctionV4
                 List<string> losStu = new List<string>();
 
                 //当前完成考试得人数
-                int total = examResults[0].studentIds.Count;
+                int total = examResults[0].studentIds.Distinct().Count();
                 //先与第一个值取并集
                 losStu = losStu.Union(examResults[0].lostStus).ToList();
                 foreach (ExamResult examResult in examResults)

+ 15 - 11
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -229,6 +229,7 @@ namespace TEAMModelOS.Controllers.Analysis
                 List<KeyValuePair<string, Dictionary<string, List<double>>>> gscores = new List<KeyValuePair<string, Dictionary<string, List<double>>>>();
                 //声明全科总分
                 double totalAll = 0;
+                List<string> stuIds = new();
                 foreach (ExamResult examResult in examResults)
                 {
                     (KeyValuePair<string, List<List<string>>> subjectData, KeyValuePair<string, List<KeyValuePair<string, List<double>>>> classSubjectData, Dictionary<string, List<double>> gscore) = DoExerciseScatteres(examResult, paperKey);
@@ -266,6 +267,10 @@ namespace TEAMModelOS.Controllers.Analysis
                     //处理个人
                     foreach (var stuid in examResult.studentIds)
                     {
+                        if (!stuIds.Contains(stuid))
+                        {
+                            stuIds.Add(stuid);
+                        }
                         StudentAys student = null;
                         int index = examResult.studentIds.IndexOf(stuid);
                         if (students.Select(x => x.id).Contains(stuid))
@@ -340,19 +345,18 @@ namespace TEAMModelOS.Controllers.Analysis
                     }*/
                     //处理班级
                     var classRes = classReses.Where(x => x.id == rGroup.id).FirstOrDefault();
-                    var stuCount = classRes.range[1] - classRes.range[0] + 1;
-                    var classStudents = students.GetRange(classRes.range[0], classRes.range[1] - classRes.range[0] + 1);
+                    var stuCount = classRes.range[1] - classRes.range[0] + 1;                 
+                    List<StudentAys> classStudents = new();
+                    foreach (string sid in stuIds) {
+                        foreach (var stu in students) {
+                            if (stu.id == sid) {
+                                classStudents.Add(stu);
+                            }
+                        }
+                    } ;
+                    //var classStudents = students.GetRange(classRes.range[0], classRes.range[1] - classRes.range[0] + 1);
                     List<double> stuTotals = classStudents.Select(x => x.total).ToList();
                     stuTotals.Sort((s1, s2) => { return s2.CompareTo(s1); });
-
-                    /*                    foreach (KeyValuePair<string, double> key1 in keys)
-                                        {
-                                            if (classroom.gradeId.Equals(key1.Key))
-                                            {
-                                                ipoint = key1.Value;
-                                            }
-                                        }*/
-                    //double ipoint = stuTotals[personCount];
                     //初始化进线人数
                     int lineCount = 0;
                     //初始化班级总分