Browse Source

新增自动跳转和评卷裁切,调整考生和成绩查询的查询条件

ting.yin 3 years ago
parent
commit
0cbf94c83c
22 changed files with 309 additions and 30 deletions
  1. 28 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/Exam.java
  2. 15 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamSubject.java
  3. 40 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/query/ExamStudentSearchQuery.java
  4. 3 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/MarkerService.java
  5. 26 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java
  6. 13 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkerServiceImpl.java
  7. 2 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ArbitrateController.java
  8. 2 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ExamController.java
  9. 12 11
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java
  10. 2 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkGroupController.java
  11. 16 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkTrackController.java
  12. 52 1
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java
  13. 3 1
      stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java
  14. 14 0
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/checkAnswer.jsp
  15. 14 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examEdit.jsp
  16. 14 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examForm.jsp
  17. 1 1
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/problemHistory.jsp
  18. 17 1
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/scoreList.jsp
  19. 29 6
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/studentList.jsp
  20. 2 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/subjectEdit.jsp
  21. 1 0
      stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectRange.jsp
  22. 3 0
      stmms-web/src/main/webapp/sql/stmms_ft.sql

+ 28 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/Exam.java

@@ -156,6 +156,18 @@ public class Exam implements Serializable {
     @Column(name = "scan_config", nullable = true)
     @Column(name = "scan_config", nullable = true)
     private String scanConfig;
     private String scanConfig;
 
 
+    /**
+     * 自动跳转
+     */
+    @Column(name = "auto_scroll", nullable = false)
+    private boolean autoScroll;
+
+    /**
+     * 是否裁切
+     */
+    @Column(name = "enable_split", nullable = false)
+    private boolean enableSplit;
+
     public Integer getId() {
     public Integer getId() {
         return id;
         return id;
     }
     }
@@ -376,4 +388,20 @@ public class Exam implements Serializable {
         this.scanConfig = scanConfig;
         this.scanConfig = scanConfig;
     }
     }
 
 
+    public boolean isAutoScroll() {
+        return autoScroll;
+    }
+
+    public void setAutoScroll(boolean autoScroll) {
+        this.autoScroll = autoScroll;
+    }
+
+    public boolean isEnableSplit() {
+        return enableSplit;
+    }
+
+    public void setEnableSplit(boolean enableSplit) {
+        this.enableSplit = enableSplit;
+    }
+
 }
 }

+ 15 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamSubject.java

@@ -93,13 +93,19 @@ public class ExamSubject implements Serializable {
      */
      */
     @Column(name = "sas_config", nullable = true)
     @Column(name = "sas_config", nullable = true)
     private String sasConfig;
     private String sasConfig;
-    
+
     /**
     /**
      * 试评数量
      * 试评数量
      */
      */
     @Column(name = "trial_count", nullable = true)
     @Column(name = "trial_count", nullable = true)
     private Integer trialCount;
     private Integer trialCount;
 
 
+    /**
+     * 是否裁切
+     */
+    @Column(name = "enable_split", nullable = true)
+    private Boolean enableSplit;
+
     /**
     /**
      * 大题数量
      * 大题数量
      */
      */
@@ -358,14 +364,20 @@ public class ExamSubject implements Serializable {
         this.paperType = paperType;
         this.paperType = paperType;
     }
     }
 
 
-    
     public Integer getTrialCount() {
     public Integer getTrialCount() {
         return trialCount;
         return trialCount;
     }
     }
 
 
-    
     public void setTrialCount(Integer trialCount) {
     public void setTrialCount(Integer trialCount) {
         this.trialCount = trialCount;
         this.trialCount = trialCount;
     }
     }
 
 
+    public Boolean isEnableSplit() {
+        return enableSplit;
+    }
+
+    public void setEnableSplit(Boolean enableSplit) {
+        this.enableSplit = enableSplit;
+    }
+
 }
 }

+ 40 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/query/ExamStudentSearchQuery.java

@@ -40,6 +40,10 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
 
 
     private String subjectCategory;
     private String subjectCategory;
 
 
+    private String examSite;
+
+    private String examRoom;
+
     private Double objectiveScore;
     private Double objectiveScore;
 
 
     private Double objectiveScoreGt;
     private Double objectiveScoreGt;
@@ -72,10 +76,14 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
 
 
     private String subjectCodeIn;
     private String subjectCodeIn;
 
 
+    private String examSiteIn;
+
     private String campusNameNotIn;
     private String campusNameNotIn;
 
 
     private String subjectCodeNotIn;
     private String subjectCodeNotIn;
 
 
+    private String examSiteNotIn;
+
     private String ids;
     private String ids;
 
 
     private Double startScore;
     private Double startScore;
@@ -445,4 +453,36 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
         this.inspectorId = inspectorId;
         this.inspectorId = inspectorId;
     }
     }
 
 
