staging #31
|
|
@ -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))
|
||||||
if (subV >= item.MinScore && subV <= item.MaxScore)
|
|
||||||
{
|
|
||||||
var tag = classTagArr[(int)(item.SubjectId ?? 0)];
|
|
||||||
if (tag is null)
|
|
||||||
{
|
{
|
||||||
tag = new ExamClassTag()
|
tag = new ExamClassTag()
|
||||||
{
|
{
|
||||||
MaxScore = item.MaxScore,
|
MaxScore = item.MaxScore,
|
||||||
MinScore = item.MinScore,
|
MinScore = item.MinScore,
|
||||||
ClassId = classInfo.Id,
|
ClassId = classInfo.Id,
|
||||||
|
PeopleCount = eCInfo.PeopleCount,
|
||||||
ExamId = exam.Id,
|
ExamId = exam.Id,
|
||||||
ExamTagId = item.Id,
|
ExamTagId = item.Id,
|
||||||
Name = item.TagName,
|
Name = item.TagName,
|
||||||
SubjectId = item.SubjectId
|
SubjectId = item.SubjectId
|
||||||
};
|
};
|
||||||
insertClassTag.Add(tag);
|
insertTotalClassTag.Add(tag);
|
||||||
classTagArr[(int)(item.SubjectId ?? 0)] = tag;
|
classTagDic.Add(item.Id, tag);
|
||||||
}
|
}
|
||||||
classTagArr[(int)(item.SubjectId ?? 0)].OnLineCount++;
|
//总分分段
|
||||||
|
if (subV >= item.MinScore && subV <= item.MaxScore)
|
||||||
|
{
|
||||||
|
tag.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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue