Sfoglia il codice sorgente

Merge branch 'develop5.0-tmd' of http://106.12.23.251:10000/TEAMMODEL/TEAMModelOS into develop5.0-tmd

CrazyIter_Bin 4 anni fa
parent
commit
4749958186

+ 1 - 1
TEAMModelFunction/TriggerExam.cs

@@ -222,7 +222,7 @@ namespace TEAMModelFunction
                                                             int month = DateTimeOffset.UtcNow.Month;
                                                             int day = DateTimeOffset.UtcNow.Day;
                                                             int time =  month > semester.month ?  0 :  1;
-                                                            int eyear = year - time;
+                                                            int eyear = classroom.year - time;
                                                             result.gradeId = (year - eyear).ToString();
                                                         }
                                                     }

+ 70 - 64
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -538,7 +538,7 @@ namespace TEAMModelOS.Controllers.Analysis
                     {
                         //年级全科的pr
                         int index = stuGradeTotal.IndexOf(x.total);
-                        double GPR = stuCount > 0 ? Math.Floor(100 - (100 * (index + 1) - 50)*1.0 / stuCount) : 0;
+                        double GPR = stuCount > 0 ? Math.Floor(100 - (100 * (index + 1) - 50) * 1.0 / stuCount) : 0;
                         //double GPR = 100 - (100 * (index + 1) - 50) / stuCount;
                         x.gpr = GPR;
                         x.gsort = index + 1;
@@ -580,15 +580,16 @@ namespace TEAMModelOS.Controllers.Analysis
                 BadRequest(ex.StackTrace);
             }
 
-            var sub  = examResults.Select(e => new {
-                    id = e.id,
-                    name = info.subjects.FirstOrDefault(c => c.id == e.id).name,
-                    record = e.record,
-                    phc = e.phc,
-                    plc = e.plc,
-                    sRate = e.sRate,
-                    average = e.average,
-                    standard = e.standard
+            var sub = examResults.Select(e => new
+            {
+                id = e.id,
+                name = info.subjects.FirstOrDefault(c => c.id == e.id).name,
+                record = e.record,
+                phc = e.phc,
+                plc = e.plc,
+                sRate = e.sRate,
+                average = e.average,
+                standard = e.standard
             });
             /*var sub = info.subjects.Select(x => new
             {
@@ -1293,18 +1294,18 @@ namespace TEAMModelOS.Controllers.Analysis
                                 //单个认知层次得分情况
                                 scores += exam.studentScores[index][n];
                             }
-                           /* if (exam.studentScores[index].Sum() >= rhw && phCount < rhwCount && exam.studentScores[index][n] == 0)
-                            {
-                                rhwC++;
-                                phCount++;
-                                continue;
-                            }
-                            if (exam.studentScores[index].Sum() <= rhl && plCount < (exam.studentIds.Count - rhlCount) && exam.studentScores[index][n] == 0)
-                            {
-                                rhlC++;
-                                plCount++;
-                                continue;
-                            }*/
+                            /* if (exam.studentScores[index].Sum() >= rhw && phCount < rhwCount && exam.studentScores[index][n] == 0)
+                             {
+                                 rhwC++;
+                                 phCount++;
+                                 continue;
+                             }
+                             if (exam.studentScores[index].Sum() <= rhl && plCount < (exam.studentIds.Count - rhlCount) && exam.studentScores[index][n] == 0)
+                             {
+                                 rhlC++;
+                                 plCount++;
+                                 continue;
+                             }*/
                             //anwGPoint += exam.studentScores[index][n];
                         }
                         gPoint += point[n];
@@ -1469,7 +1470,7 @@ namespace TEAMModelOS.Controllers.Analysis
                 {
                     using var json = await JsonDocument.ParseAsync(response.ContentStream);
                     school = json.ToObject<School>();
-                }   
+                }
                 //School school = await client.GetContainer("TEAMModelOS", "School").ReadItemAsync<School>(code.ToString(), new PartitionKey($"Base"));
                 List<ExamResult> examResults = new List<ExamResult>();
                 var query = $"select c.id,c.name,c.subjectId,c.studentScores,c.studentIds,c.paper,c.classes from c where c.examId =  '{id}' ";
@@ -1512,33 +1513,13 @@ namespace TEAMModelOS.Controllers.Analysis
                     List<List<double>> classScores = new List<List<double>>();
                     //此处声明集合存储原本的成绩序列
                     List<List<double>> cScores = new List<List<double>>();
