|
@@ -109,34 +109,36 @@ public class ScoreCalculateThread implements Runnable {
|
|
|
List<ExamSubject> examSubjects = subjectService.list(exam.getId());
|
|
|
for (ExamSubject examSubject : examSubjects) {
|
|
|
Set<String> campusNameList = campusNameMap.get(examSubject.getCode());
|
|
|
- for (String campusName : campusNameList) {
|
|
|
- List<ExamQuestion> questions = this.findQuestionList(examSubject.getCode(), false);
|
|
|
- Long count = studentService.countByExamIdAndSubjectCodeAndCampus(exam.getId(),examSubject.getCode(), campusName, true,false);
|
|
|
- for (ExamQuestion examQuestion : questions) {
|
|
|
- ScoreRate scoreRate = scoreRateService.findOne(exam.getId(), examSubject.getCode(), campusName,false, examQuestion.getMainNumber(),examQuestion.getSubNumber());
|
|
|
- if (scoreRate == null) {
|
|
|
- scoreRate = new ScoreRate();
|
|
|
- scoreRate.setExamId(exam.getId());
|
|
|
- scoreRate.setCampusName(campusName);
|
|
|
- scoreRate.setSubjectCode(examSubject.getCode());
|
|
|
- scoreRate.setMainNumber(examQuestion.getMainNumber());
|
|
|
- scoreRate.setSubNumber(examQuestion.getSubNumber());
|
|
|
- scoreRate.setObjective(examQuestion.isObjective());
|
|
|
- scoreRate.setMainTitle(examQuestion.getMainTitle());
|
|
|
- scoreRate.setTotalScore(examQuestion.getTotalScore());
|
|
|
- }
|
|
|
- String key = getKey(examSubject.getCode(), campusName,examQuestion.getQuestionNumber());
|
|
|
- BigDecimal bg = new BigDecimal(scoreRateMap.get(key) * 1.00 / count);
|
|
|
- double avgScore = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
- if(scoreRate.getAvgScore()==null || scoreRate.getAvgScore()!=avgScore){
|
|
|
- scoreRate.setAvgScore(avgScore);
|
|
|
- }
|
|
|
- if(scoreRate.getTotalScore()!=examQuestion.getTotalScore()){
|
|
|
- scoreRate.setTotalScore(examQuestion.getTotalScore());
|
|
|
- }
|
|
|
- scoreRateService.save(scoreRate);
|
|
|
- }
|
|
|
- }
|
|
|
+ if(campusNameList != null){
|
|
|
+ for (String campusName : campusNameList) {
|
|
|
+ List<ExamQuestion> questions = this.findQuestionList(examSubject.getCode(), false);
|
|
|
+ Long count = studentService.countByExamIdAndSubjectCodeAndCampus(exam.getId(),examSubject.getCode(), campusName, true,false);
|
|
|
+ for (ExamQuestion examQuestion : questions) {
|
|
|
+ ScoreRate scoreRate = scoreRateService.findOne(exam.getId(), examSubject.getCode(), campusName,false, examQuestion.getMainNumber(),examQuestion.getSubNumber());
|
|
|
+ if (scoreRate == null) {
|
|
|
+ scoreRate = new ScoreRate();
|
|
|
+ scoreRate.setExamId(exam.getId());
|
|
|
+ scoreRate.setCampusName(campusName);
|
|
|
+ scoreRate.setSubjectCode(examSubject.getCode());
|
|
|
+ scoreRate.setMainNumber(examQuestion.getMainNumber());
|
|
|
+ scoreRate.setSubNumber(examQuestion.getSubNumber());
|
|
|
+ scoreRate.setObjective(examQuestion.isObjective());
|
|
|
+ scoreRate.setMainTitle(examQuestion.getMainTitle());
|
|
|
+ scoreRate.setTotalScore(examQuestion.getTotalScore());
|
|
|
+ }
|
|
|
+ String key = getKey(examSubject.getCode(), campusName,examQuestion.getQuestionNumber());
|
|
|
+ BigDecimal bg = new BigDecimal(scoreRateMap.get(key) * 1.00 / count);
|
|
|
+ double avgScore = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ if(scoreRate.getAvgScore()==null || scoreRate.getAvgScore()!=avgScore){
|
|
|
+ scoreRate.setAvgScore(avgScore);
|
|
|
+ }
|
|
|
+ if(scoreRate.getTotalScore()!=examQuestion.getTotalScore()){
|
|
|
+ scoreRate.setTotalScore(examQuestion.getTotalScore());
|
|
|
+ }
|
|
|
+ scoreRateService.save(scoreRate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|