| | |
| | | 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; |
| | | |
| | |
| | | @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); |
| | |
| | | .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; |
| | | } |
| | | |
| | | //获取单条课程 |
| | |
| | | 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 |