Selaa lähdekoodia

班级课程单个班级更新课程教材

大数据与最优化研究所 11 kuukautta sitten
vanhempi
commit
e5340140de

+ 7 - 0
src/main/java/com/xjrsoft/module/base/controller/BaseClassCourseController.java

@@ -154,6 +154,13 @@ public class BaseClassCourseController {
         return RT.ok(data);
     }
 
+    @PostMapping("/oneUpdateClassCoursesAndTextbooks")
+    @ApiOperation(value = "单个班级更新课程教材")
+    @SaCheckPermission("baseclasscourse:detail")
+    public RT<Boolean> oneUpdateClassCoursesAndTextbooks(@Valid @RequestBody ClassCourseTextbook dto) {
+        return RT.ok(baseClassCourseService.oneUpdateClassCoursesAndTextbooks(dto));
+    }
+
     @PostMapping("/updateAddCoursesAndTextbooks")
     @ApiOperation(value = "更新增加课程教材")
     @SaCheckPermission("baseclasscourse:detail")

+ 1 - 0
src/main/java/com/xjrsoft/module/base/service/IBaseClassCourseService.java

@@ -31,6 +31,7 @@ public interface IBaseClassCourseService extends MPJBaseService<BaseClassCourse>
 
     List<CourseBookInfo> getSelectedCourseBook(Long[] subjectGroupId, Long semester);
 
+    Boolean oneUpdateClassCoursesAndTextbooks(ClassCourseTextbook dto);
 
     Boolean updateAddCourseBook(ClassCourseTextbook dto);
 

+ 94 - 0
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassCourseServiceImpl.java

@@ -81,6 +81,100 @@ public class BaseClassCourseServiceImpl extends MPJBaseServiceImpl<BaseClassCour
         return baseClassCourseMapper.getSelectedCourseBook(subjectGroupId, semester);
     }
 
+    @Override
+    public Boolean oneUpdateClassCoursesAndTextbooks(ClassCourseTextbook dto) {
+        if (dto.getClassIds() == null || dto.getClassIds().length == 0 || dto.getBaseSemesterId() == null || dto.getBaseSemesterId() == 0) {
+            return false;
+        }
+
+        boolean isSuccess = false;
+
+        // 根据班级id查出班级已经存在的课程和教程
+        List<Long> classIdList = Arrays.asList(dto.getClassIds());
+        LambdaQueryWrapper<BaseClassCourse> baseClassCourseLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        baseClassCourseLambdaQueryWrapper
+                .in(BaseClassCourse::getClassId, classIdList)
+                .eq(BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
+                .eq(BaseClassCourse::getDeleteMark, DeleteMark.NODELETE.getCode())
+        ;
+        List<BaseClassCourse> oldList = this.list(baseClassCourseLambdaQueryWrapper);
+
+        // 使用Stream API和Lambda表达式生成所需的字符串列表
+        Map<Long, List<String>> tourseId_textbookIdMap = oldList.stream()
+                .collect(Collectors.groupingBy(
+                        BaseClassCourse::getClassId,
+                        Collectors.mapping(
+                                course -> course.getCourseId() + "_" + course.getTextbookId(),
+                                Collectors.toList()
+                        )
+                ));
+
+        //删除班级的这学期的所有课程教材
+        LambdaUpdateWrapper<BaseClassCourse> baseClassCourseLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        baseClassCourseLambdaUpdateWrapper
+                .in(BaseClassCourse::getClassId, classIdList)
+                .eq(BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
+        ;
+        isSuccess = this.remove(baseClassCourseLambdaUpdateWrapper);
+
+//        // 获取所有班级的所有学生
+//        LambdaQueryWrapper<BaseStudentSchoolRoll> baseStudentSchoolRollLambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        baseStudentSchoolRollLambdaQueryWrapper
+//                .in(BaseStudentSchoolRoll::getClassId, classIdList)
+//                .eq(BaseStudentSchoolRoll::getArchivesStatus, ArchivesStatusEnum.FB2901.getCode())
+//                ;
+//        List<BaseStudentSchoolRoll> baseStudentSchoolRolls = baseStudentSchoolRollMapper.selectList(baseStudentSchoolRollLambdaQueryWrapper);
+//
+//        Map<Long, List<Long>> userIdsMap = baseStudentSchoolRolls.stream()
+//                .filter(student -> student.getClassId() != null && student.getUserId() != null)
+//                .collect(Collectors.groupingBy(
+//                                BaseStudentSchoolRoll::getClassId, // 根据classId分组
+//                                Collectors.mapping(BaseStudentSchoolRoll::getUserId, // 提取userId
+//                                        Collectors.toList()) // 收集到List<Long>
+//                        )
+//                );
+
+        List<BaseClassCourse> baseClassCourseList = new ArrayList<>();
+//        List<TextbookStudentClaim> textbookStudentClaimList = new ArrayList<>();
+        for (Long classId : dto.getClassIds()) {
+            // 判断当前的班级是否已经有了该课程和教材
+            List<String> tourseId_textbookIdList = tourseId_textbookIdMap.get(classId);
+            for (String id : dto.getIds()) {
+                if(tourseId_textbookIdList.contains(id)){
+                    continue;
+                }
+                String[] idArr = id.split("_");
+                if (idArr[0].equals("") || idArr[1].equals("")) {
+                    continue;
+                }
+                Long courseId = Long.parseLong(idArr[0]);
+                Long textbookId = Long.parseLong(idArr[1]);
+                baseClassCourseList.add(new BaseClassCourse() {{
+                    setBaseSemesterId(dto.getBaseSemesterId());
+                    setClassId(classId);
+                    setCourseId(courseId);
+                    setTextbookId(textbookId);
+                }});
+
+//                // 添加学生领取教材数据
+//                List<Long> userIds = userIdsMap.get(classId);
+//                for (Long userId : userIds) {
+//                    textbookStudentClaimList.add(new TextbookStudentClaim() {{
+//                        setStudentUserId(userId);
+//                        setBaseSemesterId(dto.getBaseSemesterId());
+//                        setClassId(classId);
+//                        setTextbookId(textbookId);
+//                    }});
+//                }
+            }
+        }
+
+//        for (TextbookStudentClaim textbookStudentClaim : textbookStudentClaimList) {
+//            textbookStudentClaimMapper.insert(textbookStudentClaim);
+//        }
+        return this.saveBatch(baseClassCourseList);
+    }
+
     @Override
     @Transactional
     public Boolean updateAddCourseBook(ClassCourseTextbook dto){