-                    foreach (ClassRange range in result.classes)
+                    /*var sc = result.classes.GroupBy(m => new { m.gradeId }).Select(c => new { gId = c.Key.gradeId, ranges = c.ToList() }).ToList();
+                    foreach (var aa in sc)
                     {
-                        List<double> scores = new List<double>();
-                        List<double> finalScores = new List<double>();
-                        if (!string.IsNullOrEmpty(range.gradeId))
+                        foreach (ClassRange range in aa.ranges)
                         {
-                            if (range.gradeId.Equals(gId.ToString(), StringComparison.OrdinalIgnoreCase))
-                            {
-                                ClassId.Add(range.id);
-                                cla.Add(range.id);
-                                double totalClass = 0;
-                                for (int i = range.range[0]; i <= range.range[1]; i++)
-                                {
-                                    totalClass += result.studentScores[i].Sum();
-                                    scores.Add(result.studentScores[i].Sum());
-                                    finalScores.Add(result.studentScores[i].Sum());
-                                    gradeScores.Add(result.studentScores[i].Sum());
-                                    totalGrade += result.studentScores[i].Sum();
-                                    stu.Add(result.studentIds[i]);
-                                }
-                                classScores.Add(scores);
-                                cScores.Add(finalScores);
-                                ClassAverage.Add(range.range[1] - range.range[0] + 1 > 0 ? Math.Round(totalClass * 1.0 / (range.range[1] - range.range[0] + 1), 2) : 0);
-                                personCount.Add(range.range[1] - range.range[0] + 1);
-                            }
-                        }
-                        else {
+                            List<double> scores = new();
+                            List<double> finalScores = new();
                             ClassId.Add(range.id);
                             cla.Add(range.id);
                             double totalClass = 0;
@@ -1556,23 +1537,48 @@ namespace TEAMModelOS.Controllers.Analysis
                             ClassAverage.Add(range.range[1] - range.range[0] + 1 > 0 ? Math.Round(totalClass * 1.0 / (range.range[1] - range.range[0] + 1), 2) : 0);
                             personCount.Add(range.range[1] - range.range[0] + 1);
                         }
-                        
+                        classAllAverage.Add(ClassAverage);
+                        gradeScores.Sort((s1, s2) => { return s2.CompareTo(s1); });
+                        indexClass = ClassId.IndexOf(cId.ToString());
+                        //单科成绩
+                        allList.Add(cScores[indexClass]);
+                        classScores[indexClass].Sort((s1, s2) => { return s2.CompareTo(s1); });
+                        mapClass.Add("scoreSum", result.paper.point.Sum());
+                        mapClass.Add("score", result.studentScores[index].Sum());
+                        mapClass.Add("classAverage", ClassAverage[indexClass]);
+                        mapClass.Add("classCount", personCount[indexClass]);
+                        mapClass.Add("classRank", classScores[indexClass].IndexOf(result.studentScores[index].Sum()));
+                        mapClass.Add("gradeAverage", result.studentIds.Count > 0 ? Math.Round(totalGrade * 1.0 / result.studentIds.Count, 2) : 0);
+                        mapClass.Add("gradeCount", result.studentIds.Count);
+                        mapClass.Add("gradeRank", gradeScores.IndexOf(result.studentScores[index].Sum()));
+                        averageMap.Add(mapClass);
                     }
-                    classAllAverage.Add(ClassAverage);
-                    gradeScores.Sort((s1, s2) => { return s2.CompareTo(s1); });
-                    indexClass = ClassId.IndexOf(cId.ToString());
-                    //单科成绩
-                    allList.Add(cScores[indexClass]);
-                    classScores[indexClass].Sort((s1, s2) => { return s2.CompareTo(s1); });
-                    mapClass.Add("scoreSum", result.paper.point.Sum());
-                    mapClass.Add("score", result.studentScores[index].Sum());
-                    mapClass.Add("classAverage", ClassAverage[indexClass]);
-                    mapClass.Add("classCount", personCount[indexClass]);
-                    mapClass.Add("classRank", classScores[indexClass].IndexOf(result.studentScores[index].Sum()));
-                    mapClass.Add("gradeAverage", result.studentIds.Count > 0 ? Math.Round(totalGrade * 1.0 / result.studentIds.Count, 2) : 0);
-                    mapClass.Add("gradeCount", result.studentIds.Count);
-                    mapClass.Add("gradeRank", gradeScores.IndexOf(result.studentScores[index].Sum()));
-                    averageMap.Add(mapClass);
+*/
+                    foreach (ClassRange range in result.classes)
+                    {
+                        List<double> scores = new List<double>();
+                        List<double> finalScores = new List<double>();
+
+                        ClassId.Add(range.id);
+                        cla.Add(range.id);
+                        double totalClass = 0;
+                        for (int i = range.range[0]; i <= range.range[1]; i++)
+                        {
+                            totalClass += result.studentScores[i].Sum();
+                            scores.Add(result.studentScores[i].Sum());
+                            finalScores.Add(result.studentScores[i].Sum());
+                            gradeScores.Add(result.studentScores[i].Sum());
+                            totalGrade += result.studentScores[i].Sum();
+                            stu.Add(result.studentIds[i]);
+                        }
+                        classScores.Add(scores);
+                        cScores.Add(finalScores);
+                        ClassAverage.Add(range.range[1] - range.range[0] + 1 > 0 ? Math.Round(totalClass * 1.0 / (range.range[1] - range.range[0] + 1), 2) : 0);
+                        personCount.Add(range.range[1] - range.range[0] + 1);
+
+
+                    }
+
                 }
                 //处理班级/年级全科均分
                 List<double> AllAverage = new List<double>();