Selaa lähdekoodia

解析套题问题

ting.yin 4 vuotta sitten
vanhempi
commit
3515cdcb0c

+ 7 - 7
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/OnlineExamThread.java

@@ -218,11 +218,11 @@ public class OnlineExamThread implements Runnable {
             subjectMap.put(subjectCode, subject);
             return subject;
         }
-        //保存paperjson
+        // 保存paperjson
         byte[] paperData = paperResult.getBytes(StandardCharsets.UTF_8);
         fileService.uploadPaper(new ByteArrayInputStream(paperData), BinaryUtil.encodeMD5(paperData), examId,
                 subjectCode, FormatType.JSON);
-        //保存subject
+        // 保存subject
         subject = new ExamSubject();
         subject.setExamId(examId);
         subject.setCode(subjectCode);
@@ -235,7 +235,7 @@ public class OnlineExamThread implements Runnable {
         subject.setUploadCount(0);
         subjectService.save(subject);
         subjectMap.put(subjectCode, subject);
-        //保存question
+        // 保存question
         JSONObject paperJson = JSONObject.fromObject(paperResult);
         JSONArray questionArray = JSONArray.fromObject(paperJson.getString("details"));
         double totalScore = 0d;
@@ -247,10 +247,10 @@ public class OnlineExamThread implements Runnable {
             JSONArray qArray = questionJson.getJSONArray("questions");
             for (int j = 0; j < qArray.size(); j++) {
                 JSONObject sub = qArray.getJSONObject(j);
-                if (!sub.getJSONObject("subQuestions").isNullObject()) {
+                if (sub.get("subQuestions") != null) {
                     JSONArray subJson = sub.getJSONArray("subQuestions");
                     for (int k = 0; k < subJson.size(); k++) {
-                        JSONObject question = subJson.getJSONObject(j);
+                        JSONObject question = subJson.getJSONObject(k);
                         ExamQuestion q = new ExamQuestion();
                         q.setExamId(examId);
                         q.setSubjectCode(subjectCode);
@@ -287,11 +287,11 @@ public class OnlineExamThread implements Runnable {
             }
         }
         questionService.save(list);
-        //保存group
+        // 保存group
         MarkGroup group = new MarkGroup(examId, subjectCode, 1, null, totalScore, 0d, null, null,
                 MarkMode.COMMON.toString(), 0, false, false, null);
         groupService.save(group);
-        
+
         subjectService.updateScore(examId, subjectCode, false, totalScore);
         return subject;
     }

+ 8 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/dataSync.jsp

@@ -32,6 +32,14 @@
                     $(".sourceDiv").hide();
                 }
             });
+			if ($("#source").val()==1) {
+                $(".sourceDiv").show();
+            } 
+            if($("#source").val()==2) {
+            	$("#rootOrgId").attr("value", "");
+            	$("#appId").attr("value", "");
+                $(".sourceDiv").hide();
+            }
 		});
 	</script>
 </head>

+ 17 - 5
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/jsonView.jsp

@@ -54,14 +54,15 @@
                         let questions = data || [];
                         for (var j in questions) {
                         	var question = questions[j];
-                        	let paperQuestion = findQuestion(question.mainNumber, question.subNumber, paperqQuestions)
+                        	var subNumber = question.subIndex==null?question.subNumber:question.subNumber+"-"+question.subIndex;
+                        	let paperQuestion = findQuestion(question.mainNumber, subNumber, paperqQuestions)
                             // 按题号过滤
-                            if (questionArr[question.mainNumber + "." + question.subNumber] === true || questionNumbers == "") {
+                            if (questionArr[question.mainNumber + "." + subNumber] === true || questionNumbers == "") {
                                 let numberTitle = {
                                     "blocks": [{
                                         "type": "text",
                                         "param": {"bold": true},
-                                        "value": "题号:" + question.mainNumber + "-" + question.subNumber
+                                        "value": "题号:" + question.mainNumber + "-" + subNumber
                                     }]
                                 };
                                 let bodyTitle = {
@@ -82,7 +83,7 @@
                                             "italic": true,
                                             "danger": true
                                         },
-                                        "value": "(字数统计:" + jsonTextCount(JSON.parse(question.answer)) + ")"
+                                        "value": "(字数统计:" + jsonTextCount(question.answer) + ")"
                                     }]
                                 };
                                 let standardTitle = {
@@ -98,9 +99,10 @@
                                 if (paperQuestion.parentBody != null && paperQuestion.parentBody != undefined) {
                                     $(renderRichText(paperQuestion.parentBody)).appendTo(this.holder);
                                 }
+                                
                                 $(renderRichText(paperQuestion.body)).appendTo(this.holder);
                                 $(renderSection(answerTitle)).appendTo(this.holder);
-                                let questionAnswer =renderRichText( JSON.parse(question.answer));
+                                let questionAnswer =renderRichText(question.answer);
                                 questionAnswer.forEach(node => {
                                     $(node).appendTo(this.holder);
                                 })
@@ -175,6 +177,16 @@
                         if (detail.questions[j].number == subNumber) {
                             return detail.questions[j]
                         }
+                        if(detail.questions[j].subQuestions!=undefined){
+                        	for (let k in detail.questions[j].subQuestions) {
+                        		var sub = detail.questions[j].number+'-'+detail.questions[j].subQuestions[k].number;
+                        		if (sub == subNumber) {
+                        			var q =detail.questions[j].subQuestions[k];
+                        			q.parentBody = detail.questions[j].body;
+                                    return q;
+                                }
+                        	}
+                        }
                     }
                 }
             }

+ 14 - 3
stmms-web/src/main/webapp/static/mark-json/js/json-view.js

@@ -88,7 +88,7 @@ JsonView.prototype.render = function () {
                 $(renderRichText(question.body)).appendTo(this.holder);
                 $(renderSection(answerTitle)).appendTo(this.holder);
                 jsons.forEach(node => {
-                	JSON.parse(node.answer).forEach(node => {
+                	node.answer.forEach(node => {
                         $(renderRichText(node)).appendTo(this.holder);
                     });
                 })
@@ -114,7 +114,7 @@ JsonView.prototype.textCount = function (jsons) {
     jsons = Array.isArray(jsons) ? jsons : []
     let count = 0
     jsons.forEach(data => {
-        count += this.jsonTextCount(JSON.parse(data.answer))
+        count += this.jsonTextCount(data.answer)
     })
     return count;
 }
@@ -143,7 +143,8 @@ JsonView.prototype.findJson = function (mainNumber, subNumber, jsonData) {
     jsonData = Array.isArray(jsonData) ? jsonData : {}
     let result = []
     for (let i in jsonData) {
-        if (jsonData[i].mainNumber === mainNumber && jsonData[i].subNumber == subNumber) {
+    	var sub = jsonData[i].subIndex==null?jsonData[i].subNumber:jsonData[i].subNumber+"-"+jsonData[i].subIndex;
+        if (jsonData[i].mainNumber === mainNumber && sub == subNumber) {
             result.push(jsonData[i])
         }
     }
@@ -160,6 +161,16 @@ JsonView.prototype.findQuestion = function (mainNumber, subNumber, paperData) {
                     if (detail.questions[j].number == subNumber) {
                         return detail.questions[j]
                     }
+                    if(detail.questions[j].subQuestions!=undefined){
+                    	for (let k in detail.questions[j].subQuestions) {
+                    		var sub = detail.questions[j].number+'-'+detail.questions[j].subQuestions[k].number;
+                    		if (sub == subNumber) {
+                    			var q =detail.questions[j].subQuestions[k];
+                    			q.parentBody = detail.questions[j].body;
+                                return q;
+                            }
+                    	}
+                    }
                 }
             }
         }