Compare commits

..

No commits in common. "218bf66fc61a147ecba3c249b026139df1cc86f3" and "db0e5905fa80ff57041bb369f9c1545c4c09dfa1" have entirely different histories.

3 changed files with 34 additions and 23 deletions

View File

@ -342,6 +342,8 @@ 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 &&
@ -368,37 +370,42 @@ namespace Learn.Archives.API.Controllers
Type = exam.Type,
Average1 = exam.BaseSchoolScore,
};
insertTotalClassInfo.Add(eCInfo);
insertClassInfo.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)
{
tag.OnLineCount++;
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++;
}
}
@ -412,7 +419,13 @@ 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,7 +57,6 @@ 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,9 +65,8 @@ namespace Learn.Archives.Core.Model
/// <summary>
/// 上线率
/// </summary>
[SugarColumn(IsIgnore = true)]
public decimal OnLineRate => OnLineCount / PeopleCount;
public int PeopleCount { get; set; }
[SugarColumn(DecimalDigits = 2)]
public decimal OnLineRate { get; set; }
/// <summary>
/// 上线人数
/// </summary>