|
@@ -113,69 +113,18 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
Collections.sort(reportExamStudentDto.getTargetList());
|
|
|
trExamStudentList.add(new TRExamStudent(trBasicInfo.getId(), reportExamStudentDto));
|
|
|
}
|
|
|
- //加入平均分
|
|
|
+ //加入目标分&平均分&各课程目标平均分
|
|
|
BigDecimal size = new BigDecimal(examStudentList.size());
|
|
|
- //综合成绩平均分
|
|
|
- List<ReportExamStudentTargetDto> targetDtoList = new ArrayList<>();
|
|
|
+ List<ReportExamStudentTargetDto> targetDtoList = this.targetDtoParams(reportExamStudentTargetDtoMap, size);
|
|
|
Double score = new BigDecimal(examStudentList.stream().mapToDouble(ReportExamStudentDto::getScore).sum()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
ReportExamStudentDto reportExamStudentTargetDto = new ReportExamStudentDto("目标分", "目标分", null, 100.d, targetDtoList);
|
|
|
ReportExamStudentDto reportExamStudentAvgDto = new ReportExamStudentDto("平均分", "平均分", null, score, targetDtoList);
|
|
|
ReportExamStudentDto reportExamStudentTargetAvgDto = new ReportExamStudentDto("各课程目标平均分", "各课程目标平均分", null, null, targetDtoList);
|
|
|
- reportExamStudentTargetDtoMap.forEach((k, v) -> {
|
|
|
- ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = v.getFinalScore();//课程目标考核要素的平均分
|
|
|
- reportExamStudentFinalScoreDto.setMatrixAvgScore(new BigDecimal(reportExamStudentFinalScoreDto.getTargetMatrixSumScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
-
|
|
|
- List<DimensionDto> dimensionDtoList = reportExamStudentFinalScoreDto.getDimensionList();
|
|
|
- for (DimensionDto d : dimensionDtoList) {
|
|
|
- d.setDimensionMatrixAvgScore(new BigDecimal(d.getDimensionMatrixScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
- }
|
|
|
-
|
|
|
- v.setTargetMatrixAvgScore(reportExamStudentFinalScoreDto.getTargetMatrixSumScore());
|
|
|
- ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = v.getUsualScore();
|
|
|
- List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
|
- for (ReportExamStudentUsualScoreObjDto r : reportExamStudentUsualScoreObjDtoList) {
|
|
|
- v.setTargetMatrixAvgScore(v.getTargetMatrixAvgScore() + r.getMatrixScore());
|
|
|
- r.setMatrixAvgScore(new BigDecimal(r.getMatrixScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
- }
|
|
|
- v.setTargetMatrixAvgScore(new BigDecimal(v.getTargetMatrixAvgScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
-
|
|
|
- targetDtoList.add(v);
|
|
|
- });
|
|
|
- Collections.sort(targetDtoList);
|
|
|
|
|
|
//目标分处理
|
|
|
- List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = reportExamStudentTargetDto.getTargetList();
|
|
|
- reportExamStudentTargetDtoList = reportExamStudentTargetDtoList.stream().map(ReportExamStudentTargetDto::new).collect(Collectors.toList());
|
|
|
- reportExamStudentTargetDtoList = reportExamStudentTargetDtoList.stream().peek(e -> {
|
|
|
- e.setTargetMatrixAvgScore(null);
|
|
|
- ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(e.getFinalScore());
|
|
|
- reportExamStudentFinalScoreDto.setTargetMatrixSumScore(null);
|
|
|
- reportExamStudentFinalScoreDto.setMatrixAvgScore(null);
|
|
|
- List<DimensionDto> dimensionDtoList = reportExamStudentFinalScoreDto.getDimensionList().stream().map(DimensionDto::new).collect(Collectors.toList());
|
|
|
- reportExamStudentFinalScoreDto.setDimensionList(dimensionDtoList.stream().peek(s -> {
|
|
|
- s.setDimensionMatrixScore(null);
|
|
|
- s.setDimensionMatrixAvgScore(null);
|
|
|
- }).collect(Collectors.toList()));
|
|
|
- e.setFinalScore(reportExamStudentFinalScoreDto);
|
|
|
-
|
|
|
- ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(e.getUsualScore());
|
|
|
- List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList().stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList());
|
|
|
- reportExamStudentUsualScoreObjDtoList.stream().peek(k -> {
|
|
|
- k.setScore(null);
|
|
|
- k.setMatrixAvgScore(null);
|
|
|
- k.setMatrixScore(null);
|
|
|
- }).collect(Collectors.toList());
|
|
|
- e.setUsualScore(reportExamStudentUsualScoreDto);
|
|
|
- }).collect(Collectors.toList());
|
|
|
- reportExamStudentTargetDto.setTargetList(reportExamStudentTargetDtoList);
|
|
|
-
|
|
|
+ this.targetScoreHandle(reportExamStudentTargetDto);
|
|
|
//各课程目标平均分处理
|
|
|
- List<ReportExamStudentTargetDto> reportExamStudentTargetAvgDtoList = reportExamStudentTargetAvgDto.getTargetList();
|
|
|
- reportExamStudentTargetAvgDtoList = reportExamStudentTargetAvgDtoList.stream().map(ReportExamStudentTargetDto::new).collect(Collectors.toList()).stream().peek(e -> {
|
|
|
- e.setUsualScore(null);
|
|
|
- e.setFinalScore(null);
|
|
|
- }).collect(Collectors.toList());
|
|
|
- reportExamStudentTargetAvgDto.setTargetList(reportExamStudentTargetAvgDtoList);
|
|
|
+ this.targetAvgScoreHandle(reportExamStudentTargetAvgDto);
|
|
|
|
|
|
examStudentList.add(reportExamStudentTargetDto);
|
|
|
examStudentList.add(reportExamStudentAvgDto);
|
|
@@ -188,4 +137,81 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
}
|
|
|
return examStudentList;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理目标分&平均分&各课程目标平均分参数
|
|
|
+ *
|
|
|
+ * @param reportExamStudentTargetDtoMap
|
|
|
+ * @param size
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ protected List<ReportExamStudentTargetDto> targetDtoParams(Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap, BigDecimal size) {
|
|
|
+ List<ReportExamStudentTargetDto> targetDtoList = new ArrayList<>();
|
|
|
+ reportExamStudentTargetDtoMap.forEach((k, v) -> {
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = v.getFinalScore();//课程目标考核要素的平均分
|
|
|
+ reportExamStudentFinalScoreDto.setMatrixAvgScore(new BigDecimal(reportExamStudentFinalScoreDto.getTargetMatrixSumScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
+
|
|
|
+ List<DimensionDto> dimensionDtoList = reportExamStudentFinalScoreDto.getDimensionList();
|
|
|
+ for (DimensionDto d : dimensionDtoList) {
|
|
|
+ d.setDimensionMatrixAvgScore(new BigDecimal(d.getDimensionMatrixScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ v.setTargetMatrixAvgScore(reportExamStudentFinalScoreDto.getTargetMatrixSumScore());
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = v.getUsualScore();
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
|
+ for (ReportExamStudentUsualScoreObjDto r : reportExamStudentUsualScoreObjDtoList) {
|
|
|
+ v.setTargetMatrixAvgScore(v.getTargetMatrixAvgScore() + r.getMatrixScore());
|
|
|
+ r.setMatrixAvgScore(new BigDecimal(r.getMatrixScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
+ }
|
|
|
+ v.setTargetMatrixAvgScore(new BigDecimal(v.getTargetMatrixAvgScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
+
|
|
|
+ targetDtoList.add(v);
|
|
|
+ });
|
|
|
+ Collections.sort(targetDtoList);
|
|
|
+ return targetDtoList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 目标分处理
|
|
|
+ *
|
|
|
+ * @param reportExamStudentTargetDto
|
|
|
+ */
|
|
|
+ protected void targetScoreHandle(ReportExamStudentDto reportExamStudentTargetDto) {
|
|
|
+ List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = reportExamStudentTargetDto.getTargetList();
|
|
|
+ reportExamStudentTargetDtoList = reportExamStudentTargetDtoList.stream().map(ReportExamStudentTargetDto::new).collect(Collectors.toList());
|
|
|
+ reportExamStudentTargetDtoList = reportExamStudentTargetDtoList.stream().peek(e -> {
|
|
|
+ e.setTargetMatrixAvgScore(null);
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(e.getFinalScore());
|
|
|
+ List<DimensionDto> dimensionDtoList = reportExamStudentFinalScoreDto.getDimensionList().stream().map(DimensionDto::new).collect(Collectors.toList());
|
|
|
+ reportExamStudentFinalScoreDto.setDimensionList(dimensionDtoList.stream().peek(s -> {
|
|
|
+ s.setDimensionMatrixScore(null);
|
|
|
+ s.setDimensionScore(null);
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
+ e.setFinalScore(reportExamStudentFinalScoreDto);
|
|
|
+
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(e.getUsualScore());
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList().stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList());
|
|
|
+ reportExamStudentUsualScoreObjDtoList.stream().peek(k -> {
|
|
|
+ k.setScore(null);
|
|
|
+ k.setMatrixAvgScore(null);
|
|
|
+ k.setMatrixScore(null);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ e.setUsualScore(reportExamStudentUsualScoreDto);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ reportExamStudentTargetDto.setTargetList(reportExamStudentTargetDtoList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 各课程目标平均分处理
|
|
|
+ *
|
|
|
+ * @param reportExamStudentTargetAvgDto
|
|
|
+ */
|
|
|
+ protected void targetAvgScoreHandle(ReportExamStudentDto reportExamStudentTargetAvgDto) {
|
|
|
+ List<ReportExamStudentTargetDto> reportExamStudentTargetAvgDtoList = reportExamStudentTargetAvgDto.getTargetList();
|
|
|
+ reportExamStudentTargetAvgDtoList = reportExamStudentTargetAvgDtoList.stream().map(ReportExamStudentTargetDto::new).collect(Collectors.toList()).stream().peek(e -> {
|
|
|
+ e.setUsualScore(null);
|
|
|
+ e.setFinalScore(null);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ reportExamStudentTargetAvgDto.setTargetList(reportExamStudentTargetAvgDtoList);
|
|
|
+ }
|
|
|
}
|