+    public String getExamSite() {
+        return examSite;
+    }
+
+    public void setExamSite(String examSite) {
+        this.examSite = examSite;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getExamSiteIn() {
+        return examSiteIn;
+    }
+
+    public void setExamSiteIn(String examSiteIn) {
+        this.examSiteIn = examSiteIn;
+    }
+
+    public String getExamSiteNotIn() {
+        return examSiteNotIn;
+    }
+
+    public void setExamSiteNotIn(String examSiteNotIn) {
+        this.examSiteNotIn = examSiteNotIn;
+    }
+
 }
 }

+ 3 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/MarkerService.java

@@ -39,4 +39,7 @@ public interface MarkerService {
 
 
     List<Marker> findByExamAndSubjectAndUserIdAndEnable(Integer examId, String subjectCode, Integer userId,
     List<Marker> findByExamAndSubjectAndUserIdAndEnable(Integer examId, String subjectCode, Integer userId,
             boolean enable);
             boolean enable);
+
+    void logoutByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer number);
+
 }
 }

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

@@ -627,6 +627,16 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                         predicates.add(cb.or(sub));
                         predicates.add(cb.or(sub));
                     }
                     }
                 }
                 }
+                if (StringUtils.isNotBlank(query.getExamSiteIn())) {
+                    String[] list = query.getExamSiteIn().split(",");
+                    if (list.length > 0) {
+                        Predicate[] sub = new Predicate[list.length];
+                        for (int i = 0; i < list.length; i++) {
+                            sub[i] = cb.equal(root.get("examSite"), list[i]);
+                        }
+                        predicates.add(cb.or(sub));
+                    }
+                }
                 if (StringUtils.isNotBlank(query.getSubjectCodeNotIn())) {
                 if (StringUtils.isNotBlank(query.getSubjectCodeNotIn())) {
                     String[] list = query.getSubjectCodeNotIn().split(",");
                     String[] list = query.getSubjectCodeNotIn().split(",");
                     if (list.length > 0) {
                     if (list.length > 0) {
@@ -647,6 +657,16 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                         predicates.add(cb.and(sub));
                         predicates.add(cb.and(sub));
                     }
                     }
                 }
                 }
+                if (StringUtils.isNotBlank(query.getExamSiteNotIn())) {
+                    String[] list = query.getExamSiteNotIn().split(",");
+                    if (list.length > 0) {
+                        Predicate[] sub = new Predicate[list.length];
+                        for (int i = 0; i < list.length; i++) {
+                            sub[i] = cb.notEqual(root.get("examSite"), list[i]);
+                        }
+                        predicates.add(cb.and(sub));
+                    }
+                }
                 if (StringUtils.isNotBlank(query.getPaperType())) {
                 if (StringUtils.isNotBlank(query.getPaperType())) {
                     predicates.add(cb.equal(root.get("paperType"), query.getPaperType()));
                     predicates.add(cb.equal(root.get("paperType"), query.getPaperType()));
                 }
                 }
@@ -662,6 +682,12 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 if (query.getInspectorId() != null) {
                 if (query.getInspectorId() != null) {
                     predicates.add(cb.equal(root.get("inspectorId"), query.getInspectorId()));
                     predicates.add(cb.equal(root.get("inspectorId"), query.getInspectorId()));
                 }
                 }
+                if (StringUtils.isNotBlank(query.getExamSite())) {
+                    predicates.add(cb.equal(root.get("examSite"), query.getExamSite()));
+                }
+                if (StringUtils.isNotBlank(query.getExamRoom())) {
+                    predicates.add(cb.equal(root.get("examRoom"), query.getExamRoom()));
+                }
                 return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
                 return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
                         .size()]));
                         .size()]));
             }
             }

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

@@ -203,4 +203,17 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
             boolean enable) {
             boolean enable) {
         return markerDao.findByExamIdAndSubjectCodeAndUserIdAndEnable(examId, subjectCode, userId, enable);
         return markerDao.findByExamIdAndSubjectCodeAndUserIdAndEnable(examId, subjectCode, userId, enable);
     }
     }
+
+    @Transactional
+    @Override
+    public void logoutByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer number) {
+        List<Marker> markers = this.findByExamAndSubjectAndGroup(examId, subjectCode, number);
+        List<User> list = new ArrayList<User>();
+        for (Marker marker : markers) {
+            User user = userDao.findOne(marker.getUserId());
+            user.refreshAccessToken();
+            list.add(user);
+        }
+        userDao.save(list);
+    }
 }
 }

+ 2 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ArbitrateController.java

@@ -181,6 +181,8 @@ public class ArbitrateController extends BaseExamController {
         subject.accumulate("answerUrl", examSubject.getAnswerUrl() == null ? "" : examSubject.getAnswerUrl());
         subject.accumulate("answerUrl", examSubject.getAnswerUrl() == null ? "" : examSubject.getAnswerUrl());
         setting.accumulate("subject", subject);
         setting.accumulate("subject", subject);
         setting.accumulate("splitConfig", getSplitConfig());
         setting.accumulate("splitConfig", getSplitConfig());
+        setting.accumulate("enableSplit",
+                examSubject.isEnableSplit() == null ? exam.isEnableSplit() : examSubject.isEnableSplit());
         return setting;
         return setting;
     }
     }
 
 

