|
@@ -35,6 +35,7 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.poi.ss.usermodel.*;
|
|
|
import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
@@ -141,7 +142,7 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
|
|
|
throw new MyException("添加课程的班级无效,请刷新重试");
|
|
|
}
|
|
|
|
|
|
- // 根据班级id查出班级已经存在的课程和教程
|
|
|
+ // 根据班级id查出班级已经存在的课程和教材
|
|
|
LambdaQueryWrapper<BaseClassCourse> baseClassCourseLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
baseClassCourseLambdaQueryWrapper
|
|
|
.in(BaseClassCourse::getClassId, dto.getBaseClassAdminCourseIds())
|
|
@@ -177,20 +178,23 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
|
|
|
|
|
|
// 处理每一个班需要新增的课程
|
|
|
List<BaseClassCourse> baseClassCourseList = new ArrayList<>();
|
|
|
+ BaseClassCourse newBaseClassCourse;
|
|
|
for (Long classId : dto.getBaseClassAdminCourseIds()) {
|
|
|
// 判断当前的班级是否已经有了该课程和教材
|
|
|
- List<String> tourseIdTextbookIdList = null;
|
|
|
+ List<String> courseIdTextbookIdList = null;
|
|
|
if(ObjectUtils.isNotEmpty(courseIdTextbookIdMap)){
|
|
|
- tourseIdTextbookIdList = courseIdTextbookIdMap.get(classId);
|
|
|
+ courseIdTextbookIdList = courseIdTextbookIdMap.get(classId);
|
|
|
}
|
|
|
for (Map.Entry<String, BaseClassCourse> entry : newClassCourseTextbookMap.entrySet()) {
|
|
|
String key = entry.getKey();
|
|
|
BaseClassCourse value = entry.getValue();
|
|
|
- if(ObjectUtils.isNotEmpty(tourseIdTextbookIdList) && !tourseIdTextbookIdList.isEmpty() && tourseIdTextbookIdList.contains(key)){
|
|
|
+ newBaseClassCourse = new BaseClassCourse();
|
|
|
+ BeanUtils.copyProperties(value, newBaseClassCourse);
|
|
|
+ if(ObjectUtils.isNotEmpty(courseIdTextbookIdList) && !courseIdTextbookIdList.isEmpty() && courseIdTextbookIdList.contains(key)){
|
|
|
continue;
|
|
|
}
|
|
|
- value.setClassId(classId);
|
|
|
- baseClassCourseList.add(value);
|
|
|
+ newBaseClassCourse.setClassId(classId);
|
|
|
+ baseClassCourseList.add(newBaseClassCourse);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -258,24 +262,23 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
|
|
|
}
|
|
|
|
|
|
// 已经维护了课程教材信息的班级和所在学期
|
|
|
+ // 一个班级一个学期应该只需要设置一次
|
|
|
List<BaseClassAdminCourse> baseClassAdminCourses = baseClassAdminCourseMapper.selectList(
|
|
|
Wrappers.lambdaQuery(BaseClassAdminCourse.class)
|
|
|
- .eq(BaseClassAdminCourse::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .eq(BaseClassAdminCourse::getBaseSemesterId, dto.getNewBaseSemesterId())
|
|
|
);
|
|
|
- Map<String, Long> classSemester = new HashMap<>();
|
|
|
- for (BaseClassAdminCourse baseClassAdminCourse : baseClassAdminCourses) {
|
|
|
- classSemester.put(baseClassAdminCourse.getClassId() + "_" + baseClassAdminCourse.getBaseSemesterId(), baseClassAdminCourse.getId());
|
|
|
- }
|
|
|
+
|
|
|
+ Map<Long, BaseClassAdminCourse> oldClassIdMap = baseClassAdminCourses.stream()
|
|
|
+ .collect(Collectors.toMap(BaseClassAdminCourse::getClassId, b -> b, (b1, b2) -> b1));
|
|
|
|
|
|
// 判断复用的学期复用的班级是否已经进入了班级课程列表
|
|
|
// 判断本学期本班级是否已经加入课程管理的班级中
|
|
|
List<Long> classAdminCourseIds = new ArrayList<>();
|
|
|
+ Long classAdminCourseId;
|
|
|
+ BaseClassAdminCourse baseClassAdminCourse;
|
|
|
for (Long classId : dto.getNewClassIds()){
|
|
|
- String newClassSemester = classId + "_" + dto.getNewBaseSemesterId();
|
|
|
- Long classAdminCourseId = null;
|
|
|
- BaseClassAdminCourse baseClassAdminCourse = null;
|
|
|
- if(ObjectUtils.isNotEmpty(classSemester) && ObjectUtils.isNotEmpty(classSemester.get(newClassSemester))){
|
|
|
- classAdminCourseId = classSemester.get(newClassSemester);
|
|
|
+ if(ObjectUtils.isNotEmpty(oldClassIdMap) && oldClassIdMap.containsKey(classId)){
|
|
|
+ classAdminCourseId = oldClassIdMap.get(classId).getId();
|
|
|
} else {
|
|
|
baseClassAdminCourse = new BaseClassAdminCourse();
|
|
|
baseClassAdminCourse.setClassId(classId);
|
|
@@ -283,12 +286,12 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
|
|
|
baseClassAdminCourseMapper.insert(baseClassAdminCourse);
|
|
|
|
|
|
classAdminCourseId = baseClassAdminCourse.getId();
|
|
|
- classSemester.put(newClassSemester, classAdminCourseId);
|
|
|
+ oldClassIdMap.put(classId, baseClassAdminCourse);
|
|
|
}
|
|
|
classAdminCourseIds.add(classAdminCourseId);
|
|
|
}
|
|
|
|
|
|
- //删除班级的所有课程教材
|
|
|
+ // 删除班级的所有课程教材
|
|
|
LambdaQueryWrapper<BaseClassCourse> removeLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
removeLambdaQueryWrapper
|
|
|
.in(BaseClassCourse::getClassId, classAdminCourseIds)
|
|
@@ -296,12 +299,12 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
|
|
|
this.remove(removeLambdaQueryWrapper);
|
|
|
|
|
|
List<BaseClassCourse> newBaseClassCourseList = new ArrayList<>();
|
|
|
- for (Long classAdminCourseId : classAdminCourseIds){
|
|
|
+ for (Long id : classAdminCourseIds){
|
|
|
for (BaseClassCourse baseClassCourse : baseClassCourseList){
|
|
|
Long courseId = baseClassCourse.getCourseId();
|
|
|
Long textbookId = baseClassCourse.getTextbookId();
|
|
|
newBaseClassCourseList.add(new BaseClassCourse(){{
|
|
|
- setClassId(classAdminCourseId);
|
|
|
+ setClassId(id);
|
|
|
setCourseId(courseId);
|
|
|
setTextbookId(textbookId);
|
|
|
setCreateDate(new Date());
|
|
@@ -322,8 +325,22 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
|
|
|
if(ObjectUtils.isEmpty(dto.getClassIds()) || dto.getClassIds().isEmpty()){
|
|
|
throw new MyException("请选择需要设置课程的班级");
|
|
|
}
|
|
|
+
|
|
|
+ // 一个班级一个学期应该只需要设置一次
|
|
|
+ List<BaseClassAdminCourse> baseClassAdminCourses = baseClassAdminCourseMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(BaseClassAdminCourse.class)
|
|
|
+ .eq(BaseClassAdminCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+ );
|
|
|
+
|
|
|
+ List<Long> oldClassId = baseClassAdminCourses.stream()
|
|
|
+ .map(BaseClassAdminCourse::getClassId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
BaseClassAdminCourse baseClassAdminCourse;
|
|
|
for(Long classId : dto.getClassIds()){
|
|
|
+ if(ObjectUtils.isNotEmpty(oldClassId) && oldClassId.contains(classId)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
baseClassAdminCourse = new BaseClassAdminCourse();
|
|
|
baseClassAdminCourse.setBaseSemesterId(dto.getBaseSemesterId());
|
|
|
baseClassAdminCourse.setClassId(classId);
|