| | |
| | | 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.*; |
| | |
| | | @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) { |
| | |
| | | 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<>(); |
| | |
| | | //过滤学生 |
| | | 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 { |
| | |
| | | @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 |
| | |
| | | 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())){ |
| | |
| | | stringBuffer.deleteCharAt(stringBuffer.length()-1); |
| | | } |
| | | thStudentStudyRespDTO.setUrl(stringBuffer.toString()); |
| | | thStudentStudyRespDTO.setFinishStatus(VO.getFinishStatus()); |
| | | thStudentStudyRespDTO.setLessonNum(lessNum); |
| | | respDTOS.add(thStudentStudyRespDTO); |
| | | } |