|
@@ -49,6 +49,7 @@ using DocumentFormat.OpenXml.Wordprocessing;
|
|
|
using Microsoft.AspNetCore.Http.HttpResults;
|
|
|
using DocumentFormat.OpenXml.Drawing.Charts;
|
|
|
using TEAMModelOS.Models.Dto;
|
|
|
+using FastJSON;
|
|
|
|
|
|
|
|
|
namespace TEAMModelOS.Controllers
|
|
@@ -420,6 +421,10 @@ namespace TEAMModelOS.Controllers
|
|
|
clds.Add(cla.id);
|
|
|
}
|
|
|
}
|
|
|
+ if (clds.Count == 0)
|
|
|
+ {
|
|
|
+ return Ok(new { orderScore = Array.Empty<string>(), typeCount = Array.Empty<string>(), gradeRate = Array.Empty<string>(), pCount = 0, gradeExamAverageScore = 0, point = 0, code = 200 });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//处理班级ID
|
|
@@ -468,8 +473,8 @@ namespace TEAMModelOS.Controllers
|
|
|
List<ExamClassResult> classResults = new();
|
|
|
List<ExamClassResult> results = new();
|
|
|
|
|
|
- var point = paperSimples.FirstOrDefault().point.Sum();
|
|
|
- var gradeExamAverageScore = Math.Round(averages.Select(c => c.score).Sum() / averages.Count,2);
|
|
|
+ var point = paperSimples.Count > 0 ? paperSimples.FirstOrDefault().point.Sum() : 0;
|
|
|
+ var gradeExamAverageScore = averages.Count >0 ? Math.Round(averages.Select(c => c.score).Sum() / averages.Count,2) : 0;
|
|
|
if (clas.Count == 0)
|
|
|
{
|
|
|
var queryClass = $"select value(c) from c where c.examId in ({string.Join(",", ids.Select(o => $"'{o}'"))})";
|
|
@@ -504,7 +509,7 @@ namespace TEAMModelOS.Controllers
|
|
|
x.Key,
|
|
|
cc = x.ToList().Count,
|
|
|
students = x.ToList().SelectMany(z => z.studentIds).Distinct().ToList(),
|
|
|
- classRate = Math.Round(x.ToList().Select(z => z.average).Sum() / x.ToList().Count,2)
|
|
|
+ classRate = x.ToList().Count > 0 ? Math.Round(x.ToList().Select(z => z.average).Sum() / x.ToList().Count,2) : 0
|
|
|
//score = x.ToList().Select(k => k.sum).Aggregate((current, next) => current.Zip(next, (a, b) => a + b).ToList()),
|
|
|
//gRate = Math.Round( x.ToList().SelectMany(k => k.sum).Sum() / x.ToList().Count / members.Count, 2)
|
|
|
});
|
|
@@ -527,8 +532,8 @@ namespace TEAMModelOS.Controllers
|
|
|
students = x.ToList().SelectMany(z => z.studentIds).Distinct().ToList(),
|
|
|
classRate = x.ToList().GroupBy(z => z.info.id).Select(m => new {
|
|
|
classId = m.Key,
|
|
|
- className = groups.Where(k => k.id.Equals(m.Key)).FirstOrDefault().name,
|
|
|
- rate = Math.Round(m.ToList().Select(k => k.average).Sum() / m.ToList().Count / point,4)
|
|
|
+ className = groups.Where(k => k.id.Equals(m.Key)).FirstOrDefault()?.name,
|
|
|
+ rate = point > 0 ? Math.Round(m.ToList().Select(k => k.average).Sum() / m.ToList().Count / point,4) :0
|
|
|
})
|
|
|
//score = x.ToList().Select(k => k.sum).Aggregate((current, next) => current.Zip(next, (a, b) => a + b).ToList()),
|
|
|
//gRate = Math.Round(x.ToList().SelectMany(k => k.sum).Sum() / x.ToList().Count / members.Count, 2)
|
|
@@ -536,7 +541,7 @@ namespace TEAMModelOS.Controllers
|
|
|
var gradeRate = examAllScore.Select(x => new
|
|
|
{
|
|
|
subjectId = x.Key,
|
|
|
- subjectName = subs.Where(z => z.id.Equals(x.Key)).FirstOrDefault().name,
|
|
|
+ subjectName = subs.Where(z => z.id.Equals(x.Key)).FirstOrDefault()?.name,
|
|
|
x.classRate
|
|
|
//x.gRate
|
|
|
});
|
|
@@ -546,20 +551,20 @@ namespace TEAMModelOS.Controllers
|
|
|
var orderScore = stuScore.Select(x => new
|
|
|
{
|
|
|
subjectId = x.sub,
|
|
|
- subjectName = subs.Where(z => z.id.Equals(x.sub)).FirstOrDefault().name,
|
|
|
- classRate = Math.Round(x.average / point, 4),
|
|
|
+ subjectName = subs.Where(z => z.id.Equals(x.sub)).FirstOrDefault()?.name,
|
|
|
+ classRate = point > 0 ? Math.Round(x.average / point, 4) : 0,
|
|
|
rank = x.subScore.OrderByDescending(x => x.score).Select(z => z.id).ToList().IndexOf(studentId.GetString()) + 1,
|
|
|
stuRate = x.subScore.OrderByDescending(x => x.score).Select(z => new
|
|
|
{
|
|
|
z.id,
|
|
|
- members.Where(s => s.id.Equals(z.id)).FirstOrDefault().name,
|
|
|
- rate = Math.Round(z.score / point, 4)
|
|
|
+ members.Where(s => s.id.Equals(z.id)).FirstOrDefault()?.name,
|
|
|
+ rate = point > 0 ? Math.Round(z.score / point, 4) :0
|
|
|
}).ToList().Take(10),
|
|
|
sper = x.subScore.Where(c => c.id.Equals(studentId.GetString())).Select(z => new
|
|
|
{
|
|
|
z.id,
|
|
|
- members.Where(s => s.id.Equals(z.id)).FirstOrDefault().name,
|
|
|
- rate = Math.Round(z.score / point, 4)
|
|
|
+ members.Where(s => s.id.Equals(z.id)).FirstOrDefault()?.name,
|
|
|
+ rate = point>0 ? Math.Round(z.score / point, 4) :0
|
|
|
})
|
|
|
});
|
|
|
return Ok(new { orderScore, typeCount, gradeRate, pCount = members.Count, gradeExamAverageScore, point, code = 200 });
|
|
@@ -569,12 +574,13 @@ namespace TEAMModelOS.Controllers
|
|
|
var orderScore = stuScore.Select(x => new
|
|
|
{
|
|
|
subjectId = x.sub,
|
|
|
- subjectName = subs.Where(z => z.id.Equals(x.sub)).FirstOrDefault().name,
|
|
|
- classRate = Math.Round(x.average / point,4),
|
|
|
+ subjectName = subs.Where(z => z.id.Equals(x.sub)).FirstOrDefault()?.name,
|
|
|
+ classRate = point > 0 ? Math.Round(x.average / point,4) : 0,
|
|
|
stuRate = x.subScore.OrderByDescending(x => x.score).Select(z => new
|
|
|
{
|
|
|
z.id,
|
|
|
- rate = Math.Round(z.score / point, 4)
|
|
|
+ members.Where(s => s.id.Equals(z.id)).FirstOrDefault()?.name,
|
|
|
+ rate = point > 0 ? Math.Round(z.score / point, 4) : 0
|
|
|
}).ToList().Take(10)
|
|
|
});
|
|
|
return Ok(new { orderScore, typeCount, gradeRate, pCount = members.Count, gradeExamAverageScore, point, code = 200 });
|
|
@@ -892,8 +898,8 @@ namespace TEAMModelOS.Controllers
|
|
|
|
|
|
|
|
|
[ProducesDefaultResponseType]
|
|
|
- [AuthToken(Roles = "teacher,admin,student")]
|
|
|
|
|
|
+ [AuthToken(Roles = "teacher,admin,student")]
|
|
|
#if !DEBUG
|
|
|
[Authorize(Roles = "IES")]
|
|
|
#endif
|
|
@@ -1064,8 +1070,17 @@ namespace TEAMModelOS.Controllers
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ School schoolBase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(code.GetString(), new PartitionKey("Base"));
|
|
|
+ var periodInfo = schoolBase.period.Find(x => x.id.Equals($"{period}"));
|
|
|
+ List<GroupListDto> allClasses = new List<GroupListDto>();
|
|
|
+ //获取该学校某学段全部行政班级
|
|
|
+ allClasses = await GroupListService.GetGroupListByType(_azureCosmos.GetCosmosClient(), "class", schoolBase, periodInfo, 0);
|
|
|
+ var classData = allClasses.Select(x => new {
|
|
|
+ x.id,
|
|
|
+ x.name
|
|
|
+ });
|
|
|
var groups = exams.Where(e => null != e.examType && !string.IsNullOrWhiteSpace(e.examType.id)).GroupBy(x => x.examType.name).Select(y => new { key = y.Key, count = y.ToList().Count }).ToList();
|
|
|
- return Ok(new { examInfo, token = token, year, count = exams.Count, groups });
|
|
|
+ return Ok(new { examInfo, token, year, count = exams.Count, groups, classData });
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|