+ 2 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ExamController.java

@@ -150,6 +150,8 @@ public class ExamController extends BaseExamController {
             } else {
             } else {
                 oldExam.setForbiddenScore(false);
                 oldExam.setForbiddenScore(false);
             }
             }
+            oldExam.setEnableSplit(exam.isEnableSplit());
+            oldExam.setAutoScroll(exam.isAutoScroll());
             JSONObject sasConfig = new JSONObject();
             JSONObject sasConfig = new JSONObject();
             sasConfig.accumulate("passScore", passScore);
             sasConfig.accumulate("passScore", passScore);
             sasConfig.accumulate("excellentScore", excellentScore);
             sasConfig.accumulate("excellentScore", excellentScore);

+ 12 - 11
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -357,7 +357,7 @@ public class InspectedController extends BaseExamController {
 
 
     @RequestMapping(value = "/getSetting", method = RequestMethod.POST)
     @RequestMapping(value = "/getSetting", method = RequestMethod.POST)
     @ResponseBody
     @ResponseBody
-    public JSONObject getSetting(HttpServletRequest request, @RequestParam(required = false) String subjectCode) {
+    public JSONObject getSetting(HttpServletRequest request, @RequestParam String subjectCode) {
         JSONObject setting = new JSONObject();
         JSONObject setting = new JSONObject();
         WebUser wu = RequestUtils.getWebUser(request);
         WebUser wu = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
         int examId = getSessionExamId(request);
@@ -366,16 +366,17 @@ public class InspectedController extends BaseExamController {
         setting.accumulate("fileServer", fileService.getFileServer());
         setting.accumulate("fileServer", fileService.getFileServer());
         setting.accumulate("userName", wu.getName());
         setting.accumulate("userName", wu.getName());
         setting.accumulate("splitConfig", getSplitConfig());
         setting.accumulate("splitConfig", getSplitConfig());
-        if (StringUtils.isNotBlank(subjectCode)) {
-            ExamSubject examSubject = subjectService.find(examId, subjectCode);
-            JSONObject subject = new JSONObject();
-            subject.accumulate("name", examSubject.getName());
-            subject.accumulate("code", examSubject.getCode());
-            examSubject.setPaperAnswerUrl(fileService);
-            subject.accumulate("paperUrl", examSubject.getPaperUrl() == null ? "" : examSubject.getPaperUrl());
-            subject.accumulate("answerUrl", examSubject.getAnswerUrl() == null ? "" : examSubject.getAnswerUrl());
-            setting.accumulate("subject", subject);
-        }
+
+        ExamSubject examSubject = subjectService.find(examId, subjectCode);
+        JSONObject subject = new JSONObject();
+        subject.accumulate("name", examSubject.getName());
+        subject.accumulate("code", examSubject.getCode());
+        examSubject.setPaperAnswerUrl(fileService);
+        subject.accumulate("paperUrl", examSubject.getPaperUrl() == null ? "" : examSubject.getPaperUrl());
+        subject.accumulate("answerUrl", examSubject.getAnswerUrl() == null ? "" : examSubject.getAnswerUrl());
+        setting.accumulate("subject", subject);
+        setting.accumulate("enableSplit",
+                examSubject.isEnableSplit() == null ? exam.isEnableSplit() : examSubject.isEnableSplit());
         return setting;
         return setting;
     }
     }
 
 

+ 2 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkGroupController.java

@@ -272,6 +272,8 @@ public class MarkGroupController extends BaseExamController {
                 group.setStatus(status);
                 group.setStatus(status);
                 markService.updateLibraryCount(group);
                 markService.updateLibraryCount(group);
                 markService.updateMarkedCount(group);
                 markService.updateMarkedCount(group);
+                markerService.logoutByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
+                        group.getNumber());
             }
             }
         } finally {
         } finally {
             lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
             lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());

+ 16 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkTrackController.java

@@ -13,10 +13,14 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 
+import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 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.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 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.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
 import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
@@ -63,6 +67,12 @@ public class MarkTrackController extends BaseExamController {
     @Autowired
     @Autowired
     private TrialService trialService;
     private TrialService trialService;
 
 
+    @Autowired
+    private ExamService examService;
+
+    @Autowired
+    private ExamSubjectService subjectService;
+
     @Value("${slice.split.config}")
     @Value("${slice.split.config}")
     private String splitConfig;
     private String splitConfig;
 
 
@@ -132,6 +142,9 @@ public class MarkTrackController extends BaseExamController {
         map.put("groupNumber", library.getGroupNumber());
         map.put("groupNumber", library.getGroupNumber());
         map.put("fileServer", fileService.getFileServer());
         map.put("fileServer", fileService.getFileServer());
         map.put("splitConfig", getSplitConfig());
         map.put("splitConfig", getSplitConfig());
+        Exam exam = examService.findById(library.getExamId());
+        ExamSubject examSubject = subjectService.find(library.getExamId(), library.getSubjectCode());
+        map.put("enableSplit", examSubject.isEnableSplit() == null ? exam.isEnableSplit() : examSubject.isEnableSplit());
         return map;
         return map;
     }
     }
 
 
