From 85ae68bdbd7e373fb6f3e6f5eb04c57e3d86efd0 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期三, 16 十月 2024 10:28:33 +0800
Subject: [PATCH] 补全缺失字段
---
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java | 136 +++++++++++++++++++++++++++++++++++++++------
1 files changed, 118 insertions(+), 18 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
index 6cc4a93..be08ff3 100644
--- 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
@@ -1,7 +1,7 @@
package com.gkhy.exam.institutionalaccess.service.serviceImpl;
-import com.gkhy.exam.institutionalaccess.entity.ThStudyDetail;
+import com.gkhy.exam.institutionalaccess.entity.*;
import com.gkhy.exam.institutionalaccess.enums.FinishStatus;
import com.gkhy.exam.institutionalaccess.model.query.ThBatchQuery;
import com.gkhy.exam.institutionalaccess.model.resp.ThBatchCourseRespDTO;
@@ -10,6 +10,8 @@
import com.gkhy.exam.institutionalaccess.model.vo.*;
import com.gkhy.exam.institutionalaccess.service.*;
import com.gkhy.exam.institutionalaccess.utils.ConvertTimeUtils;
+import com.gkhy.exam.institutionalaccess.utils.SendMessageUtil;
+import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -18,8 +20,8 @@
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
@Service("ThBatchManagerService")
@@ -29,21 +31,52 @@
@Autowired
private ThBatchCourseService thBatchCourseService;
@Autowired
- private ThStudentCourseService thStudentCourseService;
+ private ThStudentBatchService thStudentBatchService;
@Autowired
private ThStudyDetailService thStudyDetailService;
+ @Autowired
+ private ThBatchCourseChapterService thBatchCourseChapterService;
+ @Autowired
+ private ThSubjectTypeService subjectTypeService;
+ @Autowired
+ private ThStudentManagerService thStudentManagerService;
+
+ @Autowired
+ private SendMessageUtil sendMessageUtil;
@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) {
+ thBatchVO.setSubjectName(getObtainSuperiors(thBatchVO.getSubjectCode()));
//课程
- 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) {
@@ -57,12 +90,27 @@
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<>();
@@ -75,11 +123,11 @@
//过滤学生
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 {
@@ -100,17 +148,18 @@
@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
@@ -121,7 +170,7 @@
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())){
@@ -132,11 +181,62 @@
stringBuffer.deleteCharAt(stringBuffer.length()-1);
}
thStudentStudyRespDTO.setUrl(stringBuffer.toString());
- thStudentStudyRespDTO.setFinishStatus(VO.getFinishStatus());
thStudentStudyRespDTO.setLessonNum(lessNum);
respDTOS.add(thStudentStudyRespDTO);
}
}
return respDTOS;
}
+
+ //短信提醒
+ @Override
+ public AjaxResult sendMes(String idcard) {
+ ThStudent thStudent = thStudentManagerService.findByIdCard(idcard);
+ if (StringUtils.isEmpty(thStudent.getPhone()) || thStudent.getPhone().equals("-")){
+ return AjaxResult.error("该学员未绑定手机号");
+ }
+ //调用短信接口
+ String[] phone={thStudent.getPhone()};
+ HashMap<String, String> map = new HashMap<>();
+ map.put("name",thStudent.getName());
+ map.put("platform",thStudent.getInstitutionName());
+ sendMessageUtil.sendMessageCheck(phone,map);
+ return AjaxResult.success();
+ }
+
+ public String getObtainSuperiors(String code){
+ List<ThSubjectType> subjectTypeList = subjectTypeService.getSubjectTypeList();
+ if(StringUtils.isEmpty(code)){
+ return "未知";
+ }
+ StringBuffer stringBuffer = new StringBuffer();
+ String subjectName = "未知";
+ ThSubjectType currentSubject = getThSubejctInfoByCode(subjectTypeList,code);
+ if(currentSubject != null){
+ subjectName = currentSubject.getName();
+ }
+ //一级
+ if(code.length() == 1){
+ stringBuffer.append(subjectName);
+ }
+ //二级
+ if(code.length() == 3){
+ ThSubjectType parentSubject = getThSubejctInfoByCode(subjectTypeList,currentSubject.getParentCode());
+ stringBuffer.append(parentSubject.getName()).append("/").append(subjectName);
+ }
+ //三级
+ if(code.length() == 5){
+ ThSubjectType parentSubject = getThSubejctInfoByCode(subjectTypeList,currentSubject.getParentCode());
+ ThSubjectType grandpaSubject = getThSubejctInfoByCode(subjectTypeList,parentSubject.getParentCode());
+ stringBuffer.append(grandpaSubject.getName()).append("/").append(parentSubject.getName()).append("/").append(subjectName);
+ }
+ return stringBuffer.toString();
+ }
+ public ThSubjectType getThSubejctInfoByCode(List<ThSubjectType> list, String code){
+ List<ThSubjectType> selectList = list.stream().filter(subjectType -> subjectType.getCode().equals(code)).collect(Collectors.toList());
+ if(selectList.size() > 0){
+ return selectList.get(0);
+ }
+ return null;
+ }
}
--
Gitblit v1.9.2