教育训练处考试制证系统后端
zhangf
2024-07-24 790c2ba4a0b46edf191e3bac84931f796bd42b8f
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThCourseManagerServiceImpl.java
@@ -1,19 +1,28 @@
package com.gkhy.exam.institutionalaccess.service.serviceImpl;
import com.gkhy.exam.institutionalaccess.entity.ThBatchCourse;
import com.gkhy.exam.institutionalaccess.entity.ThCourse;
import com.gkhy.exam.institutionalaccess.entity.ThCourseChapter;
import com.gkhy.exam.institutionalaccess.entity.ThStudentBatch;
import com.gkhy.exam.institutionalaccess.enums.FinishStatus;
import com.gkhy.exam.institutionalaccess.model.query.ThCourseQuery;
import com.gkhy.exam.institutionalaccess.model.resp.ThCourseChapterRespDTO;
import com.gkhy.exam.institutionalaccess.model.resp.ThCourseRespDTO;
import com.gkhy.exam.institutionalaccess.model.resp.ThStudentStudyRespDTO;
import com.gkhy.exam.institutionalaccess.model.vo.ThCourseChapterVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStatisticStudentVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudentBatchVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyDetailVO;
import com.gkhy.exam.institutionalaccess.service.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -25,32 +34,34 @@
    @Autowired
    private ThCourseChapterService courseChapterService;
    @Autowired
    private ThStudentCourseService studentCourseService;
    private ThStudentBatchService studentBatchService;
    @Autowired
    private ThStudentBatchService thStudentBatchService;
    @Autowired
    private ThStudyDetailService studyDetailService;
    @Override
    public List<ThCourseRespDTO> listByPage(ThCourseQuery query) {
        List<ThCourse> courseList = courseService.listByPage(query);
        List<ThCourseRespDTO> courseList = courseService.listByPage(query);
        //分许获取数据
        List<ThStatisticStudentVO> thStatisticStudentVOS = studentCourseService.statisticByCourseUuid();
        List<ThStatisticStudentVO> thStatisticStudentVOS = studentBatchService.statisticByCourseUuid();
        List<ThCourseRespDTO> courseRespDTOList = new ArrayList<>();
        //List<ThCourseRespDTO> courseRespDTOList = new ArrayList<>();
        if(!CollectionUtils.isEmpty(courseList)){
            //根据courseids获取所有章节
            List<ThCourseChapterVO> courseChapterVOS = new ArrayList<>();
            List<String> courseUuids = courseList.stream().map(ThCourse::getUuid).collect(Collectors.toList());
            List<String> courseUuids = courseList.stream().map(ThCourseRespDTO::getUuid).collect(Collectors.toList());
            if(!CollectionUtils.isEmpty(courseUuids)){
                courseChapterVOS = courseChapterService.listByCourseUuids(courseUuids);
            }
            for (ThCourse course : courseList) {
                ThCourseRespDTO courseRespDTO = new ThCourseRespDTO();
                BeanUtils.copyProperties(course, courseRespDTO);
            for (ThCourseRespDTO courseRespDTO : courseList) {
                //获取章
                List<ThCourseChapterVO> finalCourseChapterVOS = courseChapterVOS;
                List<ThCourseChapterRespDTO> chapterList = courseChapterVOS
                        .stream()
                        .filter(cc -> course.getUuid().equals(cc.getCourseUuid()) && cc.getParentUuid().equals("0"))
                        .filter(cc -> courseRespDTO.getUuid().equals(cc.getCourseUuid()) && cc.getParentUuid().equals("0"))
                        .map(cc -> {
                            ThCourseChapterRespDTO courseChapterRespDTO = new ThCourseChapterRespDTO();
                            BeanUtils.copyProperties(cc, courseChapterRespDTO);
@@ -60,17 +71,16 @@
                        .collect(Collectors.toList());
                courseRespDTO.setOutline(chapterList);
                //学员数量
                List<ThStatisticStudentVO> statisticList = thStatisticStudentVOS.stream().filter(s -> s.getCourseUuid().equals(course.getUuid())).collect(Collectors.toList());
                List<ThStatisticStudentVO> statisticList = thStatisticStudentVOS.stream().filter(s -> s.getCourseUuid().equals(courseRespDTO.getUuid())).collect(Collectors.toList());
                if(statisticList.size()>0){
                    ThStatisticStudentVO thStatisticStudentVO = statisticList.get(0);
                    courseRespDTO.setStudentCount(thStatisticStudentVO.getCount());
                }else {
                    courseRespDTO.setStudentCount(0);
                }
                courseRespDTOList.add(courseRespDTO);
            }
        }
        return courseRespDTOList;
        return courseList;
    }
    //获取单条课程
@@ -92,6 +102,51 @@
        return thCourseRespDTO;
    }
    @Override
    public List<ThStudentStudyRespDTO> getSutdent(String courseUuid) {
        //获取该课程下所有学生
        //获取学生信息
        List<ThStudentBatchVO> thStudentBatches = thStudentBatchService.getStudentBatchVOByCourseUuid(courseUuid);
        //获取学生学习记录
        List<ThStudyDetailVO> studyDetails = studyDetailService.listByCourseUuid(courseUuid);
        List<ThStudentStudyRespDTO> respDTOS = new ArrayList<>();
        if (!CollectionUtils.isEmpty(thStudentBatches)) {
            for (ThStudentBatchVO VO : thStudentBatches) {
                ThStudentStudyRespDTO thStudentStudyRespDTO = new ThStudentStudyRespDTO();
                thStudentStudyRespDTO.setIdcard(VO.getIdcard());
                thStudentStudyRespDTO.setName(VO.getName());
                thStudentStudyRespDTO.setBatchLessonNum(VO.getBatchLessonNum());
                thStudentStudyRespDTO.setFinishStatus(VO.getFinishStatus());
                thStudentStudyRespDTO.setBatchUuid(VO.getBatchUuid());
                thStudentStudyRespDTO.setCourseLessonNum(VO.getCourseLessonNum());
                BigDecimal lessNum = new BigDecimal(0);
                List<ThStudyDetailVO> collect = studyDetails
                        .stream()
                        .filter(sd -> sd.getIdcard().equals(VO.getIdcard()))
                        .collect(Collectors.toList());
                StringBuffer stringBuffer = new StringBuffer();
                for (ThStudyDetailVO studyDetail : collect) {
                    //是否完成
                    if(studyDetail.getFinishStatus().equals(FinishStatus.YES.getStatus())){
                        lessNum = lessNum.add(studyDetail.getLessonNum());
                    }
                    //是否有学时报告
                    if(!StringUtils.isEmpty(studyDetail.getLessonReportUrl())){
                        stringBuffer.append(studyDetail.getLessonReportUrl()).append(",");
                    }
                }
                if(!StringUtils.isEmpty(stringBuffer.toString())){
                    stringBuffer.deleteCharAt(stringBuffer.length()-1);
                }
                thStudentStudyRespDTO.setUrl(stringBuffer.toString());
                thStudentStudyRespDTO.setLessonNum(lessNum);
                respDTOS.add(thStudentStudyRespDTO);
            }
        }
        return respDTOS;
    }
    //获取章节
    private List<ThCourseChapterRespDTO> getChildren(List<ThCourseChapterVO> courseChapterVOS, String parentUuid) {
        List<ThCourseChapterRespDTO> chapterList = courseChapterVOS