diff --git a/VOL.Ai/Services/AiAppService.cs b/VOL.Ai/Services/AiAppService.cs index 41715b6..0bf9f0e 100644 --- a/VOL.Ai/Services/AiAppService.cs +++ b/VOL.Ai/Services/AiAppService.cs @@ -248,33 +248,41 @@ namespace VOL.Ai.Services // ========================= // 7️⃣ 回查数据库,组装返回 DTO // ========================= + // 1️⃣ 先从数据库拿所有年级和班级 var dbGrades = await _studentRepository.DbContext.Set() .Where(x => x.SchoolCode == schoolCode && allGradeNos.Contains(x.GradeNo)) .Include(g => g.Classes) .ToListAsync(); - // 按 GradeNo 分组,只取每组第一个 - var distinctGrades = dbGrades - .GroupBy(g => g.GradeNo) - .Select(g => g.First()) - .ToList(); + // 2️⃣ 按 GradeNo 分组 + var groupedGrades = dbGrades + .GroupBy(g => g.GradeNo); - res.Grade = distinctGrades - .Where(g => g.Classes != null && g.Classes.Any()) - .Select(g => new Grades + // 3️⃣ 组装 DTO:每组取第一个年级信息,但班级取全部 + res.Grade = groupedGrades + .Select(g => { - Id = (int)g.Id, - Name = g.GradeName, - Class = g.Classes.Select(c => new Classes + var firstGrade = g.First(); // 取年级信息 + // 班级合并所有年级的班级 + var allClasses = g.SelectMany(x => x.Classes ?? Enumerable.Empty()).ToList(); + + return new Grades { - Id = (int)c.Id, - Name = c.ClassName - }).ToList() + Id =1, + Name = firstGrade.GradeName, + Class = allClasses + .Select(c => new Classes + { + Id = (int)c.Id, + Name = c.ClassName + }) + .ToList() + }; }) + .Where(g => g.Class.Any()) // 过滤掉没有班级的年级 .ToList(); - - return res; + //return res; //if (string.IsNullOrWhiteSpace(paramDto.Code)) // throw new ArgumentException("学校编码不能为空", nameof(paramDto.Code)); @@ -313,7 +321,7 @@ namespace VOL.Ai.Services // Class = g.Classes // .Select((c, classIndex) => new Classes // { - // Id = classIndex + 1, + // Id = classIndex + 1, // Name = c.ClassName // }) // .ToList() @@ -322,7 +330,9 @@ namespace VOL.Ai.Services // .ToList() //}; - //return res; + var json= JsonConvert.SerializeObject(res); + + return res; } public Ai_OSSInfoDto OSSInfo(Ai_Request paramDto)