|
@@ -1,12 +1,16 @@
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.qmth.distributed.print.business.bean.dto.report.*;
|
|
import com.qmth.distributed.print.business.bean.dto.report.*;
|
|
import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
|
|
import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
|
|
-import com.qmth.distributed.print.business.entity.TRBasicInfo;
|
|
|
|
-import com.qmth.distributed.print.business.entity.TRExamStudent;
|
|
|
|
|
|
+import com.qmth.distributed.print.business.bean.result.report.studentRequirement.*;
|
|
|
|
+import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.mapper.TRExamStudentMapper;
|
|
import com.qmth.distributed.print.business.mapper.TRExamStudentMapper;
|
|
|
|
+import com.qmth.distributed.print.business.service.ObeCourseTargetService;
|
|
|
|
+import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
|
|
import com.qmth.distributed.print.business.service.TRBasicInfoService;
|
|
import com.qmth.distributed.print.business.service.TRBasicInfoService;
|
|
import com.qmth.distributed.print.business.service.TRExamStudentService;
|
|
import com.qmth.distributed.print.business.service.TRExamStudentService;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
@@ -15,6 +19,7 @@ import org.slf4j.LoggerFactory;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
@@ -39,6 +44,10 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
TRBasicInfoService trBasicInfoService;
|
|
TRBasicInfoService trBasicInfoService;
|
|
|
|
+ @Resource
|
|
|
|
+ private ObeCourseTargetService obeCourseTargetService;
|
|
|
|
+ @Resource
|
|
|
|
+ private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 获取考生详细报告
|
|
* 获取考生详细报告
|
|
@@ -202,6 +211,73 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
return Objects.nonNull(trBasicInfo) ? trExamStudentService.remove(trBasicInfo.getId()) : false;
|
|
return Objects.nonNull(trBasicInfo) ? trExamStudentService.remove(trBasicInfo.getId()) : false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public StudentRequirement getRequirementsStudentReport(Long cultureProgramId, String studentCode, Long semesterId) {
|
|
|
|
+ List<CourseTargetRequirement> courseTargetRequirementList = new ArrayList<>();
|
|
|
|
+ List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = obeCultureProgramRequirementService.listRequirement(cultureProgramId);
|
|
|
|
+ for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
|
|
|
|
+ for (ObeCultureProgramRequirement cultureProgramRequirement : obeCultureProgramRequirement.getSubRequirementList()) {
|
|
|
|
+ courseTargetRequirementList.add(new CourseTargetRequirement(cultureProgramRequirement.getId(), obeCultureProgramRequirement.getId(), obeCultureProgramRequirement.getName()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<StudentCourseInfoDto> studentCourseInfoDtoList = this.baseMapper.listStudentCourseByCultureProgramIdAndStudentCodeAndSemesterId(cultureProgramId, studentCode, semesterId);
|
|
|
|
+ for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
|
|
+ studentCourseInfoDto.setCourseTargetRequirementList(courseTargetRequirementList);
|
|
|
|
+ String resultDetail = studentCourseInfoDto.getResultDetail();
|
|
|
|
+ if (!StringUtils.isEmpty(resultDetail)) {
|
|
|
|
+ List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSON.parseArray(resultDetail, ReportExamStudentTargetDto.class);
|
|
|
|
+ // 指标点
|
|
|
|
+ for (ReportExamStudentTargetDto reportExamStudentTargetDto : reportExamStudentTargetDtoList) {
|
|
|
|
+ ObeCourseTarget obeCourseTarget = obeCourseTargetService.getById(reportExamStudentTargetDto.getTargetId());
|
|
|
|
+ for (CourseTargetRequirement courseTargetRequirement : studentCourseInfoDto.getCourseTargetRequirementList()) {
|
|
|
|
+ if (courseTargetRequirement.getSubRequirementId().equals(obeCourseTarget.getObeCultureProgramRequirementId())) {
|
|
|
|
+ courseTargetRequirement.setCourseTargetDegree(reportExamStudentTargetDto.getMatrixDegree().doubleValue());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ StudentRequirement studentRequirement = new StudentRequirement();
|
|
|
|
+ // 各科目达成度
|
|
|
|
+ List<StudentCourseRequirement> studentCourseRequirementList = new ArrayList<>();
|
|
|
|
+ for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
|
|
+ StudentCourseRequirement studentCourseRequirement = new StudentCourseRequirement();
|
|
|
|
+ studentCourseRequirement.setCourseCode(studentCourseInfoDto.getCourseCode());
|
|
|
|
+ studentCourseRequirement.setCourseName(studentCourseInfoDto.getCourseName());
|
|
|
|
+ studentCourseRequirement.setSemesterName(studentCourseInfoDto.getSemesterName());
|
|
|
|
+ studentCourseRequirement.setScore(studentCourseInfoDto.getScore());
|
|
|
|
+ LinkedHashMap<String, Double> map = studentCourseInfoDto.getCourseTargetRequirementList().stream().collect(Collectors.toMap(CourseTargetRequirement::getRequirementName, CourseTargetRequirement::getCourseTargetDegree, (v1, v2) -> v1 == null ? v2 == null ? v2 : v1.doubleValue() <= v2.doubleValue() ? v1 : v2 : v1, LinkedHashMap::new));
|
|
|
|
+ List<StudentCourseRequirementDetail> requirementDetailList = map.entrySet().stream().map(entry -> new StudentCourseRequirementDetail(entry.getKey(), entry.getValue())).collect(Collectors.toList());
|
|
|
|
+ studentCourseRequirement.setRequirementDetailList(requirementDetailList);
|
|
|
|
+ studentCourseRequirementList.add(studentCourseRequirement);
|
|
|
|
+ }
|
|
|
|
+ studentRequirement.setStudentCourseRequirementList(studentCourseRequirementList);
|
|
|
|
+
|
|
|
|
+ // 汇总达成度
|
|
|
|
+ List<CourseTargetRequirement> courseTargetRequirementListAll = new ArrayList<>();
|
|
|
|
+ for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
|
|
+ courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList().stream().filter(m -> m.getCourseTargetDegree() != null).collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ Map<String, List<CourseTargetRequirement>> stringDoubleMap = courseTargetRequirementListAll.stream().collect(Collectors.groupingBy(CourseTargetRequirement::getRequirementName));
|
|
|
|
+ List<StudentTotalRequirement> studentTotalRequirementList = new ArrayList<>();
|
|
|
|
+ for (Map.Entry<String, List<CourseTargetRequirement>> entry : stringDoubleMap.entrySet()) {
|
|
|
|
+ Map<Long, Double> doubleMap = entry.getValue().stream().collect(Collectors.groupingBy(CourseTargetRequirement::getSubRequirementId, Collectors.summingDouble(CourseTargetRequirement::getCourseTargetDegree)));
|
|
|
|
+ StudentTotalRequirement studentTotalRequirement = new StudentTotalRequirement();
|
|
|
|
+ studentTotalRequirement.setRequirementName(entry.getKey());
|
|
|
|
+ studentTotalRequirement.setStudentDegree(doubleMap.values().stream().min(Double::compare).get());
|
|
|
|
+ studentTotalRequirementList.add(studentTotalRequirement);
|
|
|
|
+ }
|
|
|
|
+ studentRequirement.setStudentTotalRequirementList(studentTotalRequirementList);
|
|
|
|
+ return studentRequirement;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Page<StudentRequirementInfoDto> getRequirementsStudentPage(Long cultureProgramId, String studentCodeOrName, Integer pageNumber, Integer pageSize) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
// /**
|
|
// /**
|
|
// * 知识点纬度数据构建
|
|
// * 知识点纬度数据构建
|
|
// *
|
|
// *
|