zhangf
2024-07-24 790c2ba4a0b46edf191e3bac84931f796bd42b8f
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java
@@ -1,10 +1,14 @@
package com.gkhy.exam.institutionalaccess.service.serviceImpl;
import com.gkhy.exam.institutionalaccess.entity.ThBatchCourse;
import com.gkhy.exam.institutionalaccess.entity.ThBatchCourseChapter;
import com.gkhy.exam.institutionalaccess.entity.ThStudentBatch;
import com.gkhy.exam.institutionalaccess.entity.ThStudyDetail;
import com.gkhy.exam.institutionalaccess.enums.FinishStatus;
import com.gkhy.exam.institutionalaccess.model.query.ThBatchQuery;
import com.gkhy.exam.institutionalaccess.model.resp.ThBatchCourseRespDTO;
import com.gkhy.exam.institutionalaccess.model.resp.ThCourseChapterRespDTO;
import com.gkhy.exam.institutionalaccess.model.resp.ThStudentCourseRespDTO;
import com.gkhy.exam.institutionalaccess.model.resp.ThStudentStudyRespDTO;
import com.gkhy.exam.institutionalaccess.model.vo.*;
@@ -29,21 +33,44 @@
    @Autowired
    private ThBatchCourseService thBatchCourseService;
    @Autowired
    private ThStudentCourseService thStudentCourseService;
    private ThStudentBatchService thStudentBatchService;
    @Autowired
    private ThStudyDetailService thStudyDetailService;
    @Autowired
    private ThBatchCourseChapterService thBatchCourseChapterService;
    @Override
    public List<ThBatchVO> listByPage(ThBatchQuery query) {
        List<ThBatchVO> thBatchVOS = thBatchService.listByPage(query);
        //统计学员
        List<ThStatisticStudentVO> thStatisticStudentVOS = thStudentCourseService.statisticByBatchUuid();
        List<ThStatisticStudentVO> thStatisticStudentVOS = thStudentBatchService.statisticByBatchUuid();
        if (!CollectionUtils.isEmpty(thBatchVOS)) {
            List<String> batchUuids = thBatchVOS.stream().map(ThBatchVO::getUuid).collect(Collectors.toList());
            List<ThBatchCourseVO> batchCourseVOS = thBatchCourseService.getListByBatchUuids(batchUuids);
            List<ThBatchCourse> batchCourseList = thBatchCourseService.getListByBatchUuids(batchUuids);
            //章节
            List<ThBatchCourseChapter> chapterList = thBatchCourseChapterService.getListByBatchUuids(batchUuids);
            for (ThBatchVO thBatchVO : thBatchVOS) {
                //课程
                List<ThBatchCourseVO> collect = batchCourseVOS.stream().filter(bc -> bc.getBatchUuid().equals(thBatchVO.getUuid())).collect(Collectors.toList());
                List<ThBatchCourseVO> collect = batchCourseList.stream()
                        .filter(bc -> bc.getBatchUuid().equals(thBatchVO.getUuid()))
                        .map(bc -> {
                            ThBatchCourseVO thBatchCourseVO = new ThBatchCourseVO();
                            BeanUtils.copyProperties(bc, thBatchCourseVO);
                            List<ThBatchCourseChapterVO> chapterVOs = chapterList.stream().
                                    filter(cc -> cc.getCourseUuid().equals(bc.getCourseUuid()) && cc.getParentUuid().equals("0"))
                                    .map(cc -> {
                                        ThBatchCourseChapterVO thBatchCourseChapterVO = new ThBatchCourseChapterVO();
                                        BeanUtils.copyProperties(cc, thBatchCourseChapterVO);
                                        thBatchCourseChapterVO.setChildren(getChildren(chapterList,cc.getChapterUuid()));
                                        return thBatchCourseChapterVO;
                                    })
                                    .collect(Collectors.toList());
                            thBatchCourseVO.setChapterList(chapterVOs);
                            return thBatchCourseVO;
                        })
                        .collect(Collectors.toList());
                //学员
                List<ThStatisticStudentVO> ssList = thStatisticStudentVOS.stream().filter(ss -> ss.getBatchUuid().equals(thBatchVO.getUuid())).collect(Collectors.toList());
                if(ssList.size() > 0) {
@@ -57,12 +84,27 @@
        return thBatchVOS;
    }
    //获取章节
    private List<ThBatchCourseChapterVO> getChildren(List<ThBatchCourseChapter> chapterList, String parentUuid) {
        List<ThBatchCourseChapterVO> sectionList = chapterList
                .stream()
                .filter(cc -> cc.getParentUuid().equals(parentUuid))
                .map(cc -> {
                    ThBatchCourseChapterVO thBatchCourseChapterVO = new ThBatchCourseChapterVO();
                    BeanUtils.copyProperties(cc, thBatchCourseChapterVO);
                    return thBatchCourseChapterVO;
                })
                .collect(Collectors.toList());
        return sectionList;
    }
    @Override
    public List<ThBatchCourseRespDTO> period(String batchUuid) {
        //获取批次关联课程
        //获取批次关联课程(课程的视频总时长)
        List<ThBatchCourseVO> batchCourseVOS = thBatchCourseService.getListByBatchUuid(batchUuid);
        //获取关联学生
        List<ThStudentCourseVO> thStudentCourseVOS = thStudentCourseService.getListByBatchUuid(batchUuid);
        //获取关联学生(学时)
        List<ThStudentBatchCourseVO> thStudentCourseVOS = thStudentBatchService.getStudentBatchCourseVOByBatchUuid(batchUuid);
        //根据批次获取学习记录
        List<ThStudyVO> studyVOS = thStudyDetailService.statisticDurationByIdcard(batchUuid);
        List<ThBatchCourseRespDTO> batchCourseRespDTOS = new ArrayList<>();
@@ -75,11 +117,11 @@
                //过滤学生
                List<ThStudentCourseRespDTO> studentList = thStudentCourseVOS
                        .stream()
                        .filter(sc -> sc.getBatchUuid().equals(VO.getBatchUuid()))
                        .filter(sc -> sc.getCourseUuid().equals(VO.getCourseUuid()))
                        .map(sc -> {
                            ThStudentCourseRespDTO thStudentCourseRespDTO = new ThStudentCourseRespDTO();
                            BeanUtils.copyProperties(sc, thStudentCourseRespDTO);
                            List<ThStudyVO> collect = studyVOS.stream().filter(s -> s.getIdcard().equals(sc.getIdcard())).collect(Collectors.toList());
                            List<ThStudyVO> collect = studyVOS.stream().filter(s -> s.getIdcard().equals(sc.getIdcard()) && s.getCourseUuid().equals(VO.getCourseUuid())).collect(Collectors.toList());
                           if(collect.size() > 0) {
                               thStudentCourseRespDTO.setDuration(collect.get(0).getDuration());
                           }else {
@@ -100,17 +142,18 @@
    @Override
    public List<ThStudentStudyRespDTO> getStudent(String batchUuid) {
        //获取学生信息
        List<ThStudentCourseVO> thStudentCourseVOS = thStudentCourseService.getListByBatchUuid(batchUuid);
        List<ThStudentBatchVO> thStudentBatches = thStudentBatchService.getStudentBatchVOByBatchUuid(batchUuid);
        //获取学生学习记录
        List<ThStudyDetailVO> studyDetails = thStudyDetailService.listByBatchUuid(batchUuid);
        List<ThStudentStudyRespDTO> respDTOS = new ArrayList<>();
        if (!CollectionUtils.isEmpty(thStudentCourseVOS)) {
            for (ThStudentCourseVO VO : thStudentCourseVOS) {
        if (!CollectionUtils.isEmpty(thStudentBatches)) {
            for (ThStudentBatchVO VO : thStudentBatches) {
                ThStudentStudyRespDTO thStudentStudyRespDTO = new ThStudentStudyRespDTO();
                thStudentStudyRespDTO.setIdcard(VO.getIdcard());
                thStudentStudyRespDTO.setName(VO.getName());
                thStudentStudyRespDTO.setCourseName(VO.getCourseName());
                thStudentStudyRespDTO.setLessonTocal(VO.getLessTotal());
                thStudentStudyRespDTO.setBatchLessonNum(VO.getBatchLessonNum());
                thStudentStudyRespDTO.setFinishStatus(VO.getFinishStatus());
                thStudentStudyRespDTO.setBatchUuid(VO.getBatchUuid());
                BigDecimal lessNum = new BigDecimal(0);
                List<ThStudyDetailVO> collect = studyDetails
@@ -121,7 +164,7 @@
                for (ThStudyDetailVO studyDetail : collect) {
                    //是否完成
                    if(studyDetail.getFinishStatus().equals(FinishStatus.YES.getStatus())){
                        lessNum.add(studyDetail.getLessonNum());
                        lessNum = lessNum.add(studyDetail.getLessonNum());
                    }
                    //是否有学时报告
                    if(!StringUtils.isEmpty(studyDetail.getLessonReportUrl())){
@@ -132,7 +175,6 @@
                    stringBuffer.deleteCharAt(stringBuffer.length()-1);
                }
                thStudentStudyRespDTO.setUrl(stringBuffer.toString());
                thStudentStudyRespDTO.setFinishStatus(VO.getFinishStatus());
                thStudentStudyRespDTO.setLessonNum(lessNum);
                respDTOS.add(thStudentStudyRespDTO);
            }