@@ -172,6 +185,9 @@ public class MarkTrackController extends BaseExamController {
         map.put("groupNumber", library.getGroupNumber());
         map.put("groupNumber", library.getGroupNumber());
         map.put("fileServer", fileService.getFileServer());
         map.put("fileServer", fileService.getFileServer());
         map.put("splitConfig", getSplitConfig());
         map.put("splitConfig", getSplitConfig());
+        Exam exam = examService.findById(library.getExamId());
+        ExamSubject examSubject = subjectService.find(library.getExamId(), library.getSubjectCode());
+        map.put("enableSplit", examSubject.isEnableSplit() == null ? exam.isEnableSplit() : examSubject.isEnableSplit());
         return map;
         return map;
     }
     }
 }
 }

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

@@ -15,7 +15,6 @@ import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.LogType;
 import cn.com.qmth.stmms.common.enums.LogType;
 import cn.com.qmth.stmms.common.enums.MarkStatus;
 import cn.com.qmth.stmms.common.enums.MarkStatus;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.enums.Role;
-import cn.com.qmth.stmms.common.utils.BigDecimalUtils;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 import net.sf.json.JSONObject;
 import net.sf.json.JSONObject;
@@ -91,6 +90,8 @@ public class ScoreController extends BaseExamController {
             buildPackageUrl(student);
             buildPackageUrl(student);
             buildAnswerUrl(student);
             buildAnswerUrl(student);
         }
         }
