瀏覽代碼

处理合作学习分类计数

zhouj1203@hotmail.com 2 年之前
父節點
當前提交
b538d3547f
共有 1 個文件被更改,包括 9 次插入36 次删除
  1. 9 36
      TEAMModelOS/Controllers/Analysis/ClassAnalysisController.cs

+ 9 - 36
TEAMModelOS/Controllers/Analysis/ClassAnalysisController.cs

@@ -132,48 +132,21 @@ namespace TEAMModelOS.Controllers.Analysis
                     School scInfo = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{code}", partitionKey: new PartitionKey("Base"));
                     var perMore = scInfo.period.Where(c => c.id.Equals(pId.GetString())).FirstOrDefault().grades;
 
-                    var interaction = records.Where(c => c.startTime >= stime.GetInt64() && c.startTime <= etime.GetInt64() && c.grade.Any()).GroupBy(k => int.Parse(k.grade?[0])).Select(x => new
-                    {
-                        x.Key,
-                        name = perMore[x.Key],
-                        count = x.Sum(t => t.learningCategory?.interaction)
-                    });
-                    var cooperation = records.Where(c => c.startTime >= stime.GetInt64() && c.startTime <= etime.GetInt64() && c.grade.Any()).GroupBy(k => int.Parse(k.grade?[0])).Select(x => new
-                    {
-                        x.Key,
-                        name = perMore[x.Key],
-                        count = x.Sum(t => t.learningCategory?.cooperation)
-                    });
-                    var task = records.Where(c => c.startTime >= stime.GetInt64() && c.startTime <= etime.GetInt64() && c.grade.Any()).GroupBy(k => int.Parse(k.grade?[0])).Select(x => new
-                    {
-                        x.Key,
-                        name = perMore[x.Key],
-                        count = x.Sum(t => t.learningCategory?.task)
-                    });
-                    var exam = records.Where(c => c.startTime >= stime.GetInt64() && c.startTime <= etime.GetInt64() && c.grade.Any()).GroupBy(k => int.Parse(k.grade?[0])).Select(x => new
-                    {
-                        x.Key,
-                        name = perMore[x.Key],
-                        count = x.Sum(t => t.learningCategory?.exam)
-                    });
-                    var diffential = records.Where(c => c.startTime >= stime.GetInt64() && c.startTime <= etime.GetInt64() && c.grade.Any()).GroupBy(k => int.Parse(k.grade?[0])).Select(x => new
-                    {
-                        x.Key,
-                        name = perMore[x.Key],
-                        count = x.Sum(t => t.learningCategory?.diffential)
-                    });
+                    var realrecords = records.Where(c => c.startTime >= stime.GetInt64() && c.startTime <= etime.GetInt64() && c.grade.Any()).ToList();                       
                     List<(string name, int? cICount, int? pCount, int? cTCount, int? eCount,int? diffCount)> tcount = new();
                     List<(string name, int? count)> gdCount = new();
+                    int gCount = 0;
                     perMore.ForEach(x =>
                     {
-                        var cICount = interaction.Where(c => c.name.Equals(x, StringComparison.OrdinalIgnoreCase)).FirstOrDefault()?.count;
-                        var pCount = cooperation.Where(c => c.name.Equals(x, StringComparison.OrdinalIgnoreCase)).FirstOrDefault()?.count;
-                        var cTCount = task.Where(c => c.name.Equals(x, StringComparison.OrdinalIgnoreCase)).FirstOrDefault()?.count;
-                        var eCount = exam.Where(c => c.name.Equals(x, StringComparison.OrdinalIgnoreCase)).FirstOrDefault()?.count;
-                        var diffCount = diffential.Where(c => c.name.Equals(x, StringComparison.OrdinalIgnoreCase)).FirstOrDefault()?.count;
+                        var cICount = realrecords.Where(c => c.grade.Contains(gCount.ToString())).Select(z => z.learningCategory?.interaction).Sum();
+                        var pCount = realrecords.Where(c => c.grade.Contains(gCount.ToString())).Select(z => z.learningCategory?.cooperation).Sum();
+                        var tCount = realrecords.Where(c => c.grade.Contains(gCount.ToString())).Select(z => z.learningCategory?.task).Sum();
+                        var eCount = realrecords.Where(c => c.grade.Contains(gCount.ToString())).Select(z => z.learningCategory?.exam).Sum();
+                        var diffCount = realrecords.Where(c => c.grade.Contains(gCount.ToString())).Select(z => z.learningCategory?.diffential).Sum();
                         var gradeCount = grades.Where(c => perMore[int.Parse(c.name)].Equals(x, StringComparison.OrdinalIgnoreCase)).FirstOrDefault().count;
-                        tcount.Add((x, cICount, pCount, cTCount, eCount, diffCount));
+                        tcount.Add((x, cICount, pCount, tCount, eCount, diffCount));
                         gdCount.Add((x, gradeCount));
+                        gCount++;
                     });
 
                     var teachingCount = tcount.Select(x => new