|
@@ -1,5 +1,6 @@
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
|
|
|
|
|
|
+import ch.qos.logback.classic.pattern.EnsureExceptionHandling;
|
|
import com.alibaba.fastjson.JSON;
|
|
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.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -21,6 +22,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.LinkedMultiValueMap;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
@@ -231,17 +233,15 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
studentCourseRequirement.setCourseName(studentCourseInfoDto.getCourseName());
|
|
studentCourseRequirement.setCourseName(studentCourseInfoDto.getCourseName());
|
|
studentCourseRequirement.setSemesterName(studentCourseInfoDto.getSemesterName());
|
|
studentCourseRequirement.setSemesterName(studentCourseInfoDto.getSemesterName());
|
|
studentCourseRequirement.setScore(studentCourseInfoDto.getScore());
|
|
studentCourseRequirement.setScore(studentCourseInfoDto.getScore());
|
|
- Map<String, Optional<CourseTargetRequirement>> map = studentCourseInfoDto.getCourseTargetRequirementList().stream().collect(Collectors.groupingBy(m -> m.getRequirementSortNum() + "##" + m.getRequirementName(), Collectors.minBy((o1, o2) -> {
|
|
|
|
- if (o1.getCourseTargetDegree() != null && o2.getCourseTargetDegree() != null) {
|
|
|
|
- return o1.getCourseTargetDegree() - o2.getCourseTargetDegree() < 0 ? -1 : 1;
|
|
|
|
- } else if (o1.getCourseTargetDegree() == null && o2.getCourseTargetDegree() != null) {
|
|
|
|
- return 1;
|
|
|
|
- } else if (o1.getCourseTargetDegree() != null && o2.getCourseTargetDegree() == null) {
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return 0;
|
|
|
|
- })));
|
|
|
|
- List<StudentCourseRequirementDetail> requirementDetailList = map.entrySet().stream().map(entry -> new StudentCourseRequirementDetail(entry.getKey().split("##"), entry.getValue().isPresent() ? entry.getValue().get().getCourseTargetDegree() : null)).collect(Collectors.toList());
|
|
|
|
|
|
+
|
|
|
|
+ Map<String, List<CourseTargetRequirement>> map = studentCourseInfoDto.getCourseTargetRequirementList().stream().collect(Collectors.groupingBy(m -> m.getRequirementSortNum() + "##" + m.getRequirementName()));
|
|
|
|
+ List<StudentCourseRequirementDetail> requirementDetailList = new ArrayList<>();
|
|
|
|
+ for (Map.Entry<String, List<CourseTargetRequirement>> entry : map.entrySet()) {
|
|
|
|
+ String[] s = entry.getKey().split("##");
|
|
|
|
+ StudentCourseRequirementDetail studentCourseRequirementDetail= new StudentCourseRequirementDetail(Integer.valueOf(s[0]), s[1], null);
|
|
|
|
+ studentCourseRequirementDetail.setSubRequirementDetailList(entry.getValue().stream().map(m-> new StudentCourseRequirementDetail(m.getSubRequirementSortNum(), m.getSubRequirementName(), m.getCourseTargetDegree())).collect(Collectors.toList()));
|
|
|
|
+ requirementDetailList.add(studentCourseRequirementDetail);
|
|
|
|
+ }
|
|
requirementDetailList.sort(Comparator.comparingInt(StudentCourseRequirementDetail::getRequirementSortNum));
|
|
requirementDetailList.sort(Comparator.comparingInt(StudentCourseRequirementDetail::getRequirementSortNum));
|
|
studentCourseRequirement.setRequirementDetailList(requirementDetailList);
|
|
studentCourseRequirement.setRequirementDetailList(requirementDetailList);
|
|
studentCourseRequirementList.add(studentCourseRequirement);
|
|
studentCourseRequirementList.add(studentCourseRequirement);
|
|
@@ -251,10 +251,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
// 汇总达成度
|
|
// 汇总达成度
|
|
List<CourseTargetRequirement> courseTargetRequirementListAll = new ArrayList<>();
|
|
List<CourseTargetRequirement> courseTargetRequirementListAll = new ArrayList<>();
|
|
for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
- courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList().stream().map(m -> {
|
|
|
|
- m.setCourseTargetDegree(m.getCourseTargetDegree() == null ? null : m.getCourseTargetDegree());
|
|
|
|
- return m;
|
|
|
|
- }).collect(Collectors.toList()));
|
|
|
|
|
|
+ courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList());
|
|
}
|
|
}
|
|
|
|
|
|
Map<String, BigDecimal> requirementDegreeMap = new HashMap<>();
|
|
Map<String, BigDecimal> requirementDegreeMap = new HashMap<>();
|
|
@@ -268,14 +265,9 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
List<StudentTotalRequirement> studentTotalRequirementList = new ArrayList<>();
|
|
List<StudentTotalRequirement> studentTotalRequirementList = new ArrayList<>();
|
|
for (Map.Entry<String, List<CourseTargetRequirement>> entry : stringDoubleMap.entrySet()) {
|
|
for (Map.Entry<String, List<CourseTargetRequirement>> entry : stringDoubleMap.entrySet()) {
|
|
String[] keys = entry.getKey().split("##");
|
|
String[] keys = entry.getKey().split("##");
|
|
- Map<Long, Double> doubleMap = entry.getValue().stream().filter(m -> m.getCourseTargetDegree() != null).collect(Collectors.groupingBy(CourseTargetRequirement::getSubRequirementId, Collectors.summingDouble(CourseTargetRequirement::getCourseTargetDegree)));
|
|
|
|
StudentTotalRequirement studentTotalRequirement = new StudentTotalRequirement();
|
|
StudentTotalRequirement studentTotalRequirement = new StudentTotalRequirement();
|
|
studentTotalRequirement.setRequirementName(keys[1]);
|
|
studentTotalRequirement.setRequirementName(keys[1]);
|
|
studentTotalRequirement.setRequirementSortNum(Integer.valueOf(keys[0]));
|
|
studentTotalRequirement.setRequirementSortNum(Integer.valueOf(keys[0]));
|
|
- if (!CollectionUtils.isEmpty(doubleMap)) {
|
|
|
|
- Double minValue = doubleMap.values().stream().filter(m -> m != null).min(Double::compare).orElseGet(null);
|
|
|
|
- studentTotalRequirement.setStudentDegree(minValue != null ? new BigDecimal(minValue).setScale(2, RoundingMode.HALF_UP).doubleValue() : null);
|
|
|
|
- }
|
|
|
|
if (requirementDegreeMap.containsKey(keys[1])) {
|
|
if (requirementDegreeMap.containsKey(keys[1])) {
|
|
studentTotalRequirement.setProfessionalDegree(requirementDegreeMap.get(keys[1]).doubleValue());
|
|
studentTotalRequirement.setProfessionalDegree(requirementDegreeMap.get(keys[1]).doubleValue());
|
|
}
|
|
}
|
|
@@ -292,7 +284,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
for (CourseRequirementMatrixDto courseRequirementMatrixDto : requirementMatrixDtoList) {
|
|
for (CourseRequirementMatrixDto courseRequirementMatrixDto : requirementMatrixDtoList) {
|
|
for (MatrixRequirementDto requirement : courseRequirementMatrixDto.getRequirements()) {
|
|
for (MatrixRequirementDto requirement : courseRequirementMatrixDto.getRequirements()) {
|
|
for (MatrixSubRequirementDto subRequirement : requirement.getSubRequirements()) {
|
|
for (MatrixSubRequirementDto subRequirement : requirement.getSubRequirements()) {
|
|
- courseTargetRequirementList.add(new CourseTargetRequirement(subRequirement.getSubRequirementId(), requirement.getId(), requirement.getName(), requirement.getSortNum(), subRequirement.getScale().doubleValue() != 0 ? subRequirement.getScale().doubleValue() : null));
|
|
|
|
|
|
+ courseTargetRequirementList.add(new CourseTargetRequirement(subRequirement.getSubRequirementId(), subRequirement.getName(), subRequirement.getSubRequirementSortNum(), requirement.getId(), requirement.getName(), requirement.getSortNum(), subRequirement.getScale().doubleValue() != 0 ? subRequirement.getScale().doubleValue() : null));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|