+        String logMessage = getLogMessage(query, filter);
+        RequestUtils.setLog(request, logMessage);
         String exportMessage = StringUtils.isNotBlank(query.getSubjectCode()) ? enableExport(examId,
         String exportMessage = StringUtils.isNotBlank(query.getSubjectCode()) ? enableExport(examId,
                 query.getSubjectCode()) : null;
                 query.getSubjectCode()) : null;
         if (exportMessage != null) {
         if (exportMessage != null) {
@@ -108,6 +109,56 @@ public class ScoreController extends BaseExamController {
         return view;
         return view;
     }
     }
 
 
+    private String getLogMessage(ExamStudentSearchQuery query, Integer filter) {
+        StringBuilder builder = new StringBuilder();
+        if (StringUtils.isNotBlank(query.getName())) {
+            builder.append("姓名:").append(query.getName()).append(";");
+        }
+        if (StringUtils.isNotBlank(query.getExamNumber())) {
+            builder.append("准考证号:").append(query.getExamNumber()).append(";");
+        }
+        if (StringUtils.isNotBlank(query.getStudentCode())) {
+            builder.append("学号:").append(query.getStudentCode()).append(";");
+        }
+        if (StringUtils.isNotBlank(query.getSubjectCode())) {
+            builder.append("科目代码:").append(query.getSubjectCode()).append(";");
+        }
+        if (filter == 1) {
+            builder.append("客观0分,主观有分").append(";");
+        }
+        if (filter == 2) {
+            builder.append("客观有分,主观0分").append(";");
+        }
+        if (query.getAbsent() != null) {
+            builder.append("缺考:").append(query.getAbsent() ? "缺考" : "正常").append(";");
+        }
+        if (query.getUpload() != null) {
+            builder.append("上传:").append(query.getUpload() ? "已上传" : "未上传").append(";");
+        }
+        if (query.getBreach() != null) {
+            builder.append("缺考:").append(query.getBreach() ? "违纪" : "正常").append(";");
+        }
+        if (StringUtils.isNotBlank(query.getExamSite())) {
+            builder.append("考点:").append(query.getExamSite()).append(";");
+        }
+        if (StringUtils.isNotBlank(query.getExamRoom())) {
+            builder.append("考场:").append(query.getExamRoom()).append(";");
+        }
+        if (StringUtils.isNotBlank(query.getCollege())) {
+            builder.append("学院:").append(query.getCollege()).append(";");
+        }
+        if (StringUtils.isNotBlank(query.getClassName())) {
+            builder.append("班级:").append(query.getClassName()).append(";");
+        }
+        if (StringUtils.isNotBlank(query.getTeacher())) {
+            builder.append("任课老师:").append(query.getTeacher()).append(";");
+        }
+        if (query.getStartScore() != null) {
+            builder.append("总分从").append(query.getStartScore()).append("到").append(query.getEndScore()).append(";");
+        }
+        return builder.toString();
+    }
+
     @Logging(menu = "分数详情", type = LogType.QUERY)
     @Logging(menu = "分数详情", type = LogType.QUERY)
     @RequestMapping("/detail")
     @RequestMapping("/detail")
     public ModelAndView detail(HttpServletRequest request, @RequestParam String examNumber,
     public ModelAndView detail(HttpServletRequest request, @RequestParam String examNumber,

+ 3 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java

@@ -303,6 +303,7 @@ public class MarkController extends BaseController {
         setting.accumulate("userName", RequestUtils.getWebUser(request).getName());
         setting.accumulate("userName", RequestUtils.getWebUser(request).getName());
         setProblemType(setting, marker);
         setProblemType(setting, marker);
         setting.accumulate("selective", group.isSelective());
         setting.accumulate("selective", group.isSelective());
+        setting.accumulate("autoScroll", exam.isAutoScroll());
         return setting;
         return setting;
     }
     }
 
 
@@ -706,7 +707,8 @@ public class MarkController extends BaseController {
             sheetConfig = buildPictureConfig(exam.getSheetConfig());
             sheetConfig = buildPictureConfig(exam.getSheetConfig());
         }
         }
         setting.accumulate("sheetConfig", sheetConfig);
         setting.accumulate("sheetConfig", sheetConfig);
-
+        setting.accumulate("enableSplit",
+                examSubject.isEnableSplit() == null ? exam.isEnableSplit() : examSubject.isEnableSplit());
         JSONObject subject = new JSONObject();
         JSONObject subject = new JSONObject();
         subject.accumulate("name", examSubject.getName());
         subject.accumulate("name", examSubject.getName());
         subject.accumulate("code", examSubject.getCode());
         subject.accumulate("code", examSubject.getCode());

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

@@ -18,6 +18,8 @@
 	    <input type="hidden" class="hiddenField" id="examNumberIn" name="examNumberIn"/>
 	    <input type="hidden" class="hiddenField" id="examNumberIn" name="examNumberIn"/>
 	    <input type="hidden" class="hiddenField" id="subjectCodeIn" name="subjectCodeIn"/>
 	    <input type="hidden" class="hiddenField" id="subjectCodeIn" name="subjectCodeIn"/>
 	    <input type="hidden" class="hiddenField" id="subjectCodeNotIn" name="subjectCodeNotIn"/>
 	    <input type="hidden" class="hiddenField" id="subjectCodeNotIn" name="subjectCodeNotIn"/>
+	    <input type="hidden" class="hiddenField" id="examSiteIn" name="examSiteIn"/>
+	    <input type="hidden" class="hiddenField" id="examSiteNotIn" name="examSiteNotIn"/>
 	   <!--  <input type="hidden" class="hiddenField" id="campusNameIn" name="campusNameIn"/>
 	   <!--  <input type="hidden" class="hiddenField" id="campusNameIn" name="campusNameIn"/>
         <input type="hidden" class="hiddenField" id="campusNameNotIn" name="campusNameNotIn"/> -->
         <input type="hidden" class="hiddenField" id="campusNameNotIn" name="campusNameNotIn"/> -->
         <input type="hidden" class="hiddenField" id="objectiveScoreGt" name="objectiveScoreGt"/>
         <input type="hidden" class="hiddenField" id="objectiveScoreGt" name="objectiveScoreGt"/>
@@ -65,6 +67,17 @@
                 <textarea id="campusNameInput" rows="6" maxlength="10000" class="input-xxlarge" placeholder="多个学习中心名称用英文逗号分隔"></textarea>
                 <textarea id="campusNameInput" rows="6" maxlength="10000" class="input-xxlarge" placeholder="多个学习中心名称用英文逗号分隔"></textarea>
             </div>
             </div>
         </div> -->
         </div> -->
+		<div class="control-group">
+            <label class="control-label">考点</label>
+            <div class="controls">
+                <select id="examSiteFunction" class="input-small">
+                    <option value="In">属于</option>
+                    <option value="NotIn">不属于</option>
+                </select>
+                <br/><br/>
+                <textarea id="examSiteInput" rows="6" maxlength="10000" class="input-xxlarge" placeholder="多个考点用英文逗号分隔"></textarea>
+            </div>
+        </div>
         <div class="control-group">
         <div class="control-group">
             <label class="control-label">客观总分</label>
             <label class="control-label">客观总分</label>
             <div class="controls">
             <div class="controls">
@@ -109,6 +122,7 @@ $('#count-button').click(function(){
     $('.hiddenField').val('');
     $('.hiddenField').val('');
     check('examNumber');
     check('examNumber');
     check('subjectCode');
     check('subjectCode');
+    check('examSite');
    // check('campusName');
    // check('campusName');
     check('objectiveScore');
     check('objectiveScore');
     check('subjectiveScore');
     check('subjectiveScore');

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

@@ -136,14 +136,14 @@
         <label class="control-label">及格分</label>
         <label class="control-label">及格分</label>
         <div class="controls">
         <div class="controls">
             <input name="passScore" type="number" value="${passScore }" class="required"
             <input name="passScore" type="number" value="${passScore }" class="required"
-                   oninput="if(value<0)value=0"/>
+                   oninput="if(value<0)value=0"/>%
         </div>
         </div>
     </div>
     </div>
     <div class="control-group">
     <div class="control-group">
         <label class="control-label">优秀分</label>
         <label class="control-label">优秀分</label>
         <div class="controls">
         <div class="controls">
             <input name="excellentScore" type="number" value="${excellentScore }" class="required"
             <input name="excellentScore" type="number" value="${excellentScore }" class="required"
-                   oninput="if(value<0)value=0"/>
+                   oninput="if(value<0)value=0"/>%
         </div>
         </div>
     </div>
     </div>
     <c:if test="${exam.id!=null }">
     <c:if test="${exam.id!=null }">
@@ -173,6 +173,18 @@
 		        <input name="sheetView" type="checkbox" <c:if test="${exam.sheetView}">checked</c:if>/>
 		        <input name="sheetView" type="checkbox" <c:if test="${exam.sheetView}">checked</c:if>/>
 		        </div>
 		        </div>
 			</div>
 			</div>
+			<div class="control-group">
+		        <label class="control-label">自动跳转</label>
+		        <div class="controls">
+		        <input name="autoScroll" type="checkbox" <c:if test="${exam.autoScroll}">checked</c:if>/>
+		        </div>
+			</div>
+			<div class="control-group">
+			        <label class="control-label">评卷裁切</label>
+			        <div class="controls">
+			        <input name="enableSplit" type="checkbox" <c:if test="${exam.enableSplit}">checked</c:if>/>
+			        </div>
+			</div>
         </c:if>
         </c:if>
     </c:if>
     </c:if>
     <div class="control-group">
     <div class="control-group">

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

@@ -134,13 +134,13 @@
     <div class="control-group">
     <div class="control-group">
         <label class="control-label">及格分</label>
         <label class="control-label">及格分</label>
         <div class="controls">
         <div class="controls">
-            <input name="passScore" type="number" value="60" class="required" oninput="if(value<0)value=0"/>
+            <input name="passScore" type="number" value="60" class="required" oninput="if(value<0)value=0"/>%
         </div>
         </div>
     </div>
     </div>
     <div class="control-group">
     <div class="control-group">
         <label class="control-label">优秀分</label>
         <label class="control-label">优秀分</label>
         <div class="controls">
         <div class="controls">
-            <input name="excellentScore" type="number" value="85" class="required" oninput="if(value<0)value=0"/>
+            <input name="excellentScore" type="number" value="90" class="required" oninput="if(value<0)value=0"/>%
         </div>
         </div>
     </div>
     </div>
     <c:if test="${exam.id!=null }">
     <c:if test="${exam.id!=null }">
@@ -162,6 +162,18 @@
 	        <input name="sheetView" type="checkbox" <c:if test="${exam.sheetView}">checked</c:if>/>
 	        <input name="sheetView" type="checkbox" <c:if test="${exam.sheetView}">checked</c:if>/>
 	        </div>
 	        </div>
 	</div>
 	</div>
+	<div class="control-group">
+	        <label class="control-label">自动跳转</label>
+	        <div class="controls">
+	        <input name="autoScroll" type="checkbox" <c:if test="${exam.autoScroll}">checked</c:if>/>
+	        </div>
+	</div>
+	<div class="control-group">
+	        <label class="control-label">评卷裁切</label>
+	        <div class="controls">
+	        <input name="enableSplit" type="checkbox" <c:if test="${exam.enableSplit}">checked</c:if>/>
+	        </div>
+	</div>
     <div class="control-group">
     <div class="control-group">
         <label class="control-label">描述</label>
         <label class="control-label">描述</label>
         <div class="controls">
         <div class="controls">

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

@@ -46,7 +46,7 @@
                 </option>
                 </option>
             </c:forEach>
             </c:forEach>
         </select>
         </select>
-        &nbsp;<br/>
+        &nbsp;<br/><br/>
         <label>考生编号</label>
         <label>考生编号</label>
         <input type="text" name="secretNumber" id="secretNumber" value="${query.secretNumber}" class="input-medium"/>
         <input type="text" name="secretNumber" id="secretNumber" value="${query.secretNumber}" class="input-medium"/>
         &nbsp;
         &nbsp;

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

@@ -65,7 +65,11 @@
         <input type="text" name="className" value="${query.className}" maxlength="64" class="input-mini"/>
         <input type="text" name="className" value="${query.className}" maxlength="64" class="input-mini"/>
         <label>任课老师</label>
         <label>任课老师</label>
         <input type="text" name="teacher" value="${query.teacher}" maxlength="64" class="input-mini"/>
         <input type="text" name="teacher" value="${query.teacher}" maxlength="64" class="input-mini"/>
-        
+        <label>考点</label>
+        <input type="text" name="examSite" value="${query.examSite}" maxlength="64" class="input-mini"/>
+        <label>考场</label>
+        <input type="text" name="examRoom" value="${query.examRoom}" maxlength="64" class="input-mini"/>
+        &nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         &nbsp;
         &nbsp;
         <c:if test="${web_user.schoolAdmin==true || forbiddenInfo==false}">
         <c:if test="${web_user.schoolAdmin==true || forbiddenInfo==false}">
@@ -88,6 +92,8 @@
 		<input type="text" name="college" value="${query.college}" class="input-small"/>
 		<input type="text" name="college" value="${query.college}" class="input-small"/>
 		<input type="text" name="className" value="${query.className}" class="input-small"/>
 		<input type="text" name="className" value="${query.className}" class="input-small"/>
 		<input type="text" name="teacher" value="${query.teacher}" class="input-small"/>
 		<input type="text" name="teacher" value="${query.teacher}" class="input-small"/>
+        <input type="text" name="examSite" value="${query.examSite}" maxlength="64" class="input-mini"/>
+        <input type="text" name="examRoom" value="${query.examRoom}" maxlength="64" class="input-mini"/>
 </form>
 </form>
 <tags:message content="${message}"/>
 <tags:message content="${message}"/>
 <table id="contentTable" class="table table-striped table-bordered table-condensed">
 <table id="contentTable" class="table table-striped table-bordered table-condensed">
@@ -105,6 +111,11 @@
         <th>是否缺考</th>
         <th>是否缺考</th>
         <th>是否上传</th>
         <th>是否上传</th>
         <th>是否违纪</th>
         <th>是否违纪</th>
+        <th>学院</th>
+        <th>班级</th>
+        <th>任课老师</th>
+        <th>考点</th>
+        <th>考场</th>
         <th>查看图片</th>
         <th>查看图片</th>
     </tr>
     </tr>
     </thead>
     </thead>
@@ -199,6 +210,11 @@
                     违纪
                     违纪
                 </c:if>
                 </c:if>
             </td>
             </td>
+            <td>${student.college}</td>
+            <td>${student.className}</td>
+            <td>${student.teacher}</td>
+            <td>${student.examSite}</td>
+            <td>${student.examRoom}</td>
             <td>
             <td>
                 <c:if test="${student.upload==true}">
                 <c:if test="${student.upload==true}">
                     <c:if test="${examType!='MULTI_MEDIA'}">
                     <c:if test="${examType!='MULTI_MEDIA'}">

+ 29 - 6
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/studentList.jsp

@@ -101,9 +101,19 @@
         </select>
         </select>
         <br><br>
         <br><br>
         <label>签到表编号</label>
         <label>签到表编号</label>
-        <input type="text" name="packageCode" value="${query.packageCode}" maxlength="30" class="input-small"/>
+        <input type="text" name="packageCode" value="${query.packageCode}" maxlength="30" class="input-mini"/>
         <label>批次编号</label>
         <label>批次编号</label>
-        <input type="text" name="batchCode" value="${query.batchCode}" maxlength="30" class="input-small"/>
+        <input type="text" name="batchCode" value="${query.batchCode}" maxlength="30" class="input-mini"/>
+        <label>学院</label>
+        <input type="text" name="college" value="${query.college}" maxlength="64" class="input-mini"/>
+        <label>班级</label>
+        <input type="text" name="className" value="${query.className}" maxlength="64" class="input-mini"/>
+        <label>任课老师</label>
+        <input type="text" name="teacher" value="${query.teacher}" maxlength="64" class="input-mini"/>
+        <label>考点</label>
+        <input type="text" name="examSite" value="${query.examSite}" maxlength="64" class="input-mini"/>
+        <label>考场</label>
+        <input type="text" name="examRoom" value="${query.examRoom}" maxlength="64" class="input-mini"/>
         <br><br>
         <br><br>
         &nbsp;<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         &nbsp;<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         <c:if test="${web_user.schoolAdmin==true}">
         <c:if test="${web_user.schoolAdmin==true}">
@@ -139,8 +149,13 @@
 		<input type="text" name="absent" value="${query.absent}" class="input-small"/>
 		<input type="text" name="absent" value="${query.absent}" class="input-small"/>
 		<input type="text" name="breach" value="${query.breach}" class="input-small"/>
 		<input type="text" name="breach" value="${query.breach}" class="input-small"/>
 		<input type="text" name="manualAbsent" value="${query.manualAbsent}" class="input-small"/>
 		<input type="text" name="manualAbsent" value="${query.manualAbsent}" class="input-small"/>
-		<input type="text" name="packageCode" value="${query.packageCode}" class="input-small"/>
-		<input type="text" name="batchCode" value="${query.batchCode}" class="input-small"/>
+		<input type="text" name="packageCode" value="${query.packageCode}" class="input-mini"/>
+		<input type="text" name="batchCode" value="${query.batchCode}" class="input-mini"/>
+        <input type="text" name="college" value="${query.college}" maxlength="64" class="input-mini"/>
+        <input type="text" name="className" value="${query.className}" maxlength="64" class="input-mini"/>
+        <input type="text" name="teacher" value="${query.teacher}" maxlength="64" class="input-mini"/>
+        <input type="text" name="examSite" value="${query.examSite}" maxlength="64" class="input-mini"/>
+        <input type="text" name="examRoom" value="${query.examRoom}" maxlength="64" class="input-mini"/>
 </form>
 </form>
 <tags:message content="${message}"/>
 <tags:message content="${message}"/>
 <table id="contentTable" class="table table-striped table-bordered table-condensed">
 <table id="contentTable" class="table table-striped table-bordered table-condensed">
@@ -158,7 +173,11 @@
         <th>人工指定</th>
         <th>人工指定</th>
         <th>批次编号</th>
         <th>批次编号</th>
         <th>签到表编号</th>
         <th>签到表编号</th>
-        <th>考试备注信息</th>
+        <th>学院</th>
+        <th>班级</th>
+        <th>任课老师</th>
+        <th>考点</th>
+        <th>考场</th>
         <th>操作</th>
         <th>操作</th>
     </tr>
     </tr>
     </thead>
     </thead>
@@ -222,7 +241,11 @@
                     ${student.packageCode}
                     ${student.packageCode}
                 </c:if>
                 </c:if>
             </td>
             </td>
-            <td>${student.examSite}&nbsp;${student.examRoom}</td>
+            <td>${student.college}</td>
+            <td>${student.className}</td>
+            <td>${student.teacher}</td>
+            <td>${student.examSite}</td>
+            <td>${student.examRoom}</td>
             <td>
             <td>
                 <c:if test="${web_user.schoolAdmin==true}">
                 <c:if test="${web_user.schoolAdmin==true}">
                     <a href="${ctx}/admin/exam/student/update?id=${student.id}">修改</a>
                     <a href="${ctx}/admin/exam/student/update?id=${student.id}">修改</a>

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

@@ -29,14 +29,14 @@
         <label class="control-label">及格分</label>
         <label class="control-label">及格分</label>
 	        <div class="controls">
 	        <div class="controls">
 	            <input name="passScore" type="number" value="${passScore }" class="required"
 	            <input name="passScore" type="number" value="${passScore }" class="required"
-	                   oninput="if(value<0)value=0"/>
+	                   oninput="if(value<0)value=0"/>%
 	        </div>
 	        </div>
 	    </div>
 	    </div>
 	    <div class="control-group">
 	    <div class="control-group">
 	        <label class="control-label">优秀分</label>
 	        <label class="control-label">优秀分</label>
 	        <div class="controls">
 	        <div class="controls">
 	            <input name="excellentScore" type="number" value="${excellentScore }" class="required"
 	            <input name="excellentScore" type="number" value="${excellentScore }" class="required"
-	                   oninput="if(value<0)value=0"/>
+	                   oninput="if(value<0)value=0"/>%
 	        </div>
 	        </div>
 	    </div>
 	    </div>
 		<div class="control-group">
 		<div class="control-group">

+ 1 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/report/reportSubjectRange.jsp

@@ -61,6 +61,7 @@
 	</form>
 	</form>
 <tags:message content="${message}"/>
 <tags:message content="${message}"/>
 <table id="contentTable" class="table table-striped table-bordered table-condensed">
 <table id="contentTable" class="table table-striped table-bordered table-condensed">
+<caption align="top">*分数段90-:表示分数小于等于90,并大于80分</caption> 
     <thead>
     <thead>
     <tr>
     <tr>
         <th>分数段</th>
         <th>分数段</th>

+ 3 - 0
stmms-web/src/main/webapp/sql/stmms_ft.sql

@@ -199,6 +199,8 @@ CREATE TABLE `eb_exam`
 	`sheet_view`		tinyint(1)   NOT NULL COMMENT '原卷显示功能',
 	`sheet_view`		tinyint(1)   NOT NULL COMMENT '原卷显示功能',
     `mark_mode`       	varchar(16)  DEFAULT NULL COMMENT '强制评卷模式',
     `mark_mode`       	varchar(16)  DEFAULT NULL COMMENT '强制评卷模式',
 	`scan_config`       text         DEFAULT NULL COMMENT '扫描配置',
 	`scan_config`       text         DEFAULT NULL COMMENT '扫描配置',
+    `auto_scroll`   	tinyint(1) 		NOT NULL COMMENT '评卷是否跳转',
+	`enable_split`   	tinyint(1)  	NOT NULL COMMENT '页面是否裁切',
     PRIMARY KEY (`id`),
     PRIMARY KEY (`id`),
     UNIQUE KEY `index1` (`school_id`, `code`)
     UNIQUE KEY `index1` (`school_id`, `code`)
 ) ENGINE = InnoDB
 ) ENGINE = InnoDB
@@ -326,6 +328,7 @@ CREATE TABLE `eb_exam_subject`
     `card_type`        varchar(16)  DEFAULT NULL COMMENT '题卡类型',
     `card_type`        varchar(16)  DEFAULT NULL COMMENT '题卡类型',
     `paper_file_type`  varchar(16)  DEFAULT NULL COMMENT '试卷文件类型',
     `paper_file_type`  varchar(16)  DEFAULT NULL COMMENT '试卷文件类型',
     `answer_file_type` varchar(16)  DEFAULT NULL COMMENT '标答文件类型',
     `answer_file_type` varchar(16)  DEFAULT NULL COMMENT '标答文件类型',
+	`enable_split`   	tinyint(1)	DEFAULT NULL COMMENT '页面是否裁切',
     PRIMARY KEY (`exam_id`, `code`)
     PRIMARY KEY (`exam_id`, `code`)
 ) ENGINE = InnoDB
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='考试科目表';
   DEFAULT CHARSET = utf8mb4 COMMENT ='考试科目表';