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

机考同步时判断题按true为A,false为B

ting.yin 4 лет назад
Родитель
Сommit
f84d4710f4

+ 29 - 21
stmms-web/src/main/java/cn/com/qmth/stmms/admin/utils/PaperJsonUtils.java

@@ -19,7 +19,7 @@ public class PaperJsonUtils {
     public static final String ID = "id";
 
     public static final String[] answerArray = new String[] { "#", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
-            "K", "L" };
+            "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
 
     public static Map<Boolean, List<ExamQuestion>> toSubject(ExamSubject subject, String text) {
         JSONObject paperJson = JSONObject.fromObject(text);
@@ -41,7 +41,6 @@ public class PaperJsonUtils {
                         ExamQuestion q = new ExamQuestion();
                         q.setExamId(subject.getExamId());
                         q.setSubjectCode(subject.getCode());
-                        q.setPaperType("#");
                         q.setMainNumber(mainNumber);
                         String subNumber = sub.getString("number") + "-" + question.getString("number");
                         q.setSubNumber(subNumber);
@@ -52,17 +51,22 @@ public class PaperJsonUtils {
                         int structType = question.getInt("structType");
                         if (structType == 1 || structType == 2 || structType == 3) {
                             q.setObjective(true);
+                            q.setPaperType("#");
                             String answer = "";
-                            Object listArray = question.get("answer");
-                            if (listArray instanceof JSONArray) {
-                                JSONArray jsonArray = (JSONArray) listArray;
-                                for (int l = 0; l < jsonArray.size(); l++) {
-                                    int index = jsonArray.getInt(l);
-                                    answer = answer + answerArray[index];
+                            if (structType == 3) {
+                                answer = question.getBoolean("answer") ? "A" : "B";
+                            } else {
+                                Object listArray = question.get("answer");
+                                if (listArray instanceof JSONArray) {
+                                    JSONArray jsonArray = (JSONArray) listArray;
+                                    for (int l = 0; l < jsonArray.size(); l++) {
+                                        int index = jsonArray.getInt(l);
+                                        answer = answer + answerArray[index];
+                                    }
+                                } else if (listArray instanceof JSONObject) {
+                                    int index = question.getInt("answer");
+                                    answer = answerArray[index];
                                 }
-                            } else if (listArray instanceof JSONObject) {
-                                int index = question.getInt("answer");
-                                answer = answerArray[index];
                             }
                             q.setAnswer(answer);
                             olist.add(q);
@@ -75,7 +79,6 @@ public class PaperJsonUtils {
                     ExamQuestion q = new ExamQuestion();
                     q.setExamId(subject.getExamId());
                     q.setSubjectCode(subject.getCode());
-                    q.setPaperType("#");
                     q.setMainNumber(mainNumber);
                     String subNumber = sub.getString("number");
                     q.setSubNumber(subNumber);
@@ -86,17 +89,22 @@ public class PaperJsonUtils {
                     int structType = sub.getInt("structType");
                     if (structType == 1 || structType == 2 || structType == 3) {
                         q.setObjective(true);
+                        q.setPaperType("#");
                         String answer = "";
-                        Object listArray = sub.get("answer");
-                        if (listArray instanceof JSONArray) {
-                            JSONArray jsonArray = (JSONArray) listArray;
-                            for (int l = 0; l < jsonArray.size(); l++) {
-                                int index = jsonArray.getInt(l);
-                                answer = answer + answerArray[index];
+                        if (structType == 3) {
+                            answer = sub.getBoolean("answer") ? "A" : "B";
+                        } else {
+                            Object listArray = sub.get("answer");
+                            if (listArray instanceof JSONArray) {
+                                JSONArray jsonArray = (JSONArray) listArray;
+                                for (int l = 0; l < jsonArray.size(); l++) {
+                                    int index = jsonArray.getInt(l);
+                                    answer = answer + answerArray[index];
+                                }
+                            } else if (listArray instanceof JSONObject) {
+                                int index = sub.getInt("answer");
+                                answer = answerArray[index];
                             }
-                        } else if (listArray instanceof JSONObject) {
-                            int index = sub.getInt("answer");
-                            answer = answerArray[index];
                         }
                         q.setAnswer(answer);
                         olist.add(q);

+ 4 - 4
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/FileController.java

@@ -237,8 +237,6 @@ public class FileController extends BaseApiController {
                 }
                 List<ExamQuestion> oList = map.get(Boolean.TRUE);
                 questionService.save(oList);
-                subjectService.updateScore(examId, subjectCode, true,
-                        questionService.sumTotalScore(examId, subjectCode, true));
                 examService.updateObjectiveStatus(examId, ObjectiveStatus.WAITING);
                 // 主观题有分组不更新
                 List<MarkGroup> groups = groupService.findByExamAndSubject(examId, subject.getCode());
@@ -249,13 +247,15 @@ public class FileController extends BaseApiController {
                     }
                     List<ExamQuestion> sList = map.get(Boolean.FALSE);
                     questionService.save(sList);
-                    subjectService.updateScore(examId, subjectCode, false,
-                            questionService.sumTotalScore(examId, subjectCode, false));
                 }
             }
             fileService.uploadPaper(file.getInputStream(), md5, examId, subjectCode, format);
             subject.setPaperFileType(format);
             subjectService.save(subject);
+            subjectService.updateScore(examId, subjectCode, true,
+                    questionService.sumTotalScore(examId, subjectCode, true));
+            subjectService.updateScore(examId, subjectCode, false,
+                    questionService.sumTotalScore(examId, subjectCode, false));
         } catch (Exception e) {
             log.error("paper upload error", e);
             throw ApiException.FILE_UPLOAD_ERROR.replaceMessage("paper upload error: " + e.getMessage());