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/ThCourseManagerServiceImpl.java |  164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 164 insertions(+), 0 deletions(-)

diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThCourseManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThCourseManagerServiceImpl.java
new file mode 100644
index 0000000..bcccccd
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThCourseManagerServiceImpl.java
@@ -0,0 +1,164 @@
+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;
+
+@Service("ThCourseManagerService")
+public class ThCourseManagerServiceImpl implements ThCourseManagerService {
+    @Autowired
+    private ThCourseService courseService;
+
+    @Autowired
+    private ThCourseChapterService courseChapterService;
+    @Autowired
+    private ThStudentBatchService studentBatchService;
+    @Autowired
+    private ThStudentBatchService thStudentBatchService;
+    @Autowired
+    private ThStudyDetailService studyDetailService;
+
+
+    @Override
+    public List<ThCourseRespDTO> listByPage(ThCourseQuery query) {
+
+        List<ThCourseRespDTO> courseList = courseService.listByPage(query);
+        //分许获取数据
+        List<ThStatisticStudentVO> thStatisticStudentVOS = studentBatchService.statisticByCourseUuid();
+
+        //List<ThCourseRespDTO> courseRespDTOList = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(courseList)){
+            //根据courseids获取所有章节
+            List<ThCourseChapterVO> courseChapterVOS = new ArrayList<>();
+            List<String> courseUuids = courseList.stream().map(ThCourseRespDTO::getUuid).collect(Collectors.toList());
+            if(!CollectionUtils.isEmpty(courseUuids)){
+                courseChapterVOS = courseChapterService.listByCourseUuids(courseUuids);
+            }
+            for (ThCourseRespDTO courseRespDTO : courseList) {
+                //获取章
+                List<ThCourseChapterVO> finalCourseChapterVOS = courseChapterVOS;
+                List<ThCourseChapterRespDTO> chapterList = courseChapterVOS
+                        .stream()
+                        .filter(cc -> courseRespDTO.getUuid().equals(cc.getCourseUuid()) && cc.getParentUuid().equals("0"))
+                        .map(cc -> {
+                            ThCourseChapterRespDTO courseChapterRespDTO = new ThCourseChapterRespDTO();
+                            BeanUtils.copyProperties(cc, courseChapterRespDTO);
+                            courseChapterRespDTO.setChildren(getChildren(finalCourseChapterVOS,cc.getUuid()));
+                            return courseChapterRespDTO;
+                        })
+                        .collect(Collectors.toList());
+                courseRespDTO.setOutline(chapterList);
+                //学员数量
+                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);
+                }
+            }
+        }
+        return courseList;
+    }
+
+    //获取单条课程
+    @Override
+    public ThCourseRespDTO findById(Long id) {
+        ThCourse thCourse = courseService.getById(id);
+        ThCourseRespDTO thCourseRespDTO = new ThCourseRespDTO();
+        BeanUtils.copyProperties(thCourse, thCourseRespDTO);
+        List<ThCourseChapterVO> thCourseChapterVOS = courseChapterService.listByCourseUuid(thCourse.getUuid());
+        List<ThCourseChapterRespDTO> chapterRespDTOS = thCourseChapterVOS.stream()
+                .filter(c -> c.getParentUuid().equals("0"))
+                .map(c -> {
+                    ThCourseChapterRespDTO chapterRespDTO = new ThCourseChapterRespDTO();
+                    BeanUtils.copyProperties(c, chapterRespDTO);
+                    chapterRespDTO.setChildren(getChildren(thCourseChapterVOS,c.getUuid()));
+                    return chapterRespDTO;
+                }).collect(Collectors.toList());
+        thCourseRespDTO.setOutline(chapterRespDTOS);
+        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
+                .stream()
+                .filter(cc -> cc.getParentUuid().equals(parentUuid))
+                .map(cc -> {
+                    ThCourseChapterRespDTO courseChapterRespDTO = new ThCourseChapterRespDTO();
+                    BeanUtils.copyProperties(cc, courseChapterRespDTO);
+                    return courseChapterRespDTO;
+                })
+                .collect(Collectors.toList());
+        return chapterList;
+    }
+
+}

--
Gitblit v1.9.2