浏览代码

学情年级分组结算

zhouj1203@hotmail.com 4 年之前
父节点
当前提交
ba21768398
共有 2 个文件被更改,包括 34 次插入6 次删除
  1. 33 6
      TEAMModelOS/Controllers/Analysis/AnalysisController.cs
  2. 1 0
      TEAMModelOS/Controllers/Analysis/ClassAys.cs

+ 33 - 6
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -420,6 +420,7 @@ namespace TEAMModelOS.Controllers.Analysis
                     ClassAys classAys = new ClassAys
                     {
                         gradeId = classroom.gradeId,
+                        year = classroom.year,
                         studentIds = studentIds,
                         stuCount = stuCount,
                         classId = classId,
@@ -493,19 +494,20 @@ namespace TEAMModelOS.Controllers.Analysis
                     classes.Add(classAys);
                 }
                 //处理年级
-                var tgrades = classes.GroupBy(x => x.gradeId).Select(x => x.Key);
+                var tgrades = classes.GroupBy(x => x.year).Select(x => x.Key);
                 foreach (var greade in tgrades)
                 {
-                    var clases = classes.Where(x => x.gradeId.Equals(greade));
+                    string gid = await getGId(greade, info.period.id, info.school);
+                    var clases = classes.Where(x => x.year.Equals(greade));
                     var classCount = clases.Count();
                     var stu = clases.SelectMany(x => x.studentIds).ToList();
                     var lineCount = clases.Select(x => x.lineCount).Sum();
                     var totalAverage = clases.Select(x => x.totalAverage).Sum() * 1.0 / classCount;
                     GradeAys gradeAys = new GradeAys
                     {
-                        gradeId = greade,
+                        gradeId = gid,
                         studentIds = stu,
-                        gradeName = info.grades.Where(x => x.id == greade).FirstOrDefault().name,
+                        gradeName = info.grades.Where(x => x.id == gid).FirstOrDefault().name,
                         stuCount = stu.Count,
                         lineCount = lineCount,
                         totalAverage = totalAverage,
@@ -524,13 +526,13 @@ namespace TEAMModelOS.Controllers.Analysis
                             passPercent = passPercent,
                             average = average,
                             name = info.subjects.Where(x => x.id == key).FirstOrDefault().name,
-                            item = gscores.Where(x => x.Key == key).FirstOrDefault().Value.Where(cls => cls.Key == greade).FirstOrDefault().Value
+                            item = gscores.Where(x => x.Key == key).FirstOrDefault().Value.Where(cls => cls.Key == gid).FirstOrDefault().Value
                         };
                         gradeAys.subjects.Add(subject);
                     }
                     grades.Add(gradeAys);
                     //处理学生年级相关的pr值
-                    var studentAys = students.Where(x => x.gradeId.Equals(greade)).ToList();
+                    var studentAys = students.Where(x => x.gradeId.Equals(gid)).ToList();
                     var stuGradeTotal = studentAys.Select(x => x.total).ToList();
                     stuGradeTotal.Sort((s1, s2) => { return s2.CompareTo(s1); });
                     var stuCount = stuGradeTotal.Count;
@@ -1625,5 +1627,30 @@ namespace TEAMModelOS.Controllers.Analysis
             }
         }
 
+        public async Task<string> getGId(int cyear,string periodId,string code) {
+            var client = _azureCosmos.GetCosmosClient();
+            School sc = await client.GetContainer("TEAMModelOS", "School").ReadItemAsync<School>(code, new Azure.Cosmos.PartitionKey("Base"));
+            string gradeId = "";
+            foreach (Period period in sc.period)
+            {
+                if (period.id.Equals(periodId))
+                {
+                    foreach (Semester semester in period.semesters)
+                    {
+                        if (semester.start == 1)
+                        {
+                            int year = DateTimeOffset.UtcNow.Year;
+                            int month = DateTimeOffset.UtcNow.Month;
+                            int day = DateTimeOffset.UtcNow.Day;
+                            int time = month > semester.month ? 0 : 1;
+                            int eyear = cyear - time;
+                            gradeId = (year - eyear).ToString();
+                        }
+                    }
+                }
+            }
+            return gradeId;
+        }
+
     }
 }

+ 1 - 0
TEAMModelOS/Controllers/Analysis/ClassAys.cs

@@ -21,6 +21,7 @@ namespace TEAMModelOS.Controllers.Analysis
         public double totalAverage { get; set; }
         public double standardDeviation { get; set; }
         public string gradeId { get; set; }
+        public int year { get; set; }
         //记录班级得分率
         public double csRate { get; set; }
     }