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))
{
var insertClassInfo = new List<ExamClassInfo>();
var insertClassTag = new List<ExamClassTag>();
var school = await sService.GetFirstAsync(s => s.Id == schoolArr.Key);
var classArr = await db.Queryable<Classes>().Where(c => c.SchoolId == school.Id &&
c.GradeLevel == exam.GradeLevel &&
@ -370,42 +368,37 @@ namespace Learn.Archives.API.Controllers
Type = exam.Type,
Average1 = exam.BaseSchoolScore,
};
insertClassInfo.Add(eCInfo);
insertTotalClassInfo.Add(eCInfo);
var avgTotal = 0m;
//todo 班级分段分析
var classTagDic = new Dictionary<long, ExamClassTag[]>();
var classTagDic = new Dictionary<long, ExamClassTag>();
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)
{
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)
{
var tag = classTagArr[(int)(item.SubjectId ?? 0)];
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++;
tag.OnLineCount++;
}
}
@ -419,13 +412,7 @@ namespace Learn.Archives.API.Controllers
}
//总分平均分
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();
else
res.Data = res.Data.OrderByDescending(s => s.SubjectDic?[oldSer.Value]).ToList();
return res;
}
return await base.PageList(model);
}

View File

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