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