年级班级
This commit is contained in:
parent
81e1533243
commit
b2ee87d2d2
@ -59,7 +59,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
Username = s.StudentNo,
|
Username = s.StudentNo,
|
||||||
Nickname = s.StudentName,
|
Nickname = s.StudentName,
|
||||||
GradeName = "",
|
GradeName = "",
|
||||||
OrganizationId = (int)orgId,
|
OrganizationId = s.ClassId ?? 0,
|
||||||
OrganizationName = s.ClassName ?? "",
|
OrganizationName = s.ClassName ?? "",
|
||||||
FacePictureUrl = s.Photo ?? "",
|
FacePictureUrl = s.Photo ?? "",
|
||||||
Identity = "学生",
|
Identity = "学生",
|
||||||
@ -74,7 +74,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
var c = await _context.Class.FindAsync(u.OrganizationId);
|
var c = await _context.Class.FindAsync(u.OrganizationId);
|
||||||
if (c != null)
|
if (c != null)
|
||||||
{
|
{
|
||||||
u.OrganizationName = c.ClassName ?? "";
|
u.OrganizationName = FormatOrganizationName(c, u.OrganizationName);
|
||||||
u.GradeName = c.GradeName ?? "";
|
u.GradeName = c.GradeName ?? "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,7 +140,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
OrganizationId = c.Id,
|
OrganizationId = c.Id,
|
||||||
ParentId = g.Id,
|
ParentId = g.Id,
|
||||||
ParentName = g.GradeName,
|
ParentName = g.GradeName,
|
||||||
OrganizationName = c.ClassName ?? "",
|
OrganizationName = FormatOrganizationName(c, c.ClassName ?? ""),
|
||||||
OrganizationType = "班级",
|
OrganizationType = "班级",
|
||||||
ChildrenIds = new List<int>()
|
ChildrenIds = new List<int>()
|
||||||
}).ToList(),
|
}).ToList(),
|
||||||
@ -472,6 +472,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
|
|
||||||
// 5. 课程名称(枚举描述)
|
// 5. 课程名称(枚举描述)
|
||||||
string courseName = Util.GetEnumDescription<CourseType>(train.CourseId);
|
string courseName = Util.GetEnumDescription<CourseType>(train.CourseId);
|
||||||
|
var trainClass = await _context.Class.FindAsync(student.ClassId);
|
||||||
|
|
||||||
// 6. 返回 DTO
|
// 6. 返回 DTO
|
||||||
return new DeviceSyncTrainDetailsDto
|
return new DeviceSyncTrainDetailsDto
|
||||||
@ -483,7 +484,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
FacePictureUrl = student.Photo ?? "",
|
FacePictureUrl = student.Photo ?? "",
|
||||||
Identity = "学生",
|
Identity = "学生",
|
||||||
OrganizationId = (int)student.ClassId,
|
OrganizationId = (int)student.ClassId,
|
||||||
OrganizationName = student.ClassName,
|
OrganizationName = FormatOrganizationName(trainClass, student.ClassName),
|
||||||
Gender = student.Sex == 1 ? "男" : "女",
|
Gender = student.Sex == 1 ? "男" : "女",
|
||||||
Score = train.Score?.ToString("0") ?? "0",
|
Score = train.Score?.ToString("0") ?? "0",
|
||||||
UnStandardCounts = train.UnStandardCounts,
|
UnStandardCounts = train.UnStandardCounts,
|
||||||
@ -621,6 +622,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
.GroupBy(x => new { x.s.ClassId, x.s.ClassName, x.t.CourseId })
|
.GroupBy(x => new { x.s.ClassId, x.s.ClassName, x.t.CourseId })
|
||||||
.Select(g => new
|
.Select(g => new
|
||||||
{
|
{
|
||||||
|
g.Key.ClassId,
|
||||||
g.Key.ClassName,
|
g.Key.ClassName,
|
||||||
g.Key.CourseId,
|
g.Key.CourseId,
|
||||||
SumScore = g.Sum(x => x.t.Score ?? 0),
|
SumScore = g.Sum(x => x.t.Score ?? 0),
|
||||||
@ -632,9 +634,21 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
.Take(size)
|
.Take(size)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
var organizationClassIds = grouped
|
||||||
|
.Select(x => x.ClassId ?? 0)
|
||||||
|
.Where(x => x > 0)
|
||||||
|
.Distinct()
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
var organizationClassMap = await _context.Class
|
||||||
|
.Where(x => organizationClassIds.Contains(x.Id))
|
||||||
|
.ToDictionaryAsync(x => x.Id);
|
||||||
|
|
||||||
return grouped.Select(x => new DeviceSyncOrganizationGradeOrderItemDto
|
return grouped.Select(x => new DeviceSyncOrganizationGradeOrderItemDto
|
||||||
{
|
{
|
||||||
OrganizationName = x.ClassName ?? "",
|
OrganizationName = organizationClassMap.TryGetValue(x.ClassId ?? 0, out var classInfo)
|
||||||
|
? FormatOrganizationName(classInfo, x.ClassName ?? "")
|
||||||
|
: x.ClassName ?? "",
|
||||||
SumScore = Math.Round(x.SumScore).ToString("0"),
|
SumScore = Math.Round(x.SumScore).ToString("0"),
|
||||||
AvgScore = x.AvgScore.ToString("0.##"),
|
AvgScore = x.AvgScore.ToString("0.##"),
|
||||||
SumCount = x.SumCount,
|
SumCount = x.SumCount,
|
||||||
@ -703,7 +717,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
UserSerial = best.s.StudentNo,
|
UserSerial = best.s.StudentNo,
|
||||||
Nickname = best.s.StudentName,
|
Nickname = best.s.StudentName,
|
||||||
OrganizationId = best.s.ClassId ?? 0,
|
OrganizationId = best.s.ClassId ?? 0,
|
||||||
OrganizationName = bestClass?.ClassName ?? best.s.ClassName ?? "",
|
OrganizationName = FormatOrganizationName(bestClass, best.s.ClassName ?? ""),
|
||||||
Gender = best.s.Sex,
|
Gender = best.s.Sex,
|
||||||
Score = best.t.Score?.ToString("0.##") ?? "0",
|
Score = best.t.Score?.ToString("0.##") ?? "0",
|
||||||
CourseId = best.t.CourseId,
|
CourseId = best.t.CourseId,
|
||||||
@ -727,6 +741,14 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
var studentSerials = students.Select(s => s.StudentNo).ToList();
|
var studentSerials = students.Select(s => s.StudentNo).ToList();
|
||||||
|
var lastGradeClassIds = students
|
||||||
|
.Select(x => x.ClassId ?? 0)
|
||||||
|
.Where(x => x > 0)
|
||||||
|
.Distinct()
|
||||||
|
.ToList();
|
||||||
|
var lastGradeClassMap = await _context.Class
|
||||||
|
.Where(x => lastGradeClassIds.Contains(x.Id))
|
||||||
|
.ToDictionaryAsync(x => x.Id);
|
||||||
|
|
||||||
var trains = await _context.YL_Train
|
var trains = await _context.YL_Train
|
||||||
.Where(t => studentSerials.Contains(t.UserSerial))
|
.Where(t => studentSerials.Contains(t.UserSerial))
|
||||||
@ -759,7 +781,9 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
Username = st?.StudentNo ?? serial,
|
Username = st?.StudentNo ?? serial,
|
||||||
Nickname = st?.StudentName ?? "",
|
Nickname = st?.StudentName ?? "",
|
||||||
OrganizationId = st?.ClassId ?? 0,
|
OrganizationId = st?.ClassId ?? 0,
|
||||||
OrganizationName = st?.ClassName ?? "",
|
OrganizationName = st != null && lastGradeClassMap.TryGetValue(st.ClassId ?? 0, out var lastGradeClass)
|
||||||
|
? FormatOrganizationName(lastGradeClass, st.ClassName ?? "")
|
||||||
|
: st?.ClassName ?? "",
|
||||||
GradeName = "", // 没有就空
|
GradeName = "", // 没有就空
|
||||||
FacePictureUrl = st?.Photo ?? "",
|
FacePictureUrl = st?.Photo ?? "",
|
||||||
Identity = "", // 可选
|
Identity = "", // 可选
|
||||||
@ -866,6 +890,22 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
})
|
})
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
var recordClassIds = list
|
||||||
|
.Select(x => x.OrganizationId)
|
||||||
|
.Where(x => x > 0)
|
||||||
|
.Distinct()
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
var recordClassMap = await _context.Class
|
||||||
|
.Where(x => recordClassIds.Contains(x.Id))
|
||||||
|
.ToDictionaryAsync(x => x.Id);
|
||||||
|
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
if (recordClassMap.TryGetValue(item.OrganizationId, out var recordClass))
|
||||||
|
item.OrganizationName = FormatOrganizationName(recordClass, item.OrganizationName);
|
||||||
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -894,7 +934,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
UserType = 2,
|
UserType = 2,
|
||||||
Nickname = student.StudentName,
|
Nickname = student.StudentName,
|
||||||
OrganizationId = student.ClassId ?? 0,
|
OrganizationId = student.ClassId ?? 0,
|
||||||
OrganizationName = c?.ClassName ?? "",
|
OrganizationName = FormatOrganizationName(c, ""),
|
||||||
FacePictureUrl = student.Photo,
|
FacePictureUrl = student.Photo,
|
||||||
Identity = "学生",
|
Identity = "学生",
|
||||||
Gender = student.Sex == 1 ? "男" : "女",
|
Gender = student.Sex == 1 ? "男" : "女",
|
||||||
@ -990,7 +1030,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
UserType = 2,
|
UserType = 2,
|
||||||
Nickname = student.StudentName,
|
Nickname = student.StudentName,
|
||||||
OrganizationId = student.ClassId ?? 0,
|
OrganizationId = student.ClassId ?? 0,
|
||||||
OrganizationName = c?.ClassName ?? "",
|
OrganizationName = FormatOrganizationName(c, ""),
|
||||||
FacePictureUrl = student.Photo,
|
FacePictureUrl = student.Photo,
|
||||||
Identity = "学生",
|
Identity = "学生",
|
||||||
Gender = student.Sex == 1 ? "男" : "女",
|
Gender = student.Sex == 1 ? "男" : "女",
|
||||||
@ -1041,7 +1081,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
UserType = 2,
|
UserType = 2,
|
||||||
Nickname = student.StudentName,
|
Nickname = student.StudentName,
|
||||||
OrganizationId = student.ClassId ?? 0,
|
OrganizationId = student.ClassId ?? 0,
|
||||||
OrganizationName = studentClass?.ClassName ?? student.ClassName ?? "",
|
OrganizationName = FormatOrganizationName(studentClass, student.ClassName ?? ""),
|
||||||
FacePictureUrl = student.Photo ?? "",
|
FacePictureUrl = student.Photo ?? "",
|
||||||
Identity = "学生",
|
Identity = "学生",
|
||||||
Gender = student.Sex == 1 ? "男" : "女",
|
Gender = student.Sex == 1 ? "男" : "女",
|
||||||
@ -1328,7 +1368,7 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
var c = await _context.Class.FindAsync(dto.OrganizationId);
|
var c = await _context.Class.FindAsync(dto.OrganizationId);
|
||||||
if (c != null)
|
if (c != null)
|
||||||
{
|
{
|
||||||
dto.OrganizationName = c.ClassName ?? "";
|
dto.OrganizationName = FormatOrganizationName(c, dto.OrganizationName);
|
||||||
dto.GradeName = c.GradeName ?? "";
|
dto.GradeName = c.GradeName ?? "";
|
||||||
}
|
}
|
||||||
return dto;
|
return dto;
|
||||||
@ -1392,6 +1432,15 @@ namespace YD_YiLu.Api.Services.Impl
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string FormatOrganizationName(S_Class classInfo, string fallback = "")
|
||||||
|
{
|
||||||
|
if (classInfo == null)
|
||||||
|
return fallback ?? "";
|
||||||
|
|
||||||
|
var name = $"{classInfo.GradeName ?? ""}{classInfo.ClassName ?? ""}";
|
||||||
|
return string.IsNullOrWhiteSpace(name) ? fallback ?? "" : name;
|
||||||
|
}
|
||||||
|
|
||||||
private int CompareVersion(string v1, string v2)
|
private int CompareVersion(string v1, string v2)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(v1) || string.IsNullOrEmpty(v2))
|
if (string.IsNullOrEmpty(v1) || string.IsNullOrEmpty(v2))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user