fixed 添加班级,导致学生重复

beetlsql3-dev
Mlxa0324 2 years ago
parent 4e66263772
commit aeac9c42bb

@ -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<Te
// 获取导入的班级IDs
final String classIds = list.stream().map(
o -> 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<Te
List<Student> studentList = studentService.getValuesByQuery(sq);
// 或者学生的Ids
// 查询班级方式加入的学生
// 查询所有方式加入的学生,程序判断交集。添加学生方式 进来的学生,不会被添加班级的方式中被删除
TeacherOpenCourseMergeStudentQuery existsStudentQuery = new TeacherOpenCourseMergeStudentQuery();
existsStudentQuery.setTeacherOpenCourseSchoolClassMergeStudentStatus(1);
existsStudentQuery.setTeacherOpenCourseId(teacherOpenCourseId);
existsStudentQuery.setTeacherOpenCourseSchoolClassMergeStudentJoinType(class_join);
List<TeacherOpenCourseMergeStudent> studentDelList =
teacherOpenCourseMergeStudentService.getValuesByQueryNotWithPermission(existsStudentQuery);
HashSet<Long> 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<Te
return JsonResult.failMessage("新增失败," + msg);
}
return JsonResult.failMessage("新增失败, 请检查传递的参数!");
return JsonResult.failMessage("新增失败, 请检查必传参数班级ID、教师开课ID");
}
}

Loading…
Cancel
Save