From 790c2ba4a0b46edf191e3bac84931f796bd42b8f Mon Sep 17 00:00:00 2001 From: zhangf <1603559716@qq.com> Date: 星期三, 24 七月 2024 09:02:49 +0800 Subject: [PATCH] 三方对接接口优化 --- exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java | 184 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 184 insertions(+), 0 deletions(-) diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java new file mode 100644 index 0000000..2c4f659 --- /dev/null +++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java @@ -0,0 +1,184 @@ +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.*; +import com.gkhy.exam.institutionalaccess.service.*; +import com.gkhy.exam.institutionalaccess.utils.ConvertTimeUtils; +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.List; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; + +@Service("ThBatchManagerService") +public class ThBatchManagerServiceImpl implements ThBatchManagerService { + @Autowired + private ThBatchService thBatchService; + @Autowired + private ThBatchCourseService thBatchCourseService; + @Autowired + 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 = thStudentBatchService.statisticByBatchUuid(); + if (!CollectionUtils.isEmpty(thBatchVOS)) { + List<String> batchUuids = thBatchVOS.stream().map(ThBatchVO::getUuid).collect(Collectors.toList()); + List<ThBatchCourse> batchCourseList = thBatchCourseService.getListByBatchUuids(batchUuids); + //章节 + List<ThBatchCourseChapter> chapterList = thBatchCourseChapterService.getListByBatchUuids(batchUuids); + + for (ThBatchVO thBatchVO : thBatchVOS) { + //课程 + 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) { + thBatchVO.setStudentCount(ssList.get(0).getCount()); + }else { + thBatchVO.setStudentCount(0); + } + thBatchVO.setCourseVOList(collect); + } + } + 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<ThStudentBatchCourseVO> thStudentCourseVOS = thStudentBatchService.getStudentBatchCourseVOByBatchUuid(batchUuid); + //根据批次获取学习记录 + List<ThStudyVO> studyVOS = thStudyDetailService.statisticDurationByIdcard(batchUuid); + List<ThBatchCourseRespDTO> batchCourseRespDTOS = new ArrayList<>(); + if (!CollectionUtils.isEmpty(batchCourseVOS)) { + for (ThBatchCourseVO VO : batchCourseVOS) { + ThBatchCourseRespDTO thBatchCourseRespDTO = new ThBatchCourseRespDTO(); + BeanUtils.copyProperties(VO, thBatchCourseRespDTO); + //视频时长 + thBatchCourseRespDTO.setDurationDesc(ConvertTimeUtils.convertTimeToString(VO.getDuration())); + //过滤学生 + List<ThStudentCourseRespDTO> studentList = thStudentCourseVOS + .stream() + .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()) && s.getCourseUuid().equals(VO.getCourseUuid())).collect(Collectors.toList()); + if(collect.size() > 0) { + thStudentCourseRespDTO.setDuration(collect.get(0).getDuration()); + }else { + thStudentCourseRespDTO.setDuration(0l); + } + return thStudentCourseRespDTO; + }) + .collect(Collectors.toList()); + thBatchCourseRespDTO.setStudentList(studentList); + batchCourseRespDTOS.add(thBatchCourseRespDTO); + } + } + + + return batchCourseRespDTOS; + } + + @Override + public List<ThStudentStudyRespDTO> getStudent(String batchUuid) { + //获取学生信息 + List<ThStudentBatchVO> thStudentBatches = thStudentBatchService.getStudentBatchVOByBatchUuid(batchUuid); + //获取学生学习记录 + List<ThStudyDetailVO> studyDetails = thStudyDetailService.listByBatchUuid(batchUuid); + 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()); + 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; + } +} -- Gitblit v1.9.2