staging #20

Merged
hy merged 24 commits from staging into master 2025-10-14 11:13:23 +08:00
3 changed files with 23 additions and 34 deletions
Showing only changes of commit 218bf66fc6 - Show all commits

View File

@ -342,8 +342,6 @@ namespace Learn.Archives.API.Controllers
foreach (var schoolArr in userInfoArr.GroupBy(s => s.SchoolId)) foreach (var schoolArr in userInfoArr.GroupBy(s => s.SchoolId))
{ {
var insertClassInfo = new List<ExamClassInfo>();
var insertClassTag = new List<ExamClassTag>();
var school = await sService.GetFirstAsync(s => s.Id == schoolArr.Key); var school = await sService.GetFirstAsync(s => s.Id == schoolArr.Key);
var classArr = await db.Queryable<Classes>().Where(c => c.SchoolId == school.Id && var classArr = await db.Queryable<Classes>().Where(c => c.SchoolId == school.Id &&
c.GradeLevel == exam.GradeLevel && c.GradeLevel == exam.GradeLevel &&
@ -370,42 +368,37 @@ namespace Learn.Archives.API.Controllers
Type = exam.Type, Type = exam.Type,
Average1 = exam.BaseSchoolScore, Average1 = exam.BaseSchoolScore,
}; };
insertClassInfo.Add(eCInfo); insertTotalClassInfo.Add(eCInfo);
var avgTotal = 0m; var avgTotal = 0m;
//todo 班级分段分析 //todo 班级分段分析
var classTagDic = new Dictionary<long, ExamClassTag[]>(); var classTagDic = new Dictionary<long, ExamClassTag>();
foreach (var eUserInfo in classUserArr) foreach (var eUserInfo in classUserArr)
{ {
if (!classTagDic.TryGetValue(eUserInfo.ClassId, out ExamClassTag[]? classTagArr))
{
classTagArr = new ExamClassTag[10];
classTagDic.Add(eUserInfo.ClassId, classTagArr);
}
//上线人数 //上线人数
foreach (var item in eTagArr) foreach (var item in eTagArr)
{ {
var subV = SubjectScore(eUserInfo, item.SubjectId); var subV = SubjectScore(eUserInfo, item.SubjectId);
if (!classTagDic.TryGetValue(item.Id, out ExamClassTag? tag))
{
tag = new ExamClassTag()
{
MaxScore = item.MaxScore,
MinScore = item.MinScore,
ClassId = classInfo.Id,
PeopleCount = eCInfo.PeopleCount,
ExamId = exam.Id,
ExamTagId = item.Id,
Name = item.TagName,
SubjectId = item.SubjectId
};
insertTotalClassTag.Add(tag);
classTagDic.Add(item.Id, tag);
}
//总分分段 //总分分段
if (subV >= item.MinScore && subV <= item.MaxScore) if (subV >= item.MinScore && subV <= item.MaxScore)
{ {
var tag = classTagArr[(int)(item.SubjectId ?? 0)]; tag.OnLineCount++;
if (tag is null)
{
tag = new ExamClassTag()
{
MaxScore = item.MaxScore,
MinScore = item.MinScore,
ClassId = classInfo.Id,
ExamId = exam.Id,
ExamTagId = item.Id,
Name = item.TagName,
SubjectId = item.SubjectId
};
insertClassTag.Add(tag);
classTagArr[(int)(item.SubjectId ?? 0)] = tag;
}
classTagArr[(int)(item.SubjectId ?? 0)].OnLineCount++;
} }
} }
@ -419,13 +412,7 @@ namespace Learn.Archives.API.Controllers
} }
//总分平均分 //总分平均分
eCInfo.Average = avgTotal / eCInfo.PeopleCount; eCInfo.Average = avgTotal / eCInfo.PeopleCount;
//计算上线率
if (classTagDic.ContainsKey(eCInfo.ClassId))
foreach (var item in classTagDic[eCInfo.ClassId])
if(item !=null) item.OnLineRate = (decimal)item.OnLineCount / (decimal)eCInfo.PeopleCount;
} }
insertTotalClassInfo.AddRange(insertClassInfo);
insertTotalClassTag.AddRange(insertClassTag);
} }
{ {

View File

@ -57,6 +57,7 @@ namespace Learn.Archives.API.Controllers
res.Data = res.Data.OrderBy(s => s.SubjectDic?[oldSer.Value]).ToList(); res.Data = res.Data.OrderBy(s => s.SubjectDic?[oldSer.Value]).ToList();
else else
res.Data = res.Data.OrderByDescending(s => s.SubjectDic?[oldSer.Value]).ToList(); res.Data = res.Data.OrderByDescending(s => s.SubjectDic?[oldSer.Value]).ToList();
return res;
} }
return await base.PageList(model); return await base.PageList(model);
} }

View File

@ -65,8 +65,9 @@ namespace Learn.Archives.Core.Model
/// <summary> /// <summary>
/// 上线率 /// 上线率
/// </summary> /// </summary>
[SugarColumn(DecimalDigits = 2)] [SugarColumn(IsIgnore = true)]
public decimal OnLineRate { get; set; } public decimal OnLineRate => OnLineCount / PeopleCount;
public int PeopleCount { get; set; }
/// <summary> /// <summary>
/// 上线人数 /// 上线人数
/// </summary> /// </summary>