|
@@ -77,31 +77,36 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
List<ReportExamStudentTargetDto> targetList = CollectionUtils.isEmpty(reportExamStudentDto.getTargetList()) ? new ArrayList<>() : reportExamStudentDto.getTargetList();
|
|
|
if (targetWordMap.containsKey(k)) {
|
|
|
List<ReportExamStudentUsualScoreObjDto> scoreObjDtoList = reportExamStudentUsualScoreSumDto.getScoreMap().get(k);
|
|
|
- if (!CollectionUtils.isEmpty(scoreObjDtoList)) {
|
|
|
- CourseTargetWordDto courseTargetWordDto = targetWordMap.get(k);
|
|
|
+ CourseTargetWordDto courseTargetWordDto = targetWordMap.get(k);
|
|
|
// ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), finalScoreResult.getFinalScoreTarget().get(k));
|
|
|
// ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList);
|
|
|
|
|
|
- ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = Objects.nonNull(courseTargetWordDto.getFinalScoreDto()) ? new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), finalScoreResult.getFinalScoreTarget().get(k)) : null;
|
|
|
- ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(scoreObjDtoList);
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = Objects.nonNull(courseTargetWordDto.getFinalScoreDto()) ? new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), finalScoreResult.getFinalScoreTarget().get(k)) : null;
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(scoreObjDtoList);
|
|
|
|
|
|
- BigDecimal targetMatrixSumScore = new BigDecimal(0);
|
|
|
- AtomicReference<BigDecimal> matrixDegree = new AtomicReference<>(new BigDecimal(0));
|
|
|
- if (!reportExamStudentTargetDtoMap.containsKey(k)) {
|
|
|
- Double targetMatrixScore = 0.0d;
|
|
|
- if (Objects.nonNull(courseTargetWordDto.getFinalScoreDto())) {
|
|
|
- //old卷面分*权重/100
|
|
|
- //new卷面分/目标分
|
|
|
+ BigDecimal targetMatrixSumScore = new BigDecimal(0);
|
|
|
+ AtomicReference<BigDecimal> matrixDegree = new AtomicReference<>(new BigDecimal(0));
|
|
|
+ if (!reportExamStudentTargetDtoMap.containsKey(k)) {
|
|
|
+ Double targetMatrixScore = 0.0d;
|
|
|
+ if (Objects.nonNull(courseTargetWordDto.getFinalScoreDto())) {
|
|
|
+ //old卷面分*权重/100
|
|
|
+ //new卷面分/目标分
|
|
|
// targetMatrixScore = new BigDecimal(v).divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- //卷面分*权重/100
|
|
|
- targetMatrixScore = new BigDecimal(v).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- BigDecimal bigDecimal = new BigDecimal(v).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal targetEvaluationValue = bigDecimal.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight().divide(courseTargetWordDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
|
|
|
- }
|
|
|
- targetMatrixSumScore = targetMatrixSumScore.add(new BigDecimal(targetMatrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- reportExamStudentDto.setScore(reportExamStudentDto.getScore() + targetMatrixScore);
|
|
|
- //平时作业总和+累加
|
|
|
+ //卷面分*权重/100
|
|
|
+ targetMatrixScore = new BigDecimal(v).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(v).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal targetEvaluationValue = bigDecimal.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight().divide(courseTargetWordDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
|
|
|
+ }
|
|
|
+ targetMatrixSumScore = targetMatrixSumScore.add(new BigDecimal(targetMatrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ reportExamStudentDto.setScore(reportExamStudentDto.getScore() + targetMatrixScore);
|
|
|
+
|
|
|
+ if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
|
|
|
+ reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore.doubleValue());
|
|
|
+ }
|
|
|
+ ReportExamStudentTargetDto reportExamStudentTargetDto = null;
|
|
|
+ //平时作业总和+累加
|
|
|
+ if (!CollectionUtils.isEmpty(scoreObjDtoList)) {
|
|
|
for (ReportExamStudentUsualScoreObjDto r : scoreObjDtoList) {
|
|
|
BigDecimal bigDecimal = new BigDecimal(r.getScore()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
BigDecimal targetEvaluationValue = bigDecimal.divide(r.getTargetScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(r.getTargetWeight().divide(courseTargetWordDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
@@ -111,36 +116,39 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
reportExamStudentDto.setScore(reportExamStudentDto.getScore() + usualMatrixSumScore);
|
|
|
ReportExamStudentFinalScoreDto reportExamStudentFinalScoreTempDto = null;
|
|
|
if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
|
|
|
- reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore.doubleValue());
|
|
|
reportExamStudentFinalScoreTempDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), targetMatrixSumScore.doubleValue(), finalScoreResult.getFinalScoreTarget().get(k));
|
|
|
}
|
|
|
// ReportExamStudentTargetDto reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())));
|
|
|
- ReportExamStudentTargetDto reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())), matrixDegree.get());
|
|
|
- reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
|
|
|
+ reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())), matrixDegree.get());
|
|
|
} else {
|
|
|
- ReportExamStudentTargetDto reportExamStudentTargetDto = reportExamStudentTargetDtoMap.get(k);
|
|
|
- ReportExamStudentFinalScoreDto reportExamStudentFinalScoreAvgDto = null;
|
|
|
- Double targetMatrixScore = 0.0d;
|
|
|
- if (Objects.nonNull(reportExamStudentTargetDto.getFinalScore())) {
|
|
|
- reportExamStudentFinalScoreAvgDto = reportExamStudentTargetDto.getFinalScore();
|
|
|
- targetMatrixScore = new BigDecimal(v).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreDto, null, matrixDegree.get());
|
|
|
+ }
|
|
|
+ reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
|
|
|
+ } else {
|
|
|
+ ReportExamStudentTargetDto reportExamStudentTargetDto = reportExamStudentTargetDtoMap.get(k);
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreAvgDto = null;
|
|
|
+ Double targetMatrixScore = 0.0d;
|
|
|
+ if (Objects.nonNull(reportExamStudentTargetDto.getFinalScore())) {
|
|
|
+ reportExamStudentFinalScoreAvgDto = reportExamStudentTargetDto.getFinalScore();
|
|
|
+ targetMatrixScore = new BigDecimal(v).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
|
|
- BigDecimal bigDecimal = new BigDecimal(v).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal targetEvaluationValue = bigDecimal.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight().divide(courseTargetWordDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
|
|
|
- reportExamStudentTargetDto.setMatrixDegree(matrixDegree.get());
|
|
|
- }
|
|
|
- targetMatrixSumScore = targetMatrixSumScore.add(new BigDecimal(targetMatrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- reportExamStudentDto.setScore(reportExamStudentDto.getScore() + targetMatrixScore);
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(v).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal targetEvaluationValue = bigDecimal.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight().divide(courseTargetWordDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
|
|
|
+ reportExamStudentTargetDto.setMatrixDegree(matrixDegree.get());
|
|
|
+ }
|
|
|
+ targetMatrixSumScore = targetMatrixSumScore.add(new BigDecimal(targetMatrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ reportExamStudentDto.setScore(reportExamStudentDto.getScore() + targetMatrixScore);
|
|
|
|
|
|
- if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
|
|
|
- reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore.doubleValue());
|
|
|
- reportExamStudentFinalScoreAvgDto.setTargetMatrixSumScore(new BigDecimal(reportExamStudentFinalScoreAvgDto.getTargetMatrixSumScore()).add(targetMatrixSumScore).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
- }
|
|
|
- ReportExamStudentUsualScoreDto reportExamStudentUsualScoreAvgDto = reportExamStudentTargetDto.getUsualScore();
|
|
|
+ if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
|
|
|
+ reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore.doubleValue());
|
|
|
+ reportExamStudentFinalScoreAvgDto.setTargetMatrixSumScore(new BigDecimal(reportExamStudentFinalScoreAvgDto.getTargetMatrixSumScore()).add(targetMatrixSumScore).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
+ }
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreAvgDto = reportExamStudentTargetDto.getUsualScore();
|
|
|
|
|
|
- //平时作业总和+累加
|
|
|
- List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
|
+ //平时作业总和+累加
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
|
+ if (Objects.nonNull(reportExamStudentUsualScoreAvgDto) && !CollectionUtils.isEmpty(reportExamStudentUsualScoreObjDtoList)) {
|
|
|
List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjAvgDtoList = reportExamStudentUsualScoreAvgDto.getScoreList();
|
|
|
for (int i = 0; i < reportExamStudentUsualScoreObjDtoList.size(); i++) {
|
|
|
ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto = reportExamStudentUsualScoreObjDtoList.get(i);
|
|
@@ -150,10 +158,10 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
|
|
|
reportExamStudentUsualScoreObjAvgDtoList.get(i).setMatrixScore(new BigDecimal(reportExamStudentUsualScoreObjAvgDtoList.get(i).getMatrixScore()).add(new BigDecimal(reportExamStudentUsualScoreObjDto.getMatrixScore())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
}
|
|
|
- reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
|
|
|
}
|
|
|
- targetList.add(new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreDto, reportExamStudentUsualScoreDto, matrixDegree.get()));
|
|
|
+ reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
|
|
|
}
|
|
|
+ targetList.add(new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreDto, reportExamStudentUsualScoreDto, matrixDegree.get()));
|
|
|
}
|
|
|
reportExamStudentDto.setTargetList(targetList);
|
|
|
});
|
|
@@ -168,7 +176,9 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
AtomicReference<Double> usualScoreSum = new AtomicReference<>(0.0d);
|
|
|
targetDtoList.stream().peek(e -> {
|
|
|
targetScoreSum.set(targetScoreSum.get() + (Objects.nonNull(e.getFinalScore()) ? e.getFinalScore().getMatrixAvgScore() : 0.0d));
|
|
|
- usualScoreSum.set(usualScoreSum.get() + e.getUsualScore().getScoreList().stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixAvgScore).sum());
|
|
|
+ if (Objects.nonNull(e.getUsualScore()) && !CollectionUtils.isEmpty(e.getUsualScore().getScoreList())) {
|
|
|
+ usualScoreSum.set(usualScoreSum.get() + e.getUsualScore().getScoreList().stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixAvgScore).sum());
|
|
|
+ }
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
Double score = new BigDecimal(targetScoreSum.get()).add(new BigDecimal(usualScoreSum.get())).setScale(1, BigDecimal.ROUND_DOWN).doubleValue();
|
|
@@ -418,10 +428,12 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
v.setTargetMatrixAvgScore(reportExamStudentFinalScoreDto.getMatrixAvgScore());
|
|
|
}
|
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = v.getUsualScore();
|
|
|
- List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
|
- for (ReportExamStudentUsualScoreObjDto r : reportExamStudentUsualScoreObjDtoList) {
|
|
|
- r.setMatrixAvgScore(new BigDecimal(r.getMatrixScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
- v.setTargetMatrixAvgScore(Objects.nonNull(v.getTargetMatrixAvgScore()) ? v.getTargetMatrixAvgScore() : 0.0d + r.getMatrixAvgScore());
|
|
|
+ if (Objects.nonNull(reportExamStudentUsualScoreDto) && !CollectionUtils.isEmpty(reportExamStudentUsualScoreDto.getScoreList())) {
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
|
+ for (ReportExamStudentUsualScoreObjDto r : reportExamStudentUsualScoreObjDtoList) {
|
|
|
+ r.setMatrixAvgScore(new BigDecimal(r.getMatrixScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
+ v.setTargetMatrixAvgScore(Objects.nonNull(v.getTargetMatrixAvgScore()) ? v.getTargetMatrixAvgScore() : 0.0d + r.getMatrixAvgScore());
|
|
|
+ }
|
|
|
}
|
|
|
v.setTargetMatrixAvgScore(new BigDecimal(v.getTargetMatrixAvgScore()).setScale(1, BigDecimal.ROUND_DOWN).doubleValue());
|
|
|
targetDtoList.add(v);
|