Просмотр исходного кода

Merge remote-tracking branch 'origin/dev1130' into dev1130

宋悦 7 лет назад
Родитель
Сommit
5aa1e89363

+ 6 - 6
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/PaperDetailUnitServiceImpl.java

@@ -95,11 +95,12 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService{
                         // 匹配到子题
                         subScoreList.set(index - 1, pduExp.getScore());
                         oldPdu.getQuestion().getSubQuestions().set(index - 1, pduExp.getQuestion());
-                        //重新计算套题的难度,公开度
+                       //重新计算套题的难度,公开度
                         boolean publicity = false;
                         double totalSum = 0d;
                         double totalDou = 0d;
-                        for(Question subQuestion:oldPdu.getQuestion().getSubQuestions()){
+                        for(int i =0;i<oldPdu.getQuestion().getSubQuestions().size();i++){
+                        	Question subQuestion = oldPdu.getQuestion().getSubQuestions().get(i);
                 			//设置公开度
                 			if(subQuestion.getPublicity()){
                 				publicity = true;
@@ -107,10 +108,10 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService{
                 			if(subQuestion.getDifficultyDegree() == null){
                 				subQuestion.setDifficultyDegree(0.5);
                 			}
-                			totalSum = subQuestion.getDifficultyDegree()*subQuestion.getScore() + totalSum;
-                			totalDou = subQuestion.getScore() + totalDou;
+                			totalSum = subQuestion.getDifficultyDegree()*subScoreList.get(i) + totalSum;
+                			totalDou = subScoreList.get(i) + totalDou;
                 		}
-                		BigDecimal b = new BigDecimal(totalSum / totalDou);  
+                		BigDecimal b = new BigDecimal(totalSum / totalDou);
             			Double difficulty = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
             			oldPdu.getQuestion().setDifficultyDegree(difficulty);
             			oldPdu.getQuestion().setPublicity(publicity);
@@ -122,7 +123,6 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService{
                 }
                 // 更新套题unit当前总分与子题分数
                 oldPdu.setSubScoreList(subScoreList);
-              
             }
         } else {
             oldPdu.setQuestion(quesService.saveQues(pduExp.getQuestion()));

+ 23 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/PaperServiceImpl.java

@@ -640,6 +640,29 @@ public class PaperServiceImpl implements PaperService{
 				List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperDetailOrderByNumber(paperDetail);
 				if(paperDetailUnits!=null && paperDetailUnits.size()>0){
 					for(PaperDetailUnit paperDetailUnit:paperDetailUnits){
+						//如果为套题,重新计算难度
+						if(paperDetailUnit.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION){
+							//重新计算套题的难度,公开度
+	                        boolean publicity = false;
+	                        double totalSum = 0d;
+	                        double totalDou = 0d;
+							for(int i =0;i<paperDetailUnit.getQuestion().getSubQuestions().size();i++){
+	                        	Question subQuestion = paperDetailUnit.getQuestion().getSubQuestions().get(i);
+	                			//设置公开度
+	                			if(subQuestion.getPublicity()){
+	                				publicity = true;
+	                			}
+	                			if(subQuestion.getDifficultyDegree() == null){
+	                				subQuestion.setDifficultyDegree(0.5);
+	                			}
+	                			totalSum = subQuestion.getDifficultyDegree()*paperDetailUnit.getSubScoreList().get(i) + totalSum;
+	                			totalDou = paperDetailUnit.getSubScoreList().get(i) + totalDou;
+	                		}
+	                		BigDecimal b = new BigDecimal(totalSum / totalDou);
+	            			Double difficulty = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
+	            			paperDetailUnit.getQuestion().setDifficultyDegree(difficulty);
+	            			paperDetailUnit.setScore(totalDou);
+						}
 						//旧题没有难度值,需要重新赋值
 						if(paperDetailUnit.getQuestion().getDifficultyDegree()== null){
 							paperDetailUnit.getQuestion().setDifficultyDegree(0.5);