diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeSchoolClassService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeSchoolClassService.java index a33d24a3..ebaed500 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeSchoolClassService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeSchoolClassService.java @@ -28,14 +28,12 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.validation.constraints.NotNull; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; import static com.ibeetl.jlw.enums.OpenCourseMergeJoinTypeEnum.class_join; +import static com.ibeetl.jlw.enums.OpenCourseMergeJoinTypeEnum.student_join; import static com.ibeetl.jlw.web.query.TeacherOpenCourseMergeSchoolClassQuery.jsonToPO; import static java.util.stream.Collectors.joining; @@ -235,9 +233,6 @@ public class TeacherOpenCourseMergeSchoolClassService extends CoreBaseService o.getSchoolClassId().toString()).distinct().collect(joining(",")); - TeacherOpenCourseMergeStudentQuery studentQuery = new TeacherOpenCourseMergeStudentQuery(); - studentQuery.setTeacherOpenCourseSchoolClassMergeStudentAddTime(now); - studentQuery.setTeacherOpenCourseId(teacherOpenCourseId); // 查询开课和班级已经关联的数据 final TeacherOpenCourseMergeSchoolClassQuery paras = new TeacherOpenCourseMergeSchoolClassQuery(); @@ -264,14 +259,29 @@ public class TeacherOpenCourseMergeSchoolClassService extends CoreBaseService studentList = studentService.getValuesByQuery(sq); // 或者学生的Ids - // 查询班级方式加入的学生 + // 查询所有方式加入的学生,程序判断交集。添加学生方式 进来的学生,不会被添加班级的方式中被删除 TeacherOpenCourseMergeStudentQuery existsStudentQuery = new TeacherOpenCourseMergeStudentQuery(); existsStudentQuery.setTeacherOpenCourseSchoolClassMergeStudentStatus(1); existsStudentQuery.setTeacherOpenCourseId(teacherOpenCourseId); - existsStudentQuery.setTeacherOpenCourseSchoolClassMergeStudentJoinType(class_join); List studentDelList = teacherOpenCourseMergeStudentService.getValuesByQueryNotWithPermission(existsStudentQuery); + HashSet existsSet = new HashSet<>(); + + // 移除添加学生方式进来的学生,优先级比较高吧 + studentDelList.removeIf(teacherOpenCourseMergeStudent -> { + final Long studentId = teacherOpenCourseMergeStudent.getStudentId(); + + if (existsSet.contains(studentId)) { + return true; + } + if (student_join.equals(teacherOpenCourseMergeStudent.getTeacherOpenCourseSchoolClassMergeStudentJoinType()) + && studentId != null) { + existsSet.add(studentId); + } + return false; + }); + // 获取关联表要删除的主键Ids String idsDelAdString = CollectionUtil.emptyIfNull(studentDelList).stream().map( o -> o.getTeacherOpenCourseSchoolClassMergeStudentId().toString()).collect(joining(",")); @@ -301,6 +311,6 @@ public class TeacherOpenCourseMergeSchoolClassService extends CoreBaseService