ting.yin 4 年之前
父節點
當前提交
93bfda148d

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamQuestion.java

@@ -23,7 +23,7 @@ public class ExamQuestion implements Serializable {
     @Column(name = "subject_code", nullable = false, length = 32)
     private String subjectCode;
 
-    @Column(name = "paper_type", nullable = true, length = 8)
+    @Column(name = "paper_type", nullable = false, length = 8)
     private String paperType;
 
     @Column(name = "is_objective", nullable = false)

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java

@@ -74,7 +74,7 @@ public class ExamStudent implements Serializable {
     /**
      * 试卷类型
      */
-    @Column(name = "paper_type", length = 8, nullable = true)
+    @Column(name = "paper_type", length = 8, nullable = false)
     private String paperType;
 
     /**

+ 5 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/ObjectiveQuestionDTO.java

@@ -8,6 +8,8 @@ import cn.com.qmth.stmms.common.annotation.ExcelField;
 
 public class ObjectiveQuestionDTO implements QuestionDTO {
 
+    private static final String NULL_PAPER_TYPE_PLACEHOLDER = "#";
+
     @ExcelField(title = "科目代码", align = 2, sort = 10)
     private String subjectCode;
 
@@ -51,6 +53,9 @@ public class ObjectiveQuestionDTO implements QuestionDTO {
         ExamQuestion question = new ExamQuestion();
         question.setSubjectCode(StringUtils.trimToNull(subjectCode));
         question.setPaperType(StringUtils.trimToNull(paperType));
+        if (question.getPaperType() == null) {
+            question.setPaperType(NULL_PAPER_TYPE_PLACEHOLDER);
+        }
         question.setMainNumber(mainNumber);
         question.setSubNumber(subNumber);
         question.setGroupNumber(0);

+ 4 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/SubjectiveQuestionDTO.java

@@ -10,6 +10,8 @@ import cn.com.qmth.stmms.common.enums.ScorePolicy;
 
 public class SubjectiveQuestionDTO implements QuestionDTO {
 
+    private static final String NULL_PAPER_TYPE_PLACEHOLDER = "#";
+
     @ExcelField(title = "科目代码", align = 2, sort = 10)
     private String subjectCode;
 
@@ -72,12 +74,13 @@ public class SubjectiveQuestionDTO implements QuestionDTO {
         setScorePolicy(group != null && group.getScorePolicy() != null ? group.getScorePolicy().getValue()
                 : ScorePolicy.AVG.getValue());
         setMarkMode(group != null && group.getMarkMode() != null ? group.getMarkMode().getName() : "");
-        setTrialCount(group != null&& group.getTrialCount() != null  ? group.getTrialCount() : 0);
+        setTrialCount(group != null && group.getTrialCount() != null ? group.getTrialCount() : 0);
     }
 
     public ExamQuestion transform() {
         ExamQuestion question = new ExamQuestion();
         question.setSubjectCode(StringUtils.trimToNull(subjectCode));
+        question.setPaperType(NULL_PAPER_TYPE_PLACEHOLDER);
         question.setMainTitle(StringUtils.trimToNull(title));
         question.setMainNumber(mainNumber);
         question.setSubNumber(subNumber);

+ 1 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/AnswerCheckController.java

@@ -130,6 +130,7 @@ public class AnswerCheckController extends BaseExamController {
         result.accumulate("subjectiveScore", student.getSubjectiveScore() != null ? student.getSubjectiveScore() : 0);
         result.accumulate("upload", student.isUpload());
         result.accumulate("absent", student.isAbsent());
+        result.accumulate("paperType", student.getPaperType());
         result.accumulate("sheetUrls",
                 fileService.getSheetUris(student.getExamId(), student.getExamNumber(), 1, student.getSheetCount()));
 

+ 61 - 50
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkGroupController.java

@@ -14,11 +14,14 @@ import cn.com.qmth.stmms.common.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.*;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
+
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import net.sf.json.JsonConfig;
+
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
@@ -35,6 +38,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+
 import java.util.*;
 
 @Controller("markGroupController")
@@ -43,6 +47,8 @@ public class MarkGroupController extends BaseExamController {
 
     protected static Logger log = LoggerFactory.getLogger(MarkGroupController.class);
 
+    private static final String NULL_PAPER_TYPE_PLACEHOLDER = "#";
+
     @Autowired
     private ExamSubjectService subjectService;
 
@@ -88,17 +94,16 @@ public class MarkGroupController extends BaseExamController {
         }
         List<MarkGroup> list = groupService.findByExamAndSubject(examId, subject.getCode());
         for (MarkGroup group : list) {
-            group.setQuestionList(questionService
-                    .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subject.getCode(), false,
-                            group.getNumber()));
-            group.setMarkerCount(
-                    markerService.countByExamAndSubjectAndGroup(examId, subject.getCode(), group.getNumber()));
+            group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                    subject.getCode(), false, group.getNumber()));
+            group.setMarkerCount(markerService.countByExamAndSubjectAndGroup(examId, subject.getCode(),
+                    group.getNumber()));
             group.setCurrentCount(markService.applyCount(group));
-            int percent =
-                    group.getLibraryCount() > 0 ? (int) (group.getMarkedCount() * 100.00 / group.getLibraryCount()) : 0;
+            int percent = group.getLibraryCount() > 0 ? (int) (group.getMarkedCount() * 100.00 / group
+                    .getLibraryCount()) : 0;
             group.setPercent(percent);
-            group.setDeleting(lockService
-                    .isLocked(LockType.GROUP_DELETE, group.getExamId(), group.getSubjectCode(), group.getNumber()));
+            group.setDeleting(lockService.isLocked(LockType.GROUP_DELETE, group.getExamId(), group.getSubjectCode(),
+                    group.getNumber()));
         }
         model.addAttribute("resultList", list);
         model.addAttribute("subject", subject);
@@ -114,14 +119,13 @@ public class MarkGroupController extends BaseExamController {
             @RequestParam(required = false) Boolean withDouble, @RequestParam(required = false) MarkStatus status) {
         int examId = getSessionExamId(request);
         JSONArray array = new JSONArray();
-        List<MarkGroup> list = withDouble != null && withDouble ?
-                groupService.findByExamAndSubjectWithDouble(examId, subjectCode) :
-                (status != null ?
-                        groupService.findByExamAndSubjectAndStatus(examId, subjectCode, status) :
-                        groupService.findByExamAndSubject(examId, subjectCode));
+        List<MarkGroup> list = withDouble != null && withDouble ? groupService.findByExamAndSubjectWithDouble(examId,
+                subjectCode) : (status != null ? groupService
+                .findByExamAndSubjectAndStatus(examId, subjectCode, status) : groupService.findByExamAndSubject(examId,
+                subjectCode));
         for (MarkGroup group : list) {
-            group.setQuestionList(questionService
-                    .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, group.getNumber()));
+            group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode,
+                    false, group.getNumber()));
             JSONObject obj = new JSONObject();
             obj.accumulate("number", group.getNumber());
             obj.accumulate("title", group.getTitle());
@@ -260,12 +264,13 @@ public class MarkGroupController extends BaseExamController {
         if (group != null) {
             String pictureConfig = buildPictureConfig(group);
             group.setPicList(pictureConfig);
-            group.setQuestionList(questionService
-                    .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, group.getNumber()));
+            group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode,
+                    false, group.getNumber()));
             model.addAttribute("group", group);
-            model.addAttribute("questions", questionService
-                    .findByExamAndSubjectAndObjectiveAndGroupNumber(group.getExamId(), group.getSubjectCode(), false,
-                            group.getNumber()));
+            model.addAttribute(
+                    "questions",
+                    questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(group.getExamId(),
+                            group.getSubjectCode(), false, group.getNumber()));
             model.addAttribute("pictureConfig", pictureConfig);
             model.addAttribute("markModeList", MarkMode.values());
             model.addAttribute("scorePolicyList", ScorePolicy.values());
@@ -287,8 +292,8 @@ public class MarkGroupController extends BaseExamController {
         MarkGroup group = groupService.findOne(examId, subjectCode, number);
         if (group != null) {
             group.setPicList(buildPictureConfig(group));
-            List<ExamQuestion> list = questionService
-                    .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, number);
+            List<ExamQuestion> list = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                    subjectCode, false, number);
             List<ExamQuestionDTO> questionList = new ArrayList<>();
             Map<Integer, ExamQuestionDTO> mainMap = new HashMap<>();
             for (ExamQuestion question : list) {
@@ -335,18 +340,23 @@ public class MarkGroupController extends BaseExamController {
             RequestUtils.setLog(request, "开始删除分组,subjectCode:" + subjectCode + " number:" + number);
         }
 
-        //        try {
-        //            lockService.waitlock(LockType.EXAM_SUBJECT, group.getExamId(), group.getSubjectCode());
-        //            lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
-        //            markService.deleteGroup(group);
-        //            RequestUtils.setLog(request, "删除成功,subjectCode:" + subjectCode + " number:" + number);
-        //        } catch (Exception e) {
-        //            log.error("delete group error", e);
-        //            throw new RuntimeException("删除大题失败", e);
-        //        } finally {
-        //            lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
-        //            lockService.unlock(LockType.EXAM_SUBJECT, group.getExamId(), group.getSubjectCode());
-        //        }
+        // try {
+        // lockService.waitlock(LockType.EXAM_SUBJECT, group.getExamId(),
+        // group.getSubjectCode());
+        // lockService.waitlock(LockType.GROUP, group.getExamId(),
+        // group.getSubjectCode(), group.getNumber());
+        // markService.deleteGroup(group);
+        // RequestUtils.setLog(request, "删除成功,subjectCode:" + subjectCode +
+        // " number:" + number);
+        // } catch (Exception e) {
+        // log.error("delete group error", e);
+        // throw new RuntimeException("删除大题失败", e);
+        // } finally {
+        // lockService.unlock(LockType.GROUP, group.getExamId(),
+        // group.getSubjectCode(), group.getNumber());
+        // lockService.unlock(LockType.EXAM_SUBJECT, group.getExamId(),
+        // group.getSubjectCode());
+        // }
 
         redirectAttributes.addAttribute("subjectCode", subjectCode);
         redirectAttributes.addAttribute("number", number);
@@ -387,8 +397,8 @@ public class MarkGroupController extends BaseExamController {
                         dto.setScoreList(scoreList);
                     }
                     List<ExamQuestion> questionList = buildQuestionList(group, detailList);
-                    List<ExamQuestion> others = questionService
-                            .findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(examId, subjectCode, false, number);
+                    List<ExamQuestion> others = questionService.findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(
+                            examId, subjectCode, false, number);
                     Set<String> numbers = new HashSet<>();
                     Map<Integer, String> titles = new HashMap<>();
                     for (ExamQuestion question : others) {
@@ -402,8 +412,8 @@ public class MarkGroupController extends BaseExamController {
                             redirectAttributes.addAttribute("number", number);
                             return "redirect:/admin/exam/group/edit-full";
                         }
-                        if (titles.get(question.getMainNumber()) != null && !titles.get(question.getMainNumber())
-                                .equals(question.getMainTitle())) {
+                        if (titles.get(question.getMainNumber()) != null
+                                && !titles.get(question.getMainNumber()).equals(question.getMainTitle())) {
                             addMessage(redirectAttributes, "大题名称不一致");
                             redirectAttributes.addAttribute("subjectCode", subjectCode);
                             redirectAttributes.addAttribute("number", number);
@@ -412,8 +422,8 @@ public class MarkGroupController extends BaseExamController {
                     }
                     if (!questionList.isEmpty()) {
                         ScorePolicy policy = scorePolicy != null ? ScorePolicy.findByValue(scorePolicy) : null;
-                        ThirdPolicy third =
-                                thirdPolicy != null ? ThirdPolicy.findByValue(thirdPolicy) : ThirdPolicy.DISABLE;
+                        ThirdPolicy third = thirdPolicy != null ? ThirdPolicy.findByValue(thirdPolicy)
+                                : ThirdPolicy.DISABLE;
                         try {
                             lockService.waitlock(LockType.GROUP, true, group.getExamId(), group.getSubjectCode(),
                                     group.getNumber());
@@ -429,8 +439,8 @@ public class MarkGroupController extends BaseExamController {
                 } else {
                     // simple update
                     List<Double> intervalScores = buildDoubleList(intervalScoreList);
-                    List<ExamQuestion> questionList = questionService
-                            .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, number);
+                    List<ExamQuestion> questionList = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
+                            examId, subjectCode, false, number);
                     if (intervalScores.size() == questionList.size()) {
                         for (int i = 0; i < questionList.size(); i++) {
                             ExamQuestion q = questionList.get(i);
@@ -528,8 +538,8 @@ public class MarkGroupController extends BaseExamController {
                     }
                     dto.setScoreList(scoreList);
                 }
-                List<ExamQuestion> current = questionService
-                        .findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(examId, subjectCode, false, number);
+                List<ExamQuestion> current = questionService.findByExamAndSubjectAndObjectiveAndGroupNumberNotEqual(
+                        examId, subjectCode, false, number);
                 Set<String> numbers = new HashSet<>();
                 Map<Integer, String> titles = new HashMap<>();
                 for (ExamQuestion question : current) {
@@ -547,8 +557,8 @@ public class MarkGroupController extends BaseExamController {
                             redirectAttributes.addAttribute("subjectCode", subjectCode);
                             return "redirect:/admin/exam/group/add";
                         }
-                        if (titles.get(question.getMainNumber()) != null && !titles.get(question.getMainNumber())
-                                .equals(question.getMainTitle())) {
+                        if (titles.get(question.getMainNumber()) != null
+                                && !titles.get(question.getMainNumber()).equals(question.getMainTitle())) {
                             addMessage(redirectAttributes, "大题名称不一致");
                             redirectAttributes.addAttribute("subjectCode", subjectCode);
                             return "redirect:/admin/exam/group/add";
@@ -559,8 +569,8 @@ public class MarkGroupController extends BaseExamController {
                             .deleteByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, number);
                     questionService.save(list);
                     groupService.save(group);
-                    subjectService
-                            .updateScore(examId, subjectCode, false, groupService.sumTotalScore(examId, subjectCode));
+                    subjectService.updateScore(examId, subjectCode, false,
+                            groupService.sumTotalScore(examId, subjectCode));
                     redirectAttributes.addAttribute("subjectCode", subjectCode);
                     return "redirect:/admin/exam/group";
                 } else {
@@ -610,7 +620,7 @@ public class MarkGroupController extends BaseExamController {
                 ObjectMapper mapper = new ObjectMapper();
                 json = mapper.writeValueAsString(group.getPictureConfigList());
             } catch (JsonProcessingException e) {
-                //e.printStackTrace();
+                // e.printStackTrace();
             }
         }
         return json;
@@ -630,6 +640,7 @@ public class MarkGroupController extends BaseExamController {
                 ExamQuestion question = new ExamQuestion();
                 question.setExamId(group.getExamId());
                 question.setSubjectCode(group.getSubjectCode());
+                question.setPaperType(NULL_PAPER_TYPE_PLACEHOLDER);
                 question.setMainTitle(detail.getMainTitle());
                 question.setMainNumber(detail.getMainNumber());
                 question.setSubNumber(detail.getSubNumber() + i);

+ 9 - 9
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java

@@ -82,7 +82,8 @@ public class ScoreController extends BaseExamController {
             @RequestParam(defaultValue = "0") Integer filter) {
         WebUser wu = RequestUtils.getWebUser(request);
         ModelAndView view = new ModelAndView("modules/exam/scoreList");
-        query.setExamId(getSessionExamId(request));
+        int examId = getSessionExamId(request);
+        query.setExamId(examId);
         query.orderByExamNumber();
         if (filter == 1) {
             query.setObjectiveScore(0d);
@@ -97,16 +98,15 @@ public class ScoreController extends BaseExamController {
             buildPackageUrl(student);
             buildAnswerUrl(student);
         }
-        String exportMessage = query.getSubjectCode() != null ? enableExport(query.getExamId(), query.getSubjectCode())
-                : null;
+        String exportMessage = query.getSubjectCode() != null ? enableExport(examId, query.getSubjectCode()) : null;
         if (exportMessage != null) {
             view.addObject("exportMessage", exportMessage);
             view.addObject("enableExport", false);
         } else {
             view.addObject("enableExport", true);
         }
-        view.addObject("subjectList", getExamSubject(query.getExamId(), wu));
-        Exam exam = examService.findById(query.getExamId());
+        view.addObject("subjectList", getExamSubject(examId, wu));
+        Exam exam = examService.findById(examId);
         view.addObject("examType", exam.getType());
         view.addObject("query", query);
         view.addObject("filter", filter);
@@ -175,7 +175,7 @@ public class ScoreController extends BaseExamController {
     public String export(ExamStudentSearchQuery query, HttpServletRequest request, HttpServletResponse response,
             RedirectAttributes redirectAttributes) {
         WebUser wu = RequestUtils.getWebUser(request);
-        Exam exam = examService.findById(query.getExamId());
+        Exam exam = examService.findById(getSessionExamId(request));
         if (exam == null || !exam.getSchoolId().equals(wu.getUser().getSchoolId())) {
             addMessage(redirectAttributes, "请选择正确的考试");
             return "redirect:/admin/exam/score";
@@ -183,7 +183,7 @@ public class ScoreController extends BaseExamController {
         Set<String> subjectSet = new HashSet<>();
         // 单科目导出
         if (query.getSubjectCode() != null) {
-            String exportMessage = enableExport(query.getExamId(), query.getSubjectCode());
+            String exportMessage = enableExport(exam.getId(), query.getSubjectCode());
             // 判断不允许导出则直接返回
             if (exportMessage != null) {
                 addMessage(redirectAttributes, "该科目不能导出成绩 " + exportMessage);
@@ -193,7 +193,7 @@ public class ScoreController extends BaseExamController {
         }
         // 全体科目导出
         else {
-            List<ExamSubject> list = subjectService.list(query.getExamId());
+            List<ExamSubject> list = subjectService.list(exam.getId());
             for (ExamSubject subject : list) {
                 // 遍历所有科目,判断是否允许导出
                 if (enableExport(subject.getExamId(), subject.getCode()) == null) {
@@ -221,7 +221,7 @@ public class ScoreController extends BaseExamController {
                 }
             }
             if (query.getSubjectCode() != null) {
-                List<String> headerList = getOptionHeader(query.getExamId(), query.getSubjectCode(), paperType);
+                List<String> headerList = getOptionHeader(exam.getId(), query.getSubjectCode(), paperType);
                 ExportStudentExcel excel = new ExportStudentExcel("成绩单", headerList, ExamStudentDTO.class);
                 excel.setDataList(list, true);
                 excel.write(response, fileName).dispose();

+ 5 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/StudentController.java

@@ -73,6 +73,8 @@ public class StudentController extends BaseExamController {
     @Autowired
     private FileService fileService;
 
+    private static final String NULL_PAPER_TYPE_PLACEHOLDER = "#";
+
     @Logging(menu = "查询考生", type = LogType.QUERY)
     @RequestMapping
     public String list(Model model, HttpServletRequest request, ExamStudentSearchQuery query) {
@@ -508,6 +510,9 @@ public class StudentController extends BaseExamController {
                     student.setSliceCount(0);
                     student.setSheetCount(0);
                     student.setPaperType(StringUtils.trimToNull(studentVO.getPaperType()));
+                    if (student.getPaperType() == null) {
+                        student.setPaperType(NULL_PAPER_TYPE_PLACEHOLDER);
+                    }
                     // 同步更新评卷任务
                     if (saveUploadStudent(student)) {
                         successNum++;

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/DataSyncThread.java

@@ -184,7 +184,7 @@ public class DataSyncThread implements Runnable {
                         examStudent.setSubjectCode(subjectCode);
                         examStudent.setSubjectName(subjectName);
                         examStudent.setExamNumber(student.getString("examNumber"));
-                        examStudent.setPaperType(null);
+                        examStudent.setPaperType(DEFAULT_NULL);
 
                         examStudent.setSchoolId(exam.getSchoolId());
                         examStudent.setAbsent(false);

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

@@ -16,6 +16,7 @@ import cn.com.qmth.stmms.common.utils.DateUtils;
 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;
@@ -40,6 +41,8 @@ public class ScanController extends BaseApiController {
     @Autowired
     private CheckStudentService checkStudentService;
 
+    private static final String NULL_PAPER_TYPE_PLACEHOLDER = "#";
+
     /**
      * 上传考生识别结果
      *
@@ -58,8 +61,8 @@ public class ScanController extends BaseApiController {
         Exam exam = examService.findById(examId);
         JSONArray array = new JSONArray();
         // 判断上传权限
-        if (exam == null || !exam.getSchoolId().equals(user.getSchoolId()) || !ExamStatus.START.equals(exam.getStatus())
-                || !ExamType.SCAN_IMAGE.equals(exam.getType())) {
+        if (exam == null || !exam.getSchoolId().equals(user.getSchoolId())
+                || !ExamStatus.START.equals(exam.getStatus()) || !ExamType.SCAN_IMAGE.equals(exam.getType())) {
             throw ApiException.EXAM_NOT_ACCESSIBLED;
         }
         if (scStudentParameter != null && scStudentParameter.length > 0) {
@@ -73,6 +76,9 @@ public class ScanController extends BaseApiController {
                     student.setSliceCount(sc.getSliceCount());
                     student.setSheetCount(sc.getSheetCount());
                     student.setPaperType(StringUtils.trimToNull(sc.getPaperType()));
+                    if (student.getPaperType() == null) {
+                        student.setPaperType(NULL_PAPER_TYPE_PLACEHOLDER);
+                    }
                     // 同步更新评卷任务
                     if (saveUploadStudent(student)) {
                         JSONObject obj = new JSONObject();
@@ -81,8 +87,8 @@ public class ScanController extends BaseApiController {
                         array.add(obj);
                         // 增加人工审核数据
                         if (sc.isManual()) {
-                            checkStudentService.save(new CheckStudent(student.getId(), examId, student.getSubjectCode(),
-                                    CheckType.MANUAL));
+                            checkStudentService.save(new CheckStudent(student.getId(), examId,
+                                    student.getSubjectCode(), CheckType.MANUAL));
                         }
                     }
                 }

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

@@ -167,6 +167,7 @@
        // $('#campusName').html(student.campusName);
         $('#objectiveScore').html(student.objectiveScore);
         $('#subjectiveScore').html(student.subjectiveScore);
+        $('#paperType').val(student.paperType);
 
         $('.absent-select').removeClass('on');
         if (student.absent == true) {
@@ -241,10 +242,12 @@
                 array.push(q.answer);
             }
         }
+        student.paperType = $('#paperType').val();
         $.post('${ctx}/admin/exam/check/answer/save', {
             studentId: student.id,
             absent: student.absent,
-            answers: array.join(',')
+            answers: array.join(','),
+            paperType:student.paperType
         }, function (result) {
             if (result == true) {
                 process(current + 1);

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/problemHistory.jsp

@@ -63,7 +63,7 @@
             <td>${result.subjectCode}-${result.subjectName}</td>
             <td>${result.number}</td>
             <td>
-            	$<c:if test="${web_user.subjectHeader==true && forbiddenInfo==true}">
+            	<c:if test="${web_user.subjectHeader==true && forbiddenInfo==true}">
 	            ${fn:substring(result.examNumber,0,1)}***
 	            </c:if>
 	            <c:if test="${web_user.schoolAdmin==true || forbiddenInfo==false}">

+ 2 - 2
stmms-web/src/main/webapp/sql/stmms_ft.sql

@@ -182,7 +182,7 @@ CREATE TABLE `eb_exam_question`
     `id`               int(11)     NOT NULL AUTO_INCREMENT COMMENT '主键',
     `exam_id`          int(11)     NOT NULL COMMENT '考试ID',
     `subject_code`     varchar(32) NOT NULL DEFAULT '' COMMENT '科目代码',
-    `paper_type`       varchar(8)           DEFAULT NULL COMMENT '试卷类型',
+    `paper_type`       varchar(8)  NOT NULL COMMENT '试卷类型',
     `is_objective`     tinyint(1)  NOT NULL COMMENT '是否客观题',
     `group_number`     int(11)     NOT NULL COMMENT '分组序号',
     `main_number`      int(11)     NOT NULL COMMENT '大题号',
@@ -211,7 +211,7 @@ CREATE TABLE `eb_exam_student`
     `school_id`             int(11)     NOT NULL COMMENT '学校ID',
     `subject_code`          varchar(32) NOT NULL COMMENT '科目代码',
     `subject_name`          varchar(32) NOT NULL COMMENT '科目名称',
-    `paper_type`            varchar(8)   DEFAULT NULL COMMENT '试卷类型',
+    `paper_type`            varchar(8)  NOT NULL COMMENT '试卷类型',
     `exam_number`           varchar(64) NOT NULL COMMENT '准考证号',
     `secret_number`         varchar(64) NOT NULL COMMENT '密号',
     `student_code`          varchar(64) NOT NULL COMMENT '学号',