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/ThStudyRecordManagerServiceImpl.java | 126 ++++++++++++++++++++++++++++++++++++++---
1 files changed, 116 insertions(+), 10 deletions(-)
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
index 30729bb..0d5d89f 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
@@ -1,45 +1,82 @@
package com.gkhy.exam.institutionalaccess.service.serviceImpl;
-import com.gkhy.exam.institutionalaccess.entity.ThStudyAuth;
-import com.gkhy.exam.institutionalaccess.entity.ThStudyTrack;
+import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.TypeReference;
+import com.gkhy.exam.institutionalaccess.entity.*;
+import com.ruoyi.system.domain.enums.AccessAddressType;
import com.gkhy.exam.institutionalaccess.model.query.ThStudyDetailQuery;
+import com.gkhy.exam.institutionalaccess.model.resp.ThPlatformStudentRespDTO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyAuthVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyDetailVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyTrackVO;
-import com.gkhy.exam.institutionalaccess.service.ThStudyAuthService;
-import com.gkhy.exam.institutionalaccess.service.ThStudyDetailService;
-import com.gkhy.exam.institutionalaccess.service.ThStudyRecordManagerService;
-import com.gkhy.exam.institutionalaccess.service.ThStudyTrackService;
+import com.gkhy.exam.institutionalaccess.service.*;
import com.gkhy.exam.institutionalaccess.utils.ConvertTimeUtils;
+import com.ruoyi.common.utils.HttpClientUtil;
+import com.gkhy.exam.noncoalmine.model.vo.ReturnVO;
+import com.ruoyi.common.constant.ResultConstants;
+import com.ruoyi.common.exception.BusinessException;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.signature.AESUtils;
+import com.ruoyi.system.domain.ThAccessAddress;
+import com.ruoyi.system.service.ThAccessAddressService;
+import lombok.extern.log4j.Log4j2;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
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.util.ArrayList;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
@Service("ThStudyRecordManagerService")
+@Log4j2
public class ThStudyRecordManagerServiceImpl implements ThStudyRecordManagerService {
+ private Logger logger = LoggerFactory.getLogger(ThStudyRecordManagerServiceImpl.class);
+
@Autowired
private ThStudyDetailService thStudyDetailService;
@Autowired
private ThStudyTrackService thStudyTrackService;
@Autowired
private ThStudyAuthService thStudyAuthService;
+ @Autowired
+ private ThCourseChapterService thCourseChapterService;;
+ @Autowired
+ private ThCourseService thCourseService;
+ @Autowired
+ private ThBatchService thBatchService;
+ @Autowired
+ private ThStudentService studentService;;
+ @Autowired
+ private ThAccessAddressService thAccessAddressService;
@Override
public List<ThStudyDetailVO> listByPage(ThStudyDetailQuery query) {
+ query.setStartSize((query.getPageNum()-1)*query.getPageSize());
+
List<ThStudyDetailVO> thStudyDetailVOS = thStudyDetailService.listByPage(query);
if(!CollectionUtils.isEmpty(thStudyDetailVOS)){
List<String> detailUuids = thStudyDetailVOS.stream().map(ThStudyDetailVO::getUuid).collect(Collectors.toList());
//获取认证记录
- List<ThStudyAuth> authList = thStudyAuthService.getListByStudyDetaiIds(detailUuids);
+ List<ThStudyAuth> authList = thStudyAuthService.getByStudyDetaiUuids(detailUuids);
//获取轨迹
List<ThStudyTrack> trackList = thStudyTrackService.getListByStudyDetaiIds(detailUuids);
-
+ //获取章节名称
+ List<String> chapterUuids = thStudyDetailVOS.stream().map(ThStudyDetailVO::getChapterUuid).collect(Collectors.toList());
+ List<ThCourseChapter> chapterList = thCourseChapterService.getChapterNameByUuids(chapterUuids);
+ //获取课程名称
+ List<String> courseUuids = thStudyDetailVOS.stream().map(ThStudyDetailVO::getCourseUuid).collect(Collectors.toList());
+ List<ThCourse> courseList = thCourseService.getCourseNameByUuids(courseUuids);
+ //获取批次名称
+ List<String> batchUuids = thStudyDetailVOS.stream().map(ThStudyDetailVO::getBatchUuid).collect(Collectors.toList());
+ List<ThBatch> batchList = thBatchService.getBatchNameByUuids(batchUuids);
+ //学生信息
+ List<String> idcards = thStudyDetailVOS.stream().map(ThStudyDetailVO::getIdcard).collect(Collectors.toList());
+ List<ThStudent> studentList = studentService.getNameByIdcards(idcards);
for(ThStudyDetailVO thStudyDetailVO : thStudyDetailVOS){
thStudyDetailVO.setDurationDesc(ConvertTimeUtils.convertTimeToString(thStudyDetailVO.getDuration()));
thStudyDetailVO.setStartPositionDesc(ConvertTimeUtils.convertTimeToString(thStudyDetailVO.getStartPosition()));
@@ -61,10 +98,79 @@
}).collect(Collectors.toList());
thStudyDetailVO.setAuthList(thStudyAuthVOList);
thStudyDetailVO.setTrackList(trackVOList);
+ List<ThCourseChapter> chapterSelectList = chapterList.stream().filter(chapter -> chapter.getUuid().equals(thStudyDetailVO.getChapterUuid())).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(chapterSelectList)){
+ thStudyDetailVO.setChapterName(chapterSelectList.get(0).getChapterName());
+ }
+ List<ThCourse> courseSelectList = courseList.stream().filter(c -> c.getUuid().equals(thStudyDetailVO.getCourseUuid())).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(courseSelectList)){
+ thStudyDetailVO.setCourseName(courseSelectList.get(0).getCourseName());
+ }
+ List<ThBatch> batchSelectList = batchList.stream().filter(b -> b.getUuid().equals(thStudyDetailVO.getBatchUuid())).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(batchSelectList)){
+ thStudyDetailVO.setBatchName(batchSelectList.get(0).getBatchName());
+ }
+ List<ThStudent> studentSelectList = studentList.stream().filter(thStudent -> thStudent.getIdcard().equals(thStudyDetailVO.getIdcard())).collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(studentSelectList)){
+ thStudyDetailVO.setName(studentSelectList.get(0).getName());
+ }
+
}
}
return thStudyDetailVOS;
}
+ @Override
+ public ThPlatformStudentRespDTO getStudyRecordByIdcard(ThStudyDetailQuery query) {
+ if(StringUtils.isEmpty(query.getIdcard())){
+ throw new BusinessException(this.getClass(), ResultConstants.PARAM_ERROR_NULL,"学生身份证不可为空");
+ }
+ if(query.getInstitutionId() == null){
+ throw new BusinessException(this.getClass(), ResultConstants.PARAM_ERROR_NULL,"学生所属机构不可为空");
+ }
+ //获取该机构访问路径
+ ThAccessAddress accessAddress = thAccessAddressService.getByInstitutionIdAndType(query.getInstitutionId(), AccessAddressType.STUDY_RECORD.getType());
+ Map<String,String> params = new HashMap<>();
+ params.put("idcard",query.getIdcard());
+ String json = HttpClientUtil.doGet(accessAddress.getUrl(), params);
+ log.info("调用机构接口返回结果: "+json);
+
+ ReturnVO<String> returnVo = JSONObject.parseObject(json, new TypeReference<ReturnVO<String>>() {});
+ log.info("获得第三方数据:"+returnVo);
+ if(returnVo==null || returnVo.getCode() == null || returnVo.getCode() != 200){
+ throw new ServiceException("获取三方数据数据异常");
+ }
+ ThPlatformStudentRespDTO thPlatformStudentRespDTO = null;
+ if(!StringUtils.isEmpty(returnVo.getData())){
+ String decrypt = "";
+ try {
+ decrypt = AESUtils.decrypt(returnVo.getData());
+ log.info("解密后的数据为:"+decrypt);
+ }catch (Exception e){
+ throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR,"解密异常");
+ }
+ if(!StringUtils.isEmpty(decrypt)){
+ try {
+ thPlatformStudentRespDTO = JSONObject.parseObject(decrypt, new TypeReference<ThPlatformStudentRespDTO>() {});
+
+ }catch (Exception e){
+ logger.error("学习实时记录反序列化失败!");
+ throw new BusinessException(this.getClass(), ResultConstants.SERIALIZE_ERROR);
+
+ }
+ }
+
+ }
+
+ return thPlatformStudentRespDTO;
+ }
+
+ public static void main(String[] args) {
+ Map<String,String> params = new HashMap<>();
+ params.put("idcard","652201198009174020");
+ String s = HttpClientUtil.doGet("https://app.lgb360.com/egress/xj/getStuDetail", params);
+ System.out.println(s);
+ }
+
}
--
Gitblit v1.9.2