Commit d011f37f by xuwenhao

修改分班规则

parent a547e428
......@@ -54,7 +54,7 @@ public class CurriculaStudentServiceImpl extends ServiceImpl<CurriculaStudentMap
//查询学生成绩
LambdaQueryWrapper<SchoolStudentScore> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SchoolStudentScore::getStudentId,curriculaStudentVo1.getStudentId())
.like(SchoolStudentScore::getExamType,"1,2,3")
.in(SchoolStudentScore::getExamType,1,2,3)
.orderByDesc(SchoolStudentScore::getExamType).last("LIMIT 1");
SchoolStudentScore schoolStudentScore = studentScoreMapper.selectOne(wrapper);
if (StringUtils.isNotNull(schoolStudentScore)){
......
......@@ -167,7 +167,7 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
break;
}
}
List<Integer> integerList = new ArrayList<>();
List<CurriculaStudentVo> studentVoList = new ArrayList<>();
//新增成绩好的学生与分班班级关系
for (int i = 0; i < divisionClasses.size(); i++) {
SchoolDivisionStudent schoolDivisionStudent = new SchoolDivisionStudent();
......@@ -175,12 +175,14 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
CurriculaStudentVo curriculaStudentVo1 = curriculaStudentVos.get(i);
schoolDivisionStudent.setStudentId(curriculaStudentVo1.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
// curriculaStudentVos.remove(i);
integerList.add(i);
studentVoList.add(curriculaStudentVo1);
}
for (CurriculaStudentVo studentVo : studentVoList) {
curriculaStudentVos.remove(studentVo);
}
integerList.forEach(integer -> {
curriculaStudentVos.remove(integer);
});
//随机新增剩余同学与分班班级关系
for (int i = 0; i < divisionClasses.size(); i++) {
//随机生成每班人数减1个随机数
Random random1 = new Random();
......@@ -196,34 +198,29 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
}
}
}
integerList.clear();
//随机新增剩余同学与分班班级关系
for (int i = 0; i < divisionClasses.size(); i++) {
for (int j = 0; j < classesVo.getPeopleNumber() - 1; j++) {
SchoolDivisionStudent schoolDivisionStudent = new SchoolDivisionStudent();
schoolDivisionStudent.setDivisionClassesId(divisionClasses.get(i).getId());
CurriculaStudentVo curriculaStudentVo1 = curriculaStudentVos.get(people.get(j));
schoolDivisionStudent.setStudentId(curriculaStudentVo1.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
// curriculaStudentVos.remove(j);
integerList.add(people.get(j));
}
}
integerList.forEach(integer -> {
curriculaStudentVos.remove(integer);
});
}else {
//分层分班
//根据成绩进行排名 从高到低
List<CurriculaStudentVo> curriculaStudentVos = curriculaStudentVoList.stream().sorted(Comparator.comparing(CurriculaStudentVo::getCourseScore).reversed()).collect(Collectors.toList());
divisionClasses.forEach(schoolDivisionClasses1 -> {
int index = 0;
for (SchoolDivisionClasses schoolDivisionClasses1 : divisionClasses) {
SchoolDivisionStudent schoolDivisionStudent = new SchoolDivisionStudent();
//分班班级id
Long id = schoolDivisionClasses1.getId();
schoolDivisionStudent.setDivisionClassesId(id);
List<Integer> integerList = new ArrayList<>();
List<CurriculaStudentVo> studentVoList = new ArrayList<>();
//判断学生人数能不能整除输入的每班人数
if (curriculaStudentVos.size() % classesVo.getPeopleNumber() == 0){
......@@ -231,46 +228,40 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
CurriculaStudentVo studentVo = curriculaStudentVos.get(i);
schoolDivisionStudent.setStudentId(studentVo.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
// curriculaStudentVos.remove(i);
integerList.add(i);
studentVoList.add(studentVo);
}
for (CurriculaStudentVo studentVo : studentVoList) {
curriculaStudentVos.remove(studentVo);
}
integerList.forEach(integer -> {
curriculaStudentVos.remove(integer);
});
integerList.clear();
studentVoList.clear();
}else {
int index = 0;
int index1 = curriculaStudentVos.size() / classesVo.getPeopleNumber();
if (index == index1){
for (int i = 0; i < curriculaStudentVos.size() % classesVo.getPeopleNumber(); i++) {
CurriculaStudentVo studentVo = curriculaStudentVos.get(i);
schoolDivisionStudent.setStudentId(studentVo.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
// curriculaStudentVos.remove(i);
integerList.add(i);
studentVoList.add(studentVo);
}
for (CurriculaStudentVo studentVo : studentVoList) {
curriculaStudentVos.remove(studentVo);
}
integerList.forEach(integer -> {
curriculaStudentVos.remove(integer);
});
integerList.clear();
studentVoList.clear();
}else {
for (int i = 0; i < index1; i++) {
for (int j = 0; j < classesVo.getPeopleNumber(); j++) {
CurriculaStudentVo studentVo = curriculaStudentVos.get(j);
schoolDivisionStudent.setStudentId(studentVo.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
// curriculaStudentVos.remove(j);
integerList.add(j);
studentVoList.add(studentVo);
}
for (CurriculaStudentVo studentVo : studentVoList) {
curriculaStudentVos.remove(studentVo);
}
studentVoList.clear();
index ++;
}
integerList.forEach(integer -> {
curriculaStudentVos.remove(integer);
});
integerList.clear();
}
}
});
}
}
return row;
......@@ -294,6 +285,12 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
public int insertDivisionClassesEc(List<SchoolDivisionClassesVo> list) {
int row = 0;
for (SchoolDivisionClassesVo classesVo : list) {
if (null == classesVo.getClassesNumber() || null == classesVo.getPeopleNumber()){
throw new ServiceException("班级数量或每班人数不能为空");
}
if (classesVo.getClassesNumber() == 0 || classesVo.getPeopleNumber() == 0){
throw new ServiceException("班级数量或每班人数不能为0");
}
if (classesVo.getCoursePeopleNumber() < classesVo.getClassesNumber()){
throw new ServiceException("输入的班级数量大于该课程总人数");
}
......@@ -382,7 +379,7 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
row += divisionClassesMapper.insert(schoolDivisionClasses);
}
//查询次分班对应的班级
//查询次分班对应的班级
LambdaQueryWrapper<SchoolDivisionClasses> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SchoolDivisionClasses::getCurriculaId,classesVo.getCurriculaId())
.eq(SchoolDivisionClasses::getCourse,classesVo.getCourse())
......@@ -415,7 +412,7 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
break;
}
}
List<CurriculaStudentVo> studentVoList = new ArrayList<>();
//新增成绩好的学生与分班班级关系
for (int i = 0; i < divisionClasses.size(); i++) {
SchoolDivisionStudent schoolDivisionStudent = new SchoolDivisionStudent();
......@@ -423,9 +420,15 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
CurriculaStudentVo curriculaStudentVo1 = curriculaStudentVos.get(i);
schoolDivisionStudent.setStudentId(curriculaStudentVo1.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
curriculaStudentVos.remove(i);
studentVoList.add(curriculaStudentVo1);
}
for (CurriculaStudentVo studentVo : studentVoList) {
curriculaStudentVos.remove(studentVo);
}
//随机新增剩余同学与分班班级关系
for (int i = 0; i < divisionClasses.size(); i++) {
//随机生成每班人数减1个随机数
Random random1 = new Random();
List<Integer> people = new ArrayList<>();
......@@ -441,58 +444,69 @@ public class DivisionClassesServiceImpl extends ServiceImpl<DivisionClassesMappe
}
}
//随机新增剩余同学与分班班级关系
for (int i = 0; i < divisionClasses.size(); i++) {
for (int j = 0; j < classesVo.getPeopleNumber() - 1; j++) {
SchoolDivisionStudent schoolDivisionStudent = new SchoolDivisionStudent();
schoolDivisionStudent.setDivisionClassesId(divisionClasses.get(i).getId());
CurriculaStudentVo curriculaStudentVo1 = curriculaStudentVos.get(people.get(j));
schoolDivisionStudent.setStudentId(curriculaStudentVo1.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
curriculaStudentVos.remove(j);
}
}
}else {
//分层分班
//根据成绩进行排名 从高到低
List<CurriculaStudentVo> curriculaStudentVos = curriculaStudentVoList.stream().sorted(Comparator.comparing(CurriculaStudentVo::getCourseScore).reversed()).collect(Collectors.toList());
divisionClasses.forEach(schoolDivisionClasses1 -> {
int index = 0;
for (SchoolDivisionClasses schoolDivisionClasses1 : divisionClasses) {
SchoolDivisionStudent schoolDivisionStudent = new SchoolDivisionStudent();
//分班班级id
Long id = schoolDivisionClasses1.getId();
schoolDivisionStudent.setDivisionClassesId(id);
List<CurriculaStudentVo> studentVoList = new ArrayList<>();
//判断学生人数能不能整除输入的每班人数
if (curriculaStudentVos.size() % classesVo.getPeopleNumber() == 0){
for (int i = 0; i < classesVo.getPeopleNumber(); i++) {
CurriculaStudentVo studentVo = curriculaStudentVos.get(i);
schoolDivisionStudent.setStudentId(studentVo.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
curriculaStudentVos.remove(i);
studentVoList.add(studentVo);
}
for (CurriculaStudentVo studentVo : studentVoList) {
curriculaStudentVos.remove(studentVo);
}
studentVoList.clear();
}else {
int index = 0;
int index1 = curriculaStudentVos.size() / classesVo.getPeopleNumber();
if (index == index1){
for (int i = 0; i < curriculaStudentVos.size() % classesVo.getPeopleNumber(); i++) {
CurriculaStudentVo studentVo = curriculaStudentVos.get(i);
schoolDivisionStudent.setStudentId(studentVo.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
curriculaStudentVos.remove(i);
studentVoList.add(studentVo);
}
for (CurriculaStudentVo studentVo : studentVoList) {
curriculaStudentVos.remove(studentVo);
}
studentVoList.clear();
}else {
for (int i = 0; i < index1; i++) {
for (int j = 0; j < classesVo.getPeopleNumber(); j++) {
CurriculaStudentVo studentVo = curriculaStudentVos.get(j);
schoolDivisionStudent.setStudentId(studentVo.getStudentId());
divisionStudentMapper.insert(schoolDivisionStudent);
curriculaStudentVos.remove(j);
studentVoList.add(studentVo);
}
for (CurriculaStudentVo studentVo : studentVoList) {
curriculaStudentVos.remove(studentVo);
}
studentVoList.clear();
index ++;
}
}
}
});
}
}
return row;
......
......@@ -54,6 +54,7 @@
<if test="courseType != null and courseType != ''">and xk.course_type = #{courseType}</if>
<if test="curriculaState != null and curriculaState != ''">and xk.curricula_state = #{curriculaState}</if>
<if test="studentName != null and studentName != ''">and xs.student_name like concat('%', #{studentName}, '%')</if>
group by xk.id,xk.student_id,xk.curricula_id,bj.class_name,xs.student_name,xs.id_card,xs.school_no,xk.course_type,xk.curricula_time,xk.curricula_state,xk.selected_course,xk.selected_major,xk.selected_subject,dc.division_classes_name
</select>
<!--春季选课情况列表-->
......@@ -84,6 +85,7 @@
<if test="classId != null">and xs.class_id = #{classId}</if>
<if test="selectedMajor != null and selectedMajor != ''">and xk.selected_major like concat('%', #{selectedMajor}, '%')</if>
<if test="studentName != null and studentName != ''">and xs.student_name like concat('%', #{studentName}, '%')</if>
group by xk.id,xk.student_id,xk.curricula_id,bj.class_name,xs.student_name,xs.id_card,xs.school_no,xk.course_type,xk.curricula_time,xk.curricula_state,xk.selected_course,xk.selected_major,xk.selected_subject,dc.division_classes_name
</select>
<!--夏季选课情况列表-->
......@@ -114,6 +116,7 @@
<if test="classId != null">and xs.class_id = #{classId}</if>
<if test="selectedCourse != null and selectedCourse != ''">and xk.selected_course = #{selectedCourse}</if>
<if test="studentName != null and studentName != ''">and xs.student_name like concat('%', #{studentName}, '%')</if>
group by xk.id,xk.student_id,xk.curricula_id,bj.class_name,xs.student_name,xs.id_card,xs.school_no,xk.course_type,xk.curricula_time,xk.curricula_state,xk.selected_course,xk.selected_major,xk.selected_subject
ORDER BY xk.selected_course ASC
</select>
......@@ -145,6 +148,7 @@
<if test="classId != null">and xs.class_id = #{classId}</if>
<if test="selectedCourse != null and selectedCourse != ''">and xk.selected_course = #{selectedCourse}</if>
<if test="studentName != null and studentName != ''">and xs.student_name like concat('%', #{studentName}, '%')</if>
GROUP BY xk.id,xk.student_id,xk.curricula_id,bj.class_name,xs.student_name,xs.id_card,xs.school_no,xk.course_type,xk.curricula_time,xk.curricula_state,xk.selected_course,xk.selected_major,xk.selected_subject
ORDER BY xk.selected_course ASC
</select>
......@@ -176,6 +180,7 @@
<if test="classId != null">and xs.class_id = #{classId}</if>
<if test="selectedSubject != null and selectedSubject != ''">and xk.selected_subject = #{selectedSubject}</if>
<if test="studentName != null and studentName != ''">and xs.student_name like concat('%', #{studentName}, '%')</if>
GROUP BY xk.id,xk.student_id,xk.curricula_id,bj.class_name,xs.student_name,xs.id_card,xs.school_no,xk.course_type,xk.curricula_time,xk.curricula_state,xk.selected_course,xk.selected_major,xk.selected_subject,dc.division_classes_name
ORDER BY xk.selected_subject ASC
</select>
......@@ -209,6 +214,7 @@
<if test="classId != null and classId != ''">and xs.class_id = #{classId}</if>
<if test="curriculaState != null and curriculaState != ''">and xk.curricula_state = #{curriculaState}</if>
<if test="studentName != null and studentName != ''">and xs.student_name like concat('%', #{studentName}, '%')</if>
GROUP BY xk.id,xk.student_id,xk.curricula_id,xs.class_id,bj.class_name,xs.student_name,xs.id_card,xs.school_no,xk.course_type,xk.curricula_time,xk.curricula_state,xk.selected_course,xk.selected_major,xk.selected_subject
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment