Przeglądaj źródła

修复套题小题分的bug

宋悦 7 lat temu
rodzic
commit
3ad0b328d4

+ 33 - 2
cqb-comm-utils/pom.xml

@@ -103,7 +103,7 @@
         <dependency>
             <groupId>org.docx4j</groupId>
             <artifactId>docx4j</artifactId>
-            <version>3.3.3</version>
+            <version>3.3.6</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.slf4j</groupId>
@@ -119,7 +119,7 @@
         <dependency>
             <groupId>org.docx4j</groupId>
             <artifactId>docx4j-ImportXHTML</artifactId>
-            <version>3.3.1</version>
+            <version>3.3.6</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.slf4j</groupId>
@@ -207,5 +207,36 @@
 		  <artifactId>java-sdk</artifactId>
 		  <version>3.16</version>
 		</dependency>
+
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-codec</artifactId>
+            <version>1.9.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-transcoder</artifactId>
+            <version>1.9.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-svg-dom</artifactId>
+            <version>1.9.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>net.arnx</groupId>
+            <artifactId>wmf2svg</artifactId>
+            <version>0.9.8</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.docx4j</groupId>
+            <artifactId>docx4j-export-fo</artifactId>
+            <version>3.3.6</version>
+        </dependency>
+
     </dependencies>
 </project>

+ 49 - 0
cqb-comm-utils/src/main/java/com/qmth/cqb/utils/enums/PaperStructType.java

@@ -0,0 +1,49 @@
+package com.qmth.cqb.utils.enums;
+
+import org.omg.CORBA.PRIVATE_MEMBER;
+
+/**
+ * @describle 试卷结构类型
+ * @author weiwenhai
+ * @date  2017.12.11
+ */
+public enum PaperStructType {
+
+	/**
+	 * 简易组卷
+	 */
+	SIMPLE("简易组卷"),
+
+	/**
+	 * 精确组卷
+	 */
+	EXACT("精确组卷"),
+	
+	/**
+	 * 蓝图组卷
+	 */
+	BLUEPRINT("蓝图组卷");
+	
+	private String name;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	private PaperStructType(String name){
+		this.name = name;
+	}
+	
+	public static PaperStructType strToEnum(String str){
+    	for(PaperStructType paperStructType:PaperStructType.values()){
+    		if(paperStructType.name().equals(str)){
+    			return paperStructType;
+    		}
+    	}
+    	return null;
+    }
+}

+ 22 - 14
cqb-gen-paper/src/main/java/com/qmth/cqb/genpaper/service/GenPaperService.java

@@ -12,6 +12,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
+import com.qmth.cqb.utils.enums.PaperStructType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -131,7 +132,7 @@ public class GenPaperService {
             paper.setUnitCount(this.getTotalQuesNum(paperDetailunits));
             paper.setPaperType(PaperType.GENERATE);
             // 数据入库
-            paper = this.persistentPaper(paperDetailunits, paperDetails, paper);
+            paper = this.persistentPaper(PaperStructType.EXACT,paperDetailunits, paperDetails, paper);
             msg = "success";
             paperMsgMap.put("paper", paper);
             paperMsgMap.put("msg", msg);
@@ -148,7 +149,9 @@ public class GenPaperService {
     private boolean checkQuesType(UnitContext uc,Question question){
         List<String> quesNames = uc.getUnitStruct().getQuesNames();
         if(quesNames != null && quesNames.size() > 0){
-            if(quesNames.contains(question.getQuesName()) && !uc.finish() && (uc.getUnitStruct().getQuestionType() == question.getQuestionType())){
+            if(quesNames.contains(question.getQuesName())
+                    && !uc.finish()
+                    && (uc.getUnitStruct().getQuestionType() == question.getQuestionType())){
                 return true;
             }
         }
@@ -347,7 +350,7 @@ public class GenPaperService {
         }
         Paper paper = this.constuctPaperByPaperDetails(details, genPaperDto);
         paper.setUnitCount(this.getTotalQuesNum(saveUnits));// 设置小题数量,需统计subQuestion
-        paper = this.persistentPaper(saveUnits, details, paper);
+        paper = this.persistentPaper(PaperStructType.SIMPLE,saveUnits, details, paper);
         return paper;
 
     }
@@ -360,7 +363,10 @@ public class GenPaperService {
      * @param paper
      * @return
      */
-    public Paper persistentPaper(List<PaperDetailUnit> selectedUnits, List<PaperDetail> details, Paper paper) {
+    public Paper persistentPaper(PaperStructType paperStructType,
+                                 List<PaperDetailUnit> selectedUnits,
+                                 List<PaperDetail> details,
+                                 Paper paper) {
         paper = paperRepo.save(paper);
         for (PaperDetail pd : details) {
             pd.setPaper(paper);
@@ -381,17 +387,19 @@ public class GenPaperService {
         		paperDetailUnit.setNumber(index);
 
                 //重新计算套题小题分
-                Question question = paperDetailUnit.getQuestion();
-                if(question != null && question.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION){
-                    List<Question> subQuestions = question.getSubQuestions();
-                    List<Double> subScoreList = new ArrayList<>();
-                    if(subQuestions != null && subQuestions.size() > 0){
-                        for(Question subQuestion:subQuestions){
-                            double score = paperDetailUnit.getScore()/ subQuestions.size();
-                            BigDecimal formatScore = new BigDecimal(score);
-                            subScoreList.add(formatScore.setScale(2, RoundingMode.HALF_UP).doubleValue());
+                if(paperStructType != PaperStructType.SIMPLE){
+                    Question question = paperDetailUnit.getQuestion();
+                    if(question != null && question.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION){
+                        List<Question> subQuestions = question.getSubQuestions();
+                        List<Double> subScoreList = new ArrayList<>();
+                        if(subQuestions != null && subQuestions.size() > 0){
+                            for(Question subQuestion:subQuestions){
+                                double score = paperDetailUnit.getScore()/ subQuestions.size();
+                                BigDecimal formatScore = new BigDecimal(score);
+                                subScoreList.add(formatScore.setScale(2, RoundingMode.HALF_UP).doubleValue());
+                            }
+                            paperDetailUnit.setSubScoreList(subScoreList);
                         }
-                        paperDetailUnit.setSubScoreList(subScoreList);
                     }
                 }
         	}