|
@@ -249,7 +249,7 @@ public class TAExamCourseServiceImpl extends ServiceImpl<TAExamCourseMapper, TAE
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public TrialCalculationResult trialCalculate(Long examId, String courseCode, BigDecimal coefficient) {
|
|
|
+ public TrialCalculationResult trialCalculate(Long examId, String courseCode, String coefficient) {
|
|
|
// 试卷分数设置
|
|
|
List<TBPaper> tbPaperList = tbPaperService.list(new QueryWrapper<TBPaper>().lambda().eq(TBPaper::getExamId, examId).eq(TBPaper::getCourseCode, courseCode));
|
|
|
if (tbPaperList.size() == 0) {
|
|
@@ -258,77 +258,100 @@ public class TAExamCourseServiceImpl extends ServiceImpl<TAExamCourseMapper, TAE
|
|
|
TBPaper tbPaper = tbPaperList.get(0);
|
|
|
BigDecimal fullScore = tbPaper.getTotalScore();
|
|
|
BigDecimal passScore = tbPaper.getPassScore();
|
|
|
- // 参考的考生数据
|
|
|
- List<TAExamCourseRecord> taExamCourseRecordList = taExamCourseRecordMapper.selectList(new QueryWrapper<TAExamCourseRecord>().lambda()
|
|
|
- .eq(TAExamCourseRecord::getExamId, examId)
|
|
|
- .eq(TAExamCourseRecord::getCourseCode, courseCode)
|
|
|
- .eq(TAExamCourseRecord::getAbsent, false));
|
|
|
- for (TAExamCourseRecord taExamCourseRecord : taExamCourseRecordList) {
|
|
|
- BigDecimal paperScore = taExamCourseRecord.getTotalScore();
|
|
|
- BigDecimal assignScore;
|
|
|
- if (coefficient.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- assignScore = paperScore.add((fullScore.subtract(paperScore)).divide(coefficient, 4, BigDecimal.ROUND_HALF_UP));
|
|
|
- } else {
|
|
|
- assignScore = paperScore;
|
|
|
+ TrialCalculationResult trialCalculationResult = new TrialCalculationResult();
|
|
|
+ if (coefficient.equals(SystemConstant.DEFAULT_SIGN)) {
|
|
|
+ // 特殊赋分处理
|
|
|
+ TAExamCourse taExamCourse = taExamCourseService.getOne(new QueryWrapper<TAExamCourse>().lambda().eq(TAExamCourse::getExamId, examId).eq(TAExamCourse::getCourseCode, courseCode));
|
|
|
+ // 组装
|
|
|
+ trialCalculationResult.setTotalCount(taExamCourse.getRealityCount());
|
|
|
+ trialCalculationResult.setCurrentCount(taExamCourse.getCurrentRealityCount());
|
|
|
+ // - 卷面-总体
|
|
|
+ trialCalculationResult.setAvgScore(taExamCourse.getPaperAvgScore());
|
|
|
+ trialCalculationResult.setFailRate(BigDecimal.ONE.subtract(taExamCourse.getPaperPassRate()));
|
|
|
+ trialCalculationResult.setFailCount(taExamCourse.getRealityCount() - taExamCourse.getPaperPassCount());
|
|
|
+ // - 卷面-应届
|
|
|
+ trialCalculationResult.setCurrentAvgScore(taExamCourse.getPaperCurrentAvgScore());
|
|
|
+ trialCalculationResult.setCurrentFailRate(BigDecimal.ONE.subtract(taExamCourse.getCurrentPassRate()));
|
|
|
+ trialCalculationResult.setCurrentFailCount(taExamCourse.getRealityCount() - taExamCourse.getPaperCurrentPassCount());
|
|
|
+ // - 赋分-总体
|
|
|
+ trialCalculationResult.setAvgScoreAssign(taExamCourse.getAvgScore());
|
|
|
+ trialCalculationResult.setFailRateAssign(BigDecimal.ONE.subtract(taExamCourse.getPassRate()));
|
|
|
+ trialCalculationResult.setFailCountAssign(taExamCourse.getRealityCount() - taExamCourse.getPassCount());
|
|
|
+ // - 赋分-应届
|
|
|
+ trialCalculationResult.setCurrentAvgScoreAssign(taExamCourse.getCurrentAvgScore());
|
|
|
+ trialCalculationResult.setCurrentFailRateAssign(BigDecimal.ONE.subtract(taExamCourse.getCurrentPassRate()));
|
|
|
+ trialCalculationResult.setCurrentFailCountAssign(taExamCourse.getRealityCount() - taExamCourse.getCurrentPassCount());
|
|
|
+ } else {
|
|
|
+ // 参考的考生数据
|
|
|
+ List<TAExamCourseRecord> taExamCourseRecordList = taExamCourseRecordMapper.selectList(new QueryWrapper<TAExamCourseRecord>().lambda()
|
|
|
+ .eq(TAExamCourseRecord::getExamId, examId)
|
|
|
+ .eq(TAExamCourseRecord::getCourseCode, courseCode)
|
|
|
+ .eq(TAExamCourseRecord::getAbsent, false));
|
|
|
+ for (TAExamCourseRecord taExamCourseRecord : taExamCourseRecordList) {
|
|
|
+ BigDecimal paperScore = taExamCourseRecord.getTotalScore();
|
|
|
+ BigDecimal assignScore;
|
|
|
+ if (!coefficient.equals(String.valueOf(0))) {
|
|
|
+ assignScore = paperScore.add((fullScore.subtract(paperScore)).divide(BigDecimal.valueOf(Double.parseDouble(coefficient)), 4, BigDecimal.ROUND_HALF_UP));
|
|
|
+ assignScore = assignScore.setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
+ } else {
|
|
|
+ assignScore = paperScore;
|
|
|
+ }
|
|
|
+
|
|
|
+ taExamCourseRecord.setAssignedScore(assignScore);
|
|
|
}
|
|
|
-
|
|
|
- assignScore = assignScore.setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
- taExamCourseRecord.setAssignedScore(assignScore);
|
|
|
+ int totalCount = taExamCourseRecordList.size();
|
|
|
+ int currentCount = (int) taExamCourseRecordList.stream().filter(TAExamCourseRecord::getStudentCurrent).count();
|
|
|
+
|
|
|
+ // 查找卷面数据
|
|
|
+ // 总体
|
|
|
+ List<Double> paperTotalScoreList = taExamCourseRecordList.stream().map(e -> e.getTotalScore().doubleValue()).collect(Collectors.toList());
|
|
|
+ DoubleSummaryStatistics paperTotalStatistics = paperTotalScoreList.stream().collect(Collectors.summarizingDouble(e -> e));
|
|
|
+ double paperTotalAvgScore = paperTotalStatistics.getAverage();
|
|
|
+ long paperTotalFailCount = paperTotalScoreList.stream().filter(e -> e < passScore.doubleValue()).count();
|
|
|
+ BigDecimal paperTotalFailRate = BigDecimal.valueOf(paperTotalFailCount).divide(BigDecimal.valueOf(paperTotalScoreList.size()), SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
|
|
|
+
|
|
|
+ // 应届
|
|
|
+ List<Double> paperCurrentScoreList = taExamCourseRecordList.stream().filter(TAExamCourseRecord::getStudentCurrent).map(e -> e.getTotalScore().doubleValue()).collect(Collectors.toList());
|
|
|
+ DoubleSummaryStatistics paperCurrentStatistics = paperCurrentScoreList.stream().collect(Collectors.summarizingDouble(e -> e));
|
|
|
+ double paperCurrentAvgScore = paperCurrentStatistics.getAverage();
|
|
|
+ long paperCurrentFailCount = paperCurrentScoreList.stream().filter(e -> e < passScore.doubleValue()).count();
|
|
|
+ BigDecimal paperCurrentFailRate = BigDecimal.valueOf(paperCurrentFailCount).divide(BigDecimal.valueOf(paperCurrentScoreList.size()), SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
|
|
|
+
|
|
|
+ // 查找赋分试算后数据
|
|
|
+ // 总体
|
|
|
+ List<Double> totalScoreList = taExamCourseRecordList.stream().map(e -> e.getAssignedScore().doubleValue()).collect(Collectors.toList());
|
|
|
+ DoubleSummaryStatistics totalStatistics = totalScoreList.stream().collect(Collectors.summarizingDouble(e -> e));
|
|
|
+ double totalAvgScore = totalStatistics.getAverage();
|
|
|
+ long totalFailCount = totalScoreList.stream().filter(e -> e < passScore.doubleValue()).count();
|
|
|
+ BigDecimal totalFailRate = BigDecimal.valueOf(totalFailCount).divide(BigDecimal.valueOf(totalScoreList.size()), SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
|
|
|
+
|
|
|
+ // 应届
|
|
|
+ List<Double> currentScoreList = taExamCourseRecordList.stream().filter(TAExamCourseRecord::getStudentCurrent).map(e -> e.getAssignedScore().doubleValue()).collect(Collectors.toList());
|
|
|
+ DoubleSummaryStatistics currentStatistics = currentScoreList.stream().collect(Collectors.summarizingDouble(e -> e));
|
|
|
+ double currentAvgScore = currentStatistics.getAverage();
|
|
|
+ long currentFailCount = currentScoreList.stream().filter(e -> e < passScore.doubleValue()).count();
|
|
|
+ BigDecimal currentFailRate = BigDecimal.valueOf(currentFailCount).divide(BigDecimal.valueOf(currentScoreList.size()), SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
|
|
|
+
|
|
|
+ // 组装
|
|
|
+ trialCalculationResult.setTotalCount(totalCount);
|
|
|
+ trialCalculationResult.setCurrentCount(currentCount);
|
|
|
+ // - 卷面-总体
|
|
|
+ trialCalculationResult.setAvgScore(BigDecimal.valueOf(paperTotalAvgScore).setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
+ trialCalculationResult.setFailRate(paperTotalFailRate.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP));
|
|
|
+ trialCalculationResult.setFailCount((int) paperTotalFailCount);
|
|
|
+ // - 卷面-应届
|
|
|
+ trialCalculationResult.setCurrentAvgScore(BigDecimal.valueOf(paperCurrentAvgScore).setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
+ trialCalculationResult.setCurrentFailRate(paperCurrentFailRate.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP));
|
|
|
+ trialCalculationResult.setCurrentFailCount((int) paperCurrentFailCount);
|
|
|
+ // - 赋分-总体
|
|
|
+ trialCalculationResult.setAvgScoreAssign(BigDecimal.valueOf(totalAvgScore).setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
+ trialCalculationResult.setFailRateAssign(totalFailRate.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP));
|
|
|
+ trialCalculationResult.setFailCountAssign((int) totalFailCount);
|
|
|
+ // - 赋分-应届
|
|
|
+ trialCalculationResult.setCurrentAvgScoreAssign(BigDecimal.valueOf(currentAvgScore).setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
+ trialCalculationResult.setCurrentFailRateAssign(currentFailRate.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP));
|
|
|
+ trialCalculationResult.setCurrentFailCountAssign((int) currentFailCount);
|
|
|
}
|
|
|
- int totalCount = taExamCourseRecordList.size();
|
|
|
- int currentCount = (int) taExamCourseRecordList.stream().filter(TAExamCourseRecord::getStudentCurrent).count();
|
|
|
-
|
|
|
- // 查找卷面数据
|
|
|
- // 总体
|
|
|
- List<Double> paperTotalScoreList = taExamCourseRecordList.stream().map(e -> e.getTotalScore().doubleValue()).collect(Collectors.toList());
|
|
|
- DoubleSummaryStatistics paperTotalStatistics = paperTotalScoreList.stream().collect(Collectors.summarizingDouble(e -> e));
|
|
|
- double paperTotalAvgScore = paperTotalStatistics.getAverage();
|
|
|
- long paperTotalFailCount = paperTotalScoreList.stream().filter(e -> e < passScore.doubleValue()).count();
|
|
|
- BigDecimal paperTotalFailRate = BigDecimal.valueOf(paperTotalFailCount).divide(BigDecimal.valueOf(paperTotalScoreList.size()), SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- // 应届
|
|
|
- List<Double> paperCurrentScoreList = taExamCourseRecordList.stream().filter(TAExamCourseRecord::getStudentCurrent).map(e -> e.getTotalScore().doubleValue()).collect(Collectors.toList());
|
|
|
- DoubleSummaryStatistics paperCurrentStatistics = paperCurrentScoreList.stream().collect(Collectors.summarizingDouble(e -> e));
|
|
|
- double paperCurrentAvgScore = paperCurrentStatistics.getAverage();
|
|
|
- long paperCurrentFailCount = paperCurrentScoreList.stream().filter(e -> e < passScore.doubleValue()).count();
|
|
|
- BigDecimal paperCurrentFailRate = BigDecimal.valueOf(paperCurrentFailCount).divide(BigDecimal.valueOf(paperCurrentScoreList.size()), SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- // 查找赋分试算后数据
|
|
|
- // 总体
|
|
|
- List<Double> totalScoreList = taExamCourseRecordList.stream().map(e -> e.getAssignedScore().doubleValue()).collect(Collectors.toList());
|
|
|
- DoubleSummaryStatistics totalStatistics = totalScoreList.stream().collect(Collectors.summarizingDouble(e -> e));
|
|
|
- double totalAvgScore = totalStatistics.getAverage();
|
|
|
- long totalFailCount = totalScoreList.stream().filter(e -> e < passScore.doubleValue()).count();
|
|
|
- BigDecimal totalFailRate = BigDecimal.valueOf(totalFailCount).divide(BigDecimal.valueOf(totalScoreList.size()), SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- // 应届
|
|
|
- List<Double> currentScoreList = taExamCourseRecordList.stream().filter(TAExamCourseRecord::getStudentCurrent).map(e -> e.getAssignedScore().doubleValue()).collect(Collectors.toList());
|
|
|
- DoubleSummaryStatistics currentStatistics = currentScoreList.stream().collect(Collectors.summarizingDouble(e -> e));
|
|
|
- double currentAvgScore = currentStatistics.getAverage();
|
|
|
- long currentFailCount = currentScoreList.stream().filter(e -> e < passScore.doubleValue()).count();
|
|
|
- BigDecimal currentFailRate = BigDecimal.valueOf(currentFailCount).divide(BigDecimal.valueOf(currentScoreList.size()), SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- // 组装
|
|
|
- TrialCalculationResult trialCalculationResult = new TrialCalculationResult();
|
|
|
- trialCalculationResult.setTotalCount(totalCount);
|
|
|
- trialCalculationResult.setCurrentCount(currentCount);
|
|
|
- // - 卷面-总体
|
|
|
- trialCalculationResult.setAvgScore(BigDecimal.valueOf(paperTotalAvgScore).setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
- trialCalculationResult.setFailRate(paperTotalFailRate.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP));
|
|
|
- trialCalculationResult.setFailCount((int) paperTotalFailCount);
|
|
|
- // - 卷面-应届
|
|
|
- trialCalculationResult.setCurrentAvgScore(BigDecimal.valueOf(paperCurrentAvgScore).setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
- trialCalculationResult.setCurrentFailRate(paperCurrentFailRate.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP));
|
|
|
- trialCalculationResult.setCurrentFailCount((int) paperCurrentFailCount);
|
|
|
- // - 赋分-总体
|
|
|
- trialCalculationResult.setAvgScoreAssign(BigDecimal.valueOf(totalAvgScore).setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
- trialCalculationResult.setFailRateAssign(totalFailRate.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP));
|
|
|
- trialCalculationResult.setFailCountAssign((int) totalFailCount);
|
|
|
- // - 赋分-应届
|
|
|
- trialCalculationResult.setCurrentAvgScoreAssign(BigDecimal.valueOf(currentAvgScore).setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
- trialCalculationResult.setCurrentFailRateAssign(currentFailRate.setScale(SystemConstant.CALCULATE_SCALE, BigDecimal.ROUND_HALF_UP));
|
|
|
- trialCalculationResult.setCurrentFailCountAssign((int) currentFailCount);
|
|
|
-
|
|
|
return trialCalculationResult;
|
|
|
}
|
|
|
|