课堂报告

This commit is contained in:
tanglong 2026-01-28 10:39:32 +08:00
parent 17d110a878
commit b6583ed53a

View File

@ -1,4 +1,5 @@
using AutoMapper; using AutoMapper;
using EFCore.BulkExtensions;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
@ -1520,6 +1521,25 @@ namespace VOL.Ai.Services
if (teacher == null || string.IsNullOrWhiteSpace(teacher.TeacherNo) || string.IsNullOrWhiteSpace(teacher.TeacherName)) if (teacher == null || string.IsNullOrWhiteSpace(teacher.TeacherNo) || string.IsNullOrWhiteSpace(teacher.TeacherName))
throw new Exception("获取京师老师信息失败!"); throw new Exception("获取京师老师信息失败!");
// 2️⃣ 查询数据库中是否已有该老师
var dbTeacher = await _teacherRepository.DbContext.Set<JS_Teacher>()
.FirstOrDefaultAsync(t => t.TeacherNo == teacher.TeacherNo);
if (dbTeacher == null)
{
// 老师不存在,新增
dbTeacher = new JS_Teacher
{
TeacherNo = teacher.TeacherNo,
TeacherName = teacher.TeacherName,
SchoolCode = paramDto.SchoolCode,
Code = paramDto.Code
};
await _teacherRepository.DbContext.Set<JS_Teacher>().AddAsync(dbTeacher);
await _teacherRepository.DbContext.SaveChangesAsync();
}
var gradeDtos = teacher.GradeList ?? new List<GradeDto>(); var gradeDtos = teacher.GradeList ?? new List<GradeDto>();
var allGradeNos = gradeDtos.Where(g => !string.IsNullOrWhiteSpace(g.GradeNo)) var allGradeNos = gradeDtos.Where(g => !string.IsNullOrWhiteSpace(g.GradeNo))
.Select(g => g.GradeNo) .Select(g => g.GradeNo)
@ -1531,18 +1551,29 @@ namespace VOL.Ai.Services
.Include(g => g.Classes) .Include(g => g.Classes)
.ToListAsync(); .ToListAsync();
// 4️⃣ 更新已存在的年级老师信息(直接 UPDATE) var existClasses = existGrades.SelectMany(g => g.Classes).ToList();
foreach (var grade in existGrades)
{
grade.TeacherNo = teacher.TeacherNo;
grade.TeacherName = teacher.TeacherName;
foreach (var cls in grade.Classes) // 先删班级
{ _studentRepository.DbContext.Set<JS_Class>().RemoveRange(existClasses);
cls.TeacherNo = teacher.TeacherNo;
cls.TeacherName = teacher.TeacherName; // 再删年级
} _studentRepository.DbContext.Set<JS_Grade>().RemoveRange(existGrades);
}
await _studentRepository.DbContext.SaveChangesAsync();
// 4️⃣ 更新已存在的年级老师信息(直接 UPDATE)
//foreach (var grade in existGrades)
//{
// grade.TeacherNo = teacher.TeacherNo;
// grade.TeacherName = teacher.TeacherName;
// foreach (var cls in grade.Classes)
// {
// cls.TeacherNo = teacher.TeacherNo;
// cls.TeacherName = teacher.TeacherName;
// }
//}
// 5️⃣ 构造新增年级和班级 // 5️⃣ 构造新增年级和班级
var newGrades = new List<JS_Grade>(); var newGrades = new List<JS_Grade>();
@ -1584,12 +1615,12 @@ namespace VOL.Ai.Services
// 6️⃣ 保存所有修改和新增 // 6️⃣ 保存所有修改和新增
// EF Core 显式标记更新 //// EF Core 显式标记更新
_studentRepository.UpdateRange(existGrades); //_studentRepository.UpdateRange(existGrades);
// 同时更新所有班级(必须显式) //// 同时更新所有班级(必须显式)
var allClasses = existGrades.SelectMany(g => g.Classes).ToList(); //var allClasses = existGrades.SelectMany(g => g.Classes).ToList();
_classRepository.UpdateRange(allClasses); //_classRepository.UpdateRange(allClasses);
await _studentRepository.DbContext.SaveChangesAsync(); await _studentRepository.DbContext.SaveChangesAsync();
@ -1601,7 +1632,7 @@ namespace VOL.Ai.Services
var res = new Ai_TeacherFaceInfo var res = new Ai_TeacherFaceInfo
{ {
Id = 0, Id = (int)dbTeacher.Id,
TeacherName = teacher.TeacherName, TeacherName = teacher.TeacherName,
Phone = teacher.TeacherNo, Phone = teacher.TeacherNo,
GradeAndClassList = dbGrades GradeAndClassList = dbGrades
@ -1614,6 +1645,31 @@ namespace VOL.Ai.Services
.ToList() .ToList()
}; };
//// 3️⃣ 直接从 teacher 里组装年级班级数据(不进数据库)
//var gradeDtos = teacher.GradeList ?? new List<GradeDto>();
//var classList = gradeDtos
// .Where(g => !string.IsNullOrWhiteSpace(g.GradeNo))
// .SelectMany(g => g.ClassList ?? new List<ClassDto>(),
// (g, c) => new { g, c })
// .Where(x => !string.IsNullOrWhiteSpace(x.c.ClassNo))
// .Select(x => new Classes
// {
// Id = 0, // 不落库,Id 没意义
// Name = $"{x.g.GradeName}-{x.c.ClassName}"
// })
// .ToList();
//// 4️⃣ 返回结果
//var res = new Ai_TeacherFaceInfo
//{
// Id = 0,
// TeacherName = teacher.TeacherName,
// Phone = teacher.TeacherNo,
// GradeAndClassList = classList
//};
// 8️⃣ 删除扫码记录 // 8️⃣ 删除扫码记录
_scanCodeLoginRepository.Delete(loginInfo); _scanCodeLoginRepository.Delete(loginInfo);
await _scanCodeLoginRepository.SaveChangesAsync(); await _scanCodeLoginRepository.SaveChangesAsync();
@ -1622,7 +1678,6 @@ namespace VOL.Ai.Services
} }
/// <summary> /// <summary>
/// 登录 /// 登录
/// </summary> /// </summary>