Selaa lähdekoodia

课程目标达成度统计支持多个课程目标

wangliang 8 kuukautta sitten
vanhempi
commit
ab3364d759

+ 37 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentUsualScoreObjDto.java

@@ -54,6 +54,12 @@ public class ReportExamStudentUsualScoreObjDto implements Serializable, Comparab
     @ApiModelProperty(value = "课程目标考核要素的平均分")
     private BigDecimal matrixAvgScore = new BigDecimal(0);
 
+    @ApiModelProperty(value = "换算后的卷面分数")
+    private BigDecimal matrixPageScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "换算后的作业目标分值")
+    private BigDecimal matrixTargetScore = new BigDecimal(0);
+
     public ReportExamStudentUsualScoreObjDto() {
 
     }
@@ -82,6 +88,37 @@ public class ReportExamStudentUsualScoreObjDto implements Serializable, Comparab
         this.targetSumScore = targetSumScore;
     }
 
+    public ReportExamStudentUsualScoreObjDto(Long targetId, ReportEvaluationDto reportEvaluationDto, BigDecimal score, BigDecimal matrixScore, BigDecimal targetSumScore,
+                                             BigDecimal matrixPageScore, BigDecimal matrixTargetScore) {
+        this.evaluationId = reportEvaluationDto.getEvaluationId();
+        this.evaluation = reportEvaluationDto.getEvaluation();
+        this.evaluationDesc = reportEvaluationDto.getEvaluationDesc();
+        this.targetWeight = reportEvaluationDto.getTargetWeight();
+        this.targetScore = reportEvaluationDto.getTargetScore();
+        this.score = score;
+        this.matrixScore = matrixScore;
+        this.targetId = targetId;
+        this.targetSumScore = targetSumScore;
+        this.matrixPageScore = matrixPageScore;
+        this.matrixTargetScore = matrixTargetScore;
+    }
+
+    public BigDecimal getMatrixPageScore() {
+        return matrixPageScore;
+    }
+
+    public void setMatrixPageScore(BigDecimal matrixPageScore) {
+        this.matrixPageScore = matrixPageScore;
+    }
+
+    public BigDecimal getMatrixTargetScore() {
+        return matrixTargetScore;
+    }
+
+    public void setMatrixTargetScore(BigDecimal matrixTargetScore) {
+        this.matrixTargetScore = matrixTargetScore;
+    }
+
     public Long getTargetId() {
         return targetId;
     }

+ 4 - 2
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/impl/TRBasicInfoServiceImpl.java

@@ -1143,8 +1143,10 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                             List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
                             CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
                             UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
-                            BigDecimal matrixScore = score.multiply(reportEvaluationDto.getTargetWeight()).divide(new BigDecimal(targetWeightSum), 4, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
-                            reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumScore()));
+                            BigDecimal matrixPageScore = score.multiply(reportEvaluationDto.getTargetWeight()).divide(new BigDecimal(targetWeightSum), 4, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            BigDecimal matrixTargetScore = SystemConstant.PERCENT.multiply(reportEvaluationDto.getTargetWeight()).divide(new BigDecimal(targetWeightSum), 4, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            BigDecimal matrixScore = matrixPageScore.divide(matrixTargetScore, 4, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumScore(), matrixPageScore, matrixTargetScore));
                             scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
                         }
                     }

+ 2 - 2
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/impl/TRExamStudentServiceImpl.java

@@ -125,8 +125,8 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                                             if (reportEvaluationDtoList.size() == 1) {
                                                 targetEvaluationValue = r.getScore().divide(r.getTargetScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(r.getTargetWeight().divide(courseTargetWordDto.getTargetSumWeight(), 4, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
                                             } else {
-                                                Double targetWeightSum = reportEvaluationDtoList.stream().mapToDouble(s -> s.getTargetWeight().doubleValue()).sum();
-                                                targetEvaluationValue = r.getMatrixScore().divide(r.getTargetScore().multiply(r.getTargetWeight()).divide(new BigDecimal(targetWeightSum), 4, BigDecimal.ROUND_HALF_UP), 4, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                                targetEvaluationValue = r.getMatrixPageScore().divide(r.getMatrixTargetScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(r.getTargetWeight().divide(courseTargetWordDto.getTargetSumWeight(), 4, BigDecimal.ROUND_HALF_UP)).
+                                                        setScale(2, BigDecimal.ROUND_HALF_UP);
                                             }
                                         }
                                         matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));