|
@@ -538,7 +538,7 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
{
|
|
{
|
|
//年级全科的pr
|
|
//年级全科的pr
|
|
int index = stuGradeTotal.IndexOf(x.total);
|
|
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;
|
|
//double GPR = 100 - (100 * (index + 1) - 50) / stuCount;
|
|
x.gpr = GPR;
|
|
x.gpr = GPR;
|
|
x.gsort = index + 1;
|
|
x.gsort = index + 1;
|
|
@@ -580,15 +580,16 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
BadRequest(ex.StackTrace);
|
|
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
|
|
/*var sub = info.subjects.Select(x => new
|
|
{
|
|
{
|
|
@@ -1293,18 +1294,18 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
//单个认知层次得分情况
|
|
//单个认知层次得分情况
|
|
scores += exam.studentScores[index][n];
|
|
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];
|
|
//anwGPoint += exam.studentScores[index][n];
|
|
}
|
|
}
|
|
gPoint += point[n];
|
|
gPoint += point[n];
|
|
@@ -1469,7 +1470,7 @@ namespace TEAMModelOS.Controllers.Analysis
|
|
{
|
|
{
|
|
using var json = await JsonDocument.ParseAsync(response.ContentStream);
|
|
using var json = await JsonDocument.ParseAsync(response.ContentStream);
|
|
school = json.ToObject<School>();
|
|
school = json.ToObject<School>();
|
|
- }
|
|
|
|
|
|
+ }
|
|
//School school = await client.GetContainer("TEAMModelOS", "School").ReadItemAsync<School>(code.ToString(), new PartitionKey($"Base"));
|
|
//School school = await client.GetContainer("TEAMModelOS", "School").ReadItemAsync<School>(code.ToString(), new PartitionKey($"Base"));
|
|
List<ExamResult> examResults = new List<ExamResult>();
|
|
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}' ";
|
|
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>> classScores = new List<List<double>>();
|
|
//此处声明集合存储原本的成绩序列
|
|
//此处声明集合存储原本的成绩序列
|
|
List<List<double>> cScores = 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);
|
|
ClassId.Add(range.id);
|
|
cla.Add(range.id);
|
|
cla.Add(range.id);
|
|
double totalClass = 0;
|
|
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);
|
|
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);
|
|
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>();
|
|
List<double> AllAverage = new List<double>();
|