修改理论考试计算平均分

master
xiaoCJ 1 month ago
parent 8630ad3be5
commit 9dad07aa61

@ -114,32 +114,32 @@ public class ScoreRankServiceImpl implements ScoreRankService {
Integer resourceStatus = stuTraining.getResourceLearningCompleteStatus() == null ? 0 : stuTraining.getResourceLearningCompleteStatus(); Integer resourceStatus = stuTraining.getResourceLearningCompleteStatus() == null ? 0 : stuTraining.getResourceLearningCompleteStatus();
Integer learningEvalCompleteStatus = stuTraining.getLearningEvalCompleteStatus() == null ? 9999 : stuTraining.getLearningEvalCompleteStatus(); Integer learningEvalCompleteStatus = stuTraining.getLearningEvalCompleteStatus() == null ? 9999 : stuTraining.getLearningEvalCompleteStatus();
Integer expStatus = stuTraining.getExpTrainingCompleteStatus() == null ? 9999 : stuTraining.getExpTrainingCompleteStatus(); Integer expStatus = stuTraining.getExpTrainingCompleteStatus() == null ? 9999 : stuTraining.getExpTrainingCompleteStatus();
if (knowledgeStatus > 5) { if(knowledgeStatus>5){
knowledgeStatus = 5; knowledgeStatus=5;
} }
if (resourceStatus > 5) { if(resourceStatus>5){
resourceStatus = 5; resourceStatus=5;
} }
StudentScoreWeight studentScoreWeight = studentScoreWeightMap.get(stuTraining.getChapterName()); StudentScoreWeight studentScoreWeight = studentScoreWeightMap.get(stuTraining.getChapterName());
BigDecimal summaryScore = studentScoreWeight.getSummaryOfKnowledgeScore().multiply(BigDecimal.valueOf(knowledgeStatus)).multiply(studentScoreWeight.getSummaryOfKnowledgeWeight()); BigDecimal summaryScore = studentScoreWeight.getSummaryOfKnowledgeScore().multiply(BigDecimal.valueOf(knowledgeStatus)).multiply(studentScoreWeight.getSummaryOfKnowledgeWeight());
BigDecimal resourceScore = studentScoreWeight.getResourceLearningScore().multiply(BigDecimal.valueOf(resourceStatus)).multiply(studentScoreWeight.getResourceLearningWeight()); BigDecimal resourceScore = studentScoreWeight.getResourceLearningScore().multiply(BigDecimal.valueOf(resourceStatus)).multiply(studentScoreWeight.getResourceLearningWeight());
BigDecimal learningScore = BigDecimal.valueOf(0); BigDecimal learningScore= BigDecimal.valueOf(0);
BigDecimal experimentalScore = BigDecimal.valueOf(0); BigDecimal experimentalScore= BigDecimal.valueOf(0);
if (learningEvalCompleteStatus != 9999) { if(learningEvalCompleteStatus!=9999){
if (learningEvalCompleteStatus <= 10) { if(learningEvalCompleteStatus<=10){
learningScore = BigDecimal.valueOf(100).subtract(studentScoreWeight.getLearningAssessmentScore().multiply(BigDecimal.valueOf(learningEvalCompleteStatus))).multiply(studentScoreWeight.getLearningAssessmentWeight()); learningScore = BigDecimal.valueOf(100).subtract(studentScoreWeight.getLearningAssessmentScore().multiply(BigDecimal.valueOf(learningEvalCompleteStatus))).multiply(studentScoreWeight.getLearningAssessmentWeight());
} }
} }
if (expStatus != 9999) { if(expStatus!=9999){
if (expStatus <= 5) { if(expStatus<=5){
experimentalScore = BigDecimal.valueOf(100).subtract(studentScoreWeight.getExperimentalTrainingScore().multiply(BigDecimal.valueOf(expStatus))).multiply(studentScoreWeight.getExperimentalTrainingWeight()); experimentalScore = BigDecimal.valueOf(100).subtract(studentScoreWeight.getExperimentalTrainingScore().multiply(BigDecimal.valueOf(expStatus))).multiply(studentScoreWeight.getExperimentalTrainingWeight());
} }
//财产分配特殊处理 //财产分配特殊处理
if ("11".equals(stuTraining.getChapterId())) { if("11".equals(stuTraining.getChapterId())){
if (stuTraining.getExpTrainingCompleteStatus().compareTo(100) > 0) { if(stuTraining.getExpTrainingCompleteStatus().compareTo(100)>0){
stuTraining.setExpTrainingCompleteStatus(100); stuTraining.setExpTrainingCompleteStatus(100);
} }
experimentalScore = BigDecimal.valueOf(stuTraining.getExpTrainingCompleteStatus()).multiply(studentScoreWeight.getExperimentalTrainingWeight()); experimentalScore= BigDecimal.valueOf(stuTraining.getExpTrainingCompleteStatus()).multiply(studentScoreWeight.getExperimentalTrainingWeight());
} }
} }
//计算报告分数 //计算报告分数
@ -147,7 +147,7 @@ public class ScoreRankServiceImpl implements ScoreRankService {
TrainingReportExample trainingReportExample = new TrainingReportExample(); TrainingReportExample trainingReportExample = new TrainingReportExample();
trainingReportExample.createCriteria().andChapterIdEqualTo(chapterId).andUserIdEqualTo(userId); trainingReportExample.createCriteria().andChapterIdEqualTo(chapterId).andUserIdEqualTo(userId);
List<TrainingReport> trainingReports = trainingReportMapper.selectByExample(trainingReportExample); List<TrainingReport> trainingReports = trainingReportMapper.selectByExample(trainingReportExample);
BigDecimal reportScore = BigDecimal.ZERO; BigDecimal reportScore=BigDecimal.ZERO;
if (!trainingReports.isEmpty()) { if (!trainingReports.isEmpty()) {
if (trainingReports.get(0).getTeacherScore() != null) { if (trainingReports.get(0).getTeacherScore() != null) {
reportScore = trainingReports.get(0).getTeacherScore().multiply(studentScoreWeight.getReportWeight()); reportScore = trainingReports.get(0).getTeacherScore().multiply(studentScoreWeight.getReportWeight());
@ -203,10 +203,10 @@ public class ScoreRankServiceImpl implements ScoreRankService {
long countCase = synthesisPlanClientMapper.countByExample(synthesisPlanClientExample); long countCase = synthesisPlanClientMapper.countByExample(synthesisPlanClientExample);
scoreRank.setCountCase((int) countCase); scoreRank.setCountCase((int) countCase);
StuSynthesisPlanScoreAndAvgScoreDto dto = trainingService.selectStuSynthesisPlanScoreList(userId, schoolId); StuSynthesisPlanScoreAndAvgScoreDto dto = trainingService.selectStuSynthesisPlanScoreList(userId,schoolId);
if (dto == null) { if(dto==null){
scoreRank.setZhghScore(BigDecimal.ZERO); scoreRank.setZhghScore(BigDecimal.ZERO);
} else { }else {
scoreRank.setZhghScore(dto.getAvgScore()); scoreRank.setZhghScore(dto.getAvgScore());
} }
@ -402,32 +402,32 @@ public class ScoreRankServiceImpl implements ScoreRankService {
Integer resourceStatus = stuTraining.getResourceLearningCompleteStatus() == null ? 0 : stuTraining.getResourceLearningCompleteStatus(); Integer resourceStatus = stuTraining.getResourceLearningCompleteStatus() == null ? 0 : stuTraining.getResourceLearningCompleteStatus();
Integer learningEvalCompleteStatus = stuTraining.getLearningEvalCompleteStatus() == null ? 9999 : stuTraining.getLearningEvalCompleteStatus(); Integer learningEvalCompleteStatus = stuTraining.getLearningEvalCompleteStatus() == null ? 9999 : stuTraining.getLearningEvalCompleteStatus();
Integer expStatus = stuTraining.getExpTrainingCompleteStatus() == null ? 9999 : stuTraining.getExpTrainingCompleteStatus(); Integer expStatus = stuTraining.getExpTrainingCompleteStatus() == null ? 9999 : stuTraining.getExpTrainingCompleteStatus();
if (knowledgeStatus > 5) { if(knowledgeStatus>5){
knowledgeStatus = 5; knowledgeStatus=5;
} }
if (resourceStatus > 5) { if(resourceStatus>5){
resourceStatus = 5; resourceStatus=5;
} }
StudentScoreWeight studentScoreWeight = studentScoreWeightMap.get(stuTraining.getChapterName()); StudentScoreWeight studentScoreWeight = studentScoreWeightMap.get(stuTraining.getChapterName());
BigDecimal summaryScore = studentScoreWeight.getSummaryOfKnowledgeScore().multiply(BigDecimal.valueOf(knowledgeStatus)).multiply(studentScoreWeight.getSummaryOfKnowledgeWeight()); BigDecimal summaryScore = studentScoreWeight.getSummaryOfKnowledgeScore().multiply(BigDecimal.valueOf(knowledgeStatus)).multiply(studentScoreWeight.getSummaryOfKnowledgeWeight());
BigDecimal resourceScore = studentScoreWeight.getResourceLearningScore().multiply(BigDecimal.valueOf(resourceStatus)).multiply(studentScoreWeight.getResourceLearningWeight()); BigDecimal resourceScore = studentScoreWeight.getResourceLearningScore().multiply(BigDecimal.valueOf(resourceStatus)).multiply(studentScoreWeight.getResourceLearningWeight());
BigDecimal learningScore = BigDecimal.valueOf(0); BigDecimal learningScore= BigDecimal.valueOf(0);
BigDecimal experimentalScore = BigDecimal.valueOf(0); BigDecimal experimentalScore= BigDecimal.valueOf(0);
if (learningEvalCompleteStatus != 9999) { if(learningEvalCompleteStatus!=9999){
if (learningEvalCompleteStatus <= 10) { if(learningEvalCompleteStatus<=10){
learningScore = BigDecimal.valueOf(100).subtract(studentScoreWeight.getLearningAssessmentScore().multiply(BigDecimal.valueOf(learningEvalCompleteStatus))).multiply(studentScoreWeight.getLearningAssessmentWeight()); learningScore = BigDecimal.valueOf(100).subtract(studentScoreWeight.getLearningAssessmentScore().multiply(BigDecimal.valueOf(learningEvalCompleteStatus))).multiply(studentScoreWeight.getLearningAssessmentWeight());
} }
} }
if (expStatus != 9999) { if(expStatus!=9999){
if (expStatus <= 5) { if(expStatus<=5){
experimentalScore = BigDecimal.valueOf(100).subtract(studentScoreWeight.getExperimentalTrainingScore().multiply(BigDecimal.valueOf(expStatus))).multiply(studentScoreWeight.getExperimentalTrainingWeight()); experimentalScore = BigDecimal.valueOf(100).subtract(studentScoreWeight.getExperimentalTrainingScore().multiply(BigDecimal.valueOf(expStatus))).multiply(studentScoreWeight.getExperimentalTrainingWeight());
} }
//财产分配特殊处理 //财产分配特殊处理
if ("11".equals(stuTraining.getChapterId())) { if("11".equals(stuTraining.getChapterId())){
if (stuTraining.getExpTrainingCompleteStatus().compareTo(100) > 0) { if(stuTraining.getExpTrainingCompleteStatus().compareTo(100)>0){
stuTraining.setExpTrainingCompleteStatus(100); stuTraining.setExpTrainingCompleteStatus(100);
} }
experimentalScore = BigDecimal.valueOf(stuTraining.getExpTrainingCompleteStatus()).multiply(studentScoreWeight.getExperimentalTrainingWeight()); experimentalScore= BigDecimal.valueOf(stuTraining.getExpTrainingCompleteStatus()).multiply(studentScoreWeight.getExperimentalTrainingWeight());
} }
} }
//计算报告分数 //计算报告分数
@ -435,9 +435,9 @@ public class ScoreRankServiceImpl implements ScoreRankService {
TrainingReportExample trainingReportExample = new TrainingReportExample(); TrainingReportExample trainingReportExample = new TrainingReportExample();
trainingReportExample.createCriteria().andChapterIdEqualTo(chapterId).andUserIdEqualTo(userId); trainingReportExample.createCriteria().andChapterIdEqualTo(chapterId).andUserIdEqualTo(userId);
List<TrainingReport> trainingReports = trainingReportMapper.selectByExample(trainingReportExample); List<TrainingReport> trainingReports = trainingReportMapper.selectByExample(trainingReportExample);
BigDecimal reportScore = BigDecimal.ZERO; BigDecimal reportScore=BigDecimal.ZERO;
if (!trainingReports.isEmpty()) { if (!trainingReports.isEmpty()) {
if (trainingReports.get(0).getTeacherScore() != null) { if (trainingReports.get(0).getTeacherScore() != null) { //todo 报告得分为0导致更新成绩报错这里加了一个判断
reportScore = trainingReports.get(0).getTeacherScore().multiply(studentScoreWeight.getReportWeight()); reportScore = trainingReports.get(0).getTeacherScore().multiply(studentScoreWeight.getReportWeight());
} }
} }
@ -492,10 +492,10 @@ public class ScoreRankServiceImpl implements ScoreRankService {
long countCase = synthesisPlanClientMapper.countByExample(synthesisPlanClientExample); long countCase = synthesisPlanClientMapper.countByExample(synthesisPlanClientExample);
scoreRank.setCountCase((int) countCase); scoreRank.setCountCase((int) countCase);
StuSynthesisPlanScoreAndAvgScoreDto dto = trainingService.selectStuSynthesisPlanScoreList(userId, schoolId); StuSynthesisPlanScoreAndAvgScoreDto dto = trainingService.selectStuSynthesisPlanScoreList(userId,schoolId);
if (dto == null) { if(dto==null){
scoreRank.setZhghScore(BigDecimal.ZERO); scoreRank.setZhghScore(BigDecimal.ZERO);
} else { }else {
scoreRank.setZhghScore(dto.getAvgScore()); scoreRank.setZhghScore(dto.getAvgScore());
} }

@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -247,7 +248,13 @@ public class TrainingServiceImpl implements TrainingService {
} }
StuSynthesisPlanScoreAndAvgScoreDto dto = new StuSynthesisPlanScoreAndAvgScoreDto(); StuSynthesisPlanScoreAndAvgScoreDto dto = new StuSynthesisPlanScoreAndAvgScoreDto();
dto.setList(returnList); dto.setList(returnList);
dto.setAvgScore(fenzi.divide(fenmu).setScale(4, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP)); if (fenzi.compareTo(BigDecimal.ZERO)<=0){
System.out.println();
}
//todo 报错舍去模式有问题,修改了四舍五入模式
dto.setAvgScore(fenzi.divide(fenmu,4, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100))
.setScale(2, RoundingMode.HALF_UP));
return dto; return dto;
} }
} }

Loading…
Cancel
Save