|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|