fix: 【FCJDFDXTXS-84】修改查询语句,查询授课教师

This commit is contained in:
liu.zixi
2025-12-12 10:51:51 +08:00
parent c8f74526ea
commit 4a92af0432

View File

@@ -262,9 +262,14 @@ public class CourseDao extends BaseDao<Course> {
builder.append(System.lineSeparator());
builder.append("LEFT JOIN ").append(userCenterSchema)
.append(".organization org ON c.org_id = org.organization_id AND org.deleted = 0");
// 教师联查
builder.append(System.lineSeparator());
builder.append("LEFT JOIN boe_course_teacher ct ON c.id = ct.course_id");
// 教师联查 - 移除原来的条件性JOIN改用EXISTS子查询方式避免数据重复
// 注意由于上方已通过GROUP_CONCAT聚合教师姓名此处不再需要JOIN教师表
/*
if (StringUtils.isNotBlank(queryDTO.getTeacherId())) {
builder.append(System.lineSeparator());
builder.append("LEFT JOIN boe_course_teacher ct ON c.id = ct.course_id");
}
*/
// 排序字段是否为sysType
if (StringUtils.equals(queryDTO.getOrderField(), "sysType")) {
builder.append(System.lineSeparator()).append("LEFT JOIN boe_sys_type st1 ON c.sys_type1 = st1.id");
@@ -319,14 +324,15 @@ public class CourseDao extends BaseDao<Course> {
builder.append(System.lineSeparator());
builder.append("AND (:learningTimeStart IS NULL OR :learningTimeEnd IS NULL OR EXISTS (SELECT 1 FROM boe_study_course sc WHERE sc.course_id = c.id AND sc.finish_time IS NOT NULL AND sc.add_time >= :learningTimeStart AND sc.finish_time <= :learningTimeEnd))");
}
// 授课教师
// 授课教师筛选 - 使用EXISTS子查询替代JOIN以避免数据重复
// 注意由于上方已通过GROUP_CONCAT聚合教师姓名此处仅用于教师筛选条件
if (StringUtils.isNotBlank(queryDTO.getTeacherId())) {
builder.append(System.lineSeparator());
// 判断teacherId是一个还是多个
if (queryDTO.getTeacherId().contains(",")) {
builder.append("AND ct.teacher_id IN (:teacherIdList)");
builder.append("AND EXISTS (SELECT 1 FROM boe_course_teacher ct WHERE ct.course_id = c.id AND ct.teacher_id IN (:teacherIdList))");
} else {
builder.append("AND ct.teacher_id = :teacherId");
builder.append("AND EXISTS (SELECT 1 FROM boe_course_teacher ct WHERE ct.course_id = c.id AND ct.teacher_id = :teacherId)");
}
}
// 展开后条件