Преглед на файлове

修改导出试卷Word时,大题分数显示不准确BUG

chenken преди 8 години
родител
ревизия
79ee62ff1b
променени са 1 файла, в които са добавени 16 реда и са изтрити 8 реда
  1. 16 8
      cqb-paper/src/main/java/com/qmth/cqb/paper/service/export/ExportPaperAbstractService.java

+ 16 - 8
cqb-paper/src/main/java/com/qmth/cqb/paper/service/export/ExportPaperAbstractService.java

@@ -268,9 +268,9 @@ public abstract class ExportPaperAbstractService {
 	protected void setExpTitle(PaperDetailExp paperDetailExp) {
 		String title = "";
 		String totalScore = BigDecimal.valueOf(paperDetailExp.getScore()).stripTrailingZeros().toPlainString();
-		String unitScore = BigDecimal.valueOf(paperDetailExp.getPaperDetailUnits().get(0).getScore()).stripTrailingZeros().toPlainString();
 		QuesStructType type = paperDetailExp.getPaperDetailUnits().get(0).getQuestionType();
-		String scoreString = checkPaperDetailUnitScore(paperDetailExp) ? "每小题"+ unitScore + "分" : "";
+		String questionScore = checkPaperDetailUnitScore(paperDetailExp);
+		String scoreString = questionScore==null?"":"每小题"+questionScore+"分";
 		if (type == QuesStructType.SINGLE_ANSWER_QUESTION) {
 			paperDetailExp.setName("单项选择题");
 			title = "(本大题共" + paperDetailExp.getUnitCount() + "小题,"
@@ -298,18 +298,26 @@ public abstract class ExportPaperAbstractService {
 	 * 校验大题下的小题分数是不是一样
 	 * 
 	 * @param paperDetailExp
-	 * @return
+	 * @return  如果分数一样,返回分数
+	 * 			如果分数不一样,返回 null
 	 */
-	protected boolean checkPaperDetailUnitScore(PaperDetailExp paperDetailExp) {
+	protected String checkPaperDetailUnitScore(PaperDetailExp paperDetailExp) {
 		List<PaperDetailUnitExp> paperDetailUnitExps = paperDetailExp.getPaperDetailUnits();
 		Set<Double> scoreSet = new HashSet<Double>();
 		for (PaperDetailUnitExp unitExp : paperDetailUnitExps) {
 			if(unitExp.getQuestionType()==QuesStructType.NESTED_ANSWER_QUESTION){
-				return false;
+				List<Double> subScoreList =  unitExp.getSubScoreList();
+				for(Double score:subScoreList){
+					scoreSet.add(score);
+				}
+			}else{
+				scoreSet.add(unitExp.getScore());
 			}
-			scoreSet.add(unitExp.getScore());
 		}
-		return scoreSet.size() == 1;
+		if(scoreSet.size() == 1){
+			return scoreSet.iterator().next()+"";
+		}
+		return null;
 	}
 
 	protected void setUnitExpNumber(List<PaperDetailExp> paperDetails,int startIndxt) throws Exception {
@@ -509,7 +517,7 @@ public abstract class ExportPaperAbstractService {
      */
     protected void appendScoreToQuestionBody(List<PaperDetailExp> details) throws Exception{
     	for(PaperDetailExp paperDetailExp:details){
-    		if(!checkPaperDetailUnitScore(paperDetailExp)){
+    		if(checkPaperDetailUnitScore(paperDetailExp)==null){
     			for(PaperDetailUnitExp paperDetailUnit:paperDetailExp.getPaperDetailUnits()){
     				Question question = paperDetailUnit.getQuestion();
     				String questionBodyWord = appendScoreToQuestionBody(question.getQuesBodyWord(),paperDetailUnit.getScore());