1
0
ting.yin vor 4 Jahren
Ursprung
Commit
53295bbcc9

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamQuestionService.java

@@ -72,4 +72,6 @@ public interface ExamQuestionService {
 
     Set<String> FindSubjectCodeByExamIdAndObjectiveAndGroupNumberIsNull(int examId, boolean objective);
 
+    void deleteByExamAndSubject(Integer examId, String subjectCode);
+
 }

+ 7 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamQuestionServiceImpl.java

@@ -263,4 +263,11 @@ public class ExamQuestionServiceImpl extends BaseQueryService<ExamQuestion> impl
     public Set<String> FindSubjectCodeByExamIdAndObjectiveAndGroupNumberIsNull(int examId, boolean objective) {
         return questionDao.FindSubjectCodeByExamIdAndObjectiveAndGroupNumberIsNull(examId, objective);
     }
+
+    @Transactional
+    @Override
+    public void deleteByExamAndSubject(Integer examId, String subjectCode) {
+        questionDao.deleteByExamIdAndSubjectCodeAndObjective(examId, subjectCode, false);
+        questionDao.deleteByExamIdAndSubjectCodeAndObjective(examId, subjectCode, true);
+    }
 }

+ 6 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectedServiceImpl.java

@@ -90,6 +90,9 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         if (questionScore != null) {
             whereSql.append(" and e.score = :questionScore");
         }
+        if (StringUtils.isNotBlank(query.getSecretNumber())) {
+            whereSql.append(" and s.secret_number = :secretNumber");
+        }
         dataSql.append(whereSql);
         StringBuilder orderSql = new StringBuilder(" order by s.inspect_time desc ");
         dataSql.append(orderSql);
@@ -125,6 +128,9 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         if (questionScore != null) {
             dataQuery.setParameter("questionScore", questionScore);
         }
+        if (StringUtils.isNotBlank(query.getSecretNumber())) {
+            dataQuery.setParameter("secretNumber", query.getSecretNumber());
+        }
         return dataQuery;
     }
 

+ 107 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/utils/PaperJsonUtils.java

@@ -0,0 +1,107 @@
+package cn.com.qmth.stmms.admin.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+
+public class PaperJsonUtils {
+
+    public static final String COURSE_CODE = "courseCode";
+
+    public static final String COURSE_NAME = "courseName";
+
+    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" };
+
+    public static List<ExamQuestion> toSubject(ExamSubject subject, String text) {
+        JSONObject paperJson = JSONObject.fromObject(text);
+        JSONArray questionArray = JSONArray.fromObject(paperJson.getString("details"));
+        List<ExamQuestion> list = new ArrayList<>();
+        for (int i = 0; i < questionArray.size(); i++) {
+            JSONObject questionJson = questionArray.getJSONObject(i);
+            int mainNumber = questionJson.getInt("number");
+            String mainTitle = questionJson.getString("name");
+            JSONArray qArray = questionJson.getJSONArray("questions");
+            for (int j = 0; j < qArray.size(); j++) {
+                JSONObject sub = qArray.getJSONObject(j);
+                if (sub.get("subQuestions") != null) {
+                    JSONArray subJson = sub.getJSONArray("subQuestions");
+                    for (int k = 0; k < subJson.size(); k++) {
+                        JSONObject question = subJson.getJSONObject(k);
+                        ExamQuestion q = new ExamQuestion();
+                        q.setExamId(subject.getExamId());
+                        q.setSubjectCode(subject.getCode());
+                        q.setPaperType("#");
+                        int structType = question.getInt("structType");
+                        if (structType == 1 || structType == 2 || structType == 3) {
+                            q.setObjective(true);
+                            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];
+                                }
+                            } else if (listArray instanceof JSONObject) {
+                                int index = question.getInt("answer");
+                                answer = answerArray[index];
+                            }
+                            q.setAnswer(answer);
+                        } else {
+                            q.setObjective(false);
+                        }
+                        q.setMainNumber(mainNumber);
+                        String subNumber = sub.getString("number") + "-" + question.getString("number");
+                        q.setSubNumber(subNumber);
+                        q.setMainTitle(mainTitle);
+                        double score = question.getDouble("score");
+                        q.setTotalScore(score);
+                        q.setIntervalScore(0.5);
+                        list.add(q);
+                    }
+                } else {
+                    ExamQuestion q = new ExamQuestion();
+                    q.setExamId(subject.getExamId());
+                    q.setSubjectCode(subject.getCode());
+                    q.setPaperType("#");
+                    int structType = sub.getInt("structType");
+                    if (structType == 1 || structType == 2 || structType == 3) {
+                        q.setObjective(true);
+                        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];
+                            }
+                        } else if (listArray instanceof JSONObject) {
+                            int index = sub.getInt("answer");
+                            answer = answerArray[index];
+                        }
+                        q.setAnswer(answer);
+                    } else {
+                        q.setObjective(false);
+                    }
+                    q.setMainNumber(mainNumber);
+                    String subNumber = sub.getString("number");
+                    q.setSubNumber(subNumber);
+                    q.setMainTitle(mainTitle);
+                    double score = sub.getDouble("score");
+                    q.setTotalScore(score);
+                    q.setIntervalScore(0.5);
+                    list.add(q);
+                }
+            }
+        }
+        return list;
+    }
+
+}

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

@@ -1,11 +1,33 @@
 package cn.com.qmth.stmms.api.controller;
 
+import java.util.Arrays;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import cn.com.qmth.stmms.admin.utils.PaperJsonUtils;
 import cn.com.qmth.stmms.api.exception.ApiException;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamPackage;
+import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.service.ExamPackageService;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.exam.service.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
@@ -17,21 +39,8 @@ import cn.com.qmth.stmms.common.enums.ExamStatus;
 import cn.com.qmth.stmms.common.enums.ExamType;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletRequest;
-import java.util.Arrays;
+import com.google.common.io.ByteStreams;
 
 /**
  * 统一的对外文件服务接口
@@ -59,6 +68,9 @@ public class FileController extends BaseApiController {
     @Autowired
     private ExamPackageService packageService;
 
+    @Autowired
+    private ExamQuestionService questionService;
+
     private Exam validateExam(ApiUser au, Integer examId, ExamType... types) {
         Exam exam = examService.findById(examId);
         if (exam == null || !exam.getSchoolId().equals(au.getSchoolId()) || exam.getStatus() != ExamStatus.START) {
@@ -208,6 +220,16 @@ public class FileController extends BaseApiController {
             validateFormatType(format, FormatType.JSON);
         }
         try {
+            if (exam.getType() == ExamType.MULTI_MEDIA) {
+                questionService.deleteByExamAndSubject(examId, subjectCode);
+                String text = new String(ByteStreams.toByteArray(file.getInputStream()));
+                List<ExamQuestion> questionList = PaperJsonUtils.toSubject(subject, text);
+                questionService.save(questionList);
+                subjectService.updateScore(examId, subjectCode, true,
+                        questionService.sumTotalScore(examId, subjectCode, true));
+                subjectService.updateScore(examId, subjectCode, false,
+                        questionService.sumTotalScore(examId, subjectCode, false));
+            }
             fileService.uploadPaper(file.getInputStream(), md5, examId, subjectCode, format);
             subject.setPaperFileType(format);
             subjectService.save(subject);

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

@@ -32,10 +32,8 @@
         <input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
         
         <c:if test="${web_user.schoolAdmin==true || web_user.subjectHeader==true}">
-			<c:if test="${examType!='MULTI_MEDIA'}">
 	            &nbsp;
 	 			<a href="${ctx}/admin/exam/group/add?subjectCode=${subject.code}" class="btn">新增</a>
-			</c:if>
 	            &nbsp;
 	            <a href="${ctx}/admin/exam/group/check-count?subjectCode=${subject.code}" class="btn">数量校对</a>
             &nbsp;

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

@@ -62,6 +62,9 @@
         <label>小题得分</label>
         <input type="text" number="true" name="questionScore" id="questionScore" value="${questionScore }" class="input-mini"/>
         &nbsp;
+        <label>考生编号</label>
+        <input type="text" name="secretNumber" id="secretNumber" value="${query.secretNumber}" class="input-medium"/>
+        &nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         &nbsp;
         <input id="btnStart" class="btn" type="button" value="批量复核:${inspectCount }" onclick="goStart()"/>

+ 2 - 4
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/markerList.jsp

@@ -139,10 +139,8 @@
         <input type="text" name="loginName" value="${query.loginName}" maxlength="30" class="input-small"/>
         &nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
-        <c:if test="${web_user.schoolAdmin==true}">
-            &nbsp;<input id="btnImport" class="btn" type="button" value="导入"/>
-            &nbsp;<a href="###" class="btn" id="save-button"">绑定评卷员</a>
-        </c:if>
+		&nbsp;<input id="btnImport" class="btn" type="button" value="导入"/>
+		&nbsp;<a href="###" class="btn" id="save-button"">绑定评卷员</a>
         <!--     <input id="btnExport" class="btn" type="button" value="导出"/> -->
     </div>
 </form>