yin 1 month ago
parent
commit
c91c0327c2
24 changed files with 112 additions and 47 deletions
  1. 1 0
      install/mysql/init/stmms_ft.sql
  2. 1 0
      install/mysql/upgrade/1.6.0.sql
  3. 5 5
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/ExamStudentVo.java
  4. 3 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamSubjectDao.java
  5. 3 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/SelectiveGroupDao.java
  6. 3 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/SelectiveStudentDao.java
  7. 12 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamSubject.java
  8. 2 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamSubjectService.java
  9. 2 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/SelectiveGroupService.java
  10. 2 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java
  11. 7 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamSubjectServiceImpl.java
  12. 1 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectedServiceImpl.java
  13. 5 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/SelectiveGroupServiceImpl.java
  14. 10 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/Task.java
  15. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TaskServiceImpl.java
  16. 2 2
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java
  17. 16 10
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/SelectiveGroupController.java
  18. 1 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/DataSyncThread.java
  19. 1 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/OnlineExamThread.java
  20. 1 0
      stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java
  21. 7 7
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupAdd.jsp
  22. 7 7
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupEditFull.jsp
  23. 5 5
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/inspectedList.jsp
  24. 11 9
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/selectiveList.jsp

+ 1 - 0
install/mysql/init/stmms_ft.sql

@@ -413,6 +413,7 @@ CREATE TABLE `eb_exam_subject`
     `display_question_name` tinyint(1)  NOT NULL COMMENT '显示题目昵称',
     `display_question_name` tinyint(1)  NOT NULL COMMENT '显示题目昵称',
     `inspect_round`         INT(11)     NOT NULL DEFAULT 1 COMMENT '复核轮数',
     `inspect_round`         INT(11)     NOT NULL DEFAULT 1 COMMENT '复核轮数',
     `selective`             tinyint(1)  NOT NULL COMMENT '选做题科目',
     `selective`             tinyint(1)  NOT NULL COMMENT '选做题科目',
+    `enable_all_selective`  tinyint(1)  NOT NULL COMMENT '开启一键未选做',
     PRIMARY KEY (`exam_id`, `code`)
     PRIMARY KEY (`exam_id`, `code`)
 ) ENGINE = InnoDB
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='考试科目表';
   DEFAULT CHARSET = utf8mb4 COMMENT ='考试科目表';

+ 1 - 0
install/mysql/upgrade/1.6.0.sql

@@ -2,6 +2,7 @@
 USE `stmms_ft`;
 USE `stmms_ft`;
 ALTER TABLE eb_exam_question ADD COLUMN `track_count` int(11) NOT NULL COMMENT '给分次数';
 ALTER TABLE eb_exam_question ADD COLUMN `track_count` int(11) NOT NULL COMMENT '给分次数';
 ALTER TABLE eb_exam_student ADD COLUMN `collation_label_code` varchar(64) DEFAULT NULL COMMENT '回卷标识代码';
 ALTER TABLE eb_exam_student ADD COLUMN `collation_label_code` varchar(64) DEFAULT NULL COMMENT '回卷标识代码';
+ALTER TABLE eb_exam_subject ADD COLUMN `enable_all_selective`  tinyint(1)  NOT NULL COMMENT '开启一键未选做';
 
 
 DROP TABLE IF EXISTS `eb_collation_label`;
 DROP TABLE IF EXISTS `eb_collation_label`;
 CREATE TABLE `eb_collation_label`
 CREATE TABLE `eb_collation_label`

+ 5 - 5
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/ExamStudentVo.java

@@ -284,7 +284,7 @@ public class ExamStudentVo {
     
     
     private Boolean selective;
     private Boolean selective;
     
     
-    private String selectiveErr;
+    private String selectiveError;
 
 
     public Integer getId() {
     public Integer getId() {
         return id;
         return id;
@@ -880,12 +880,12 @@ public class ExamStudentVo {
 		this.selective = selective;
 		this.selective = selective;
 	}
 	}
 
 
-	public String getSelectiveErr() {
-		return selectiveErr;
+	public String getSelectiveError() {
+		return selectiveError;
 	}
 	}
 
 
-	public void setSelectiveErr(String selectiveErr) {
-		this.selectiveErr = selectiveErr;
+	public void setSelectiveError(String selectiveError) {
+		this.selectiveError = selectiveError;
 	}
 	}
 	
 	
 }
 }

+ 3 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamSubjectDao.java

@@ -109,4 +109,7 @@ public interface ExamSubjectDao
     @Query(value = "select count(*) from eb_exam_subject t left join eb_mark_group f on t.exam_id=f.exam_id and t.code=f.subject_code "
     @Query(value = "select count(*) from eb_exam_subject t left join eb_mark_group f on t.exam_id=f.exam_id and t.code=f.subject_code "
     		+ "where t.exam_id =?1  and t.subjective_score is not null and t.subjective_score>0 and f.exam_id is null", nativeQuery = true)
     		+ "where t.exam_id =?1  and t.subjective_score is not null and t.subjective_score>0 and f.exam_id is null", nativeQuery = true)
 	public long getNoGroupCount(Integer id);
 	public long getNoGroupCount(Integer id);
+    @Modifying
+    @Query("update ExamSubject s set s.enableAllSelective=?3 where s.pk.examId=?1 and s.pk.code=?2")
+    void updateEnableAllSelective(int examId, String subjectCode, boolean enableAllSelective);
 }
 }

+ 3 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/SelectiveGroupDao.java

@@ -31,4 +31,7 @@ public interface SelectiveGroupDao extends PagingAndSortingRepository<SelectiveG
     void updateScorePolicy(int examId, String subjectCode, Integer selectiveIndex, ScorePolicy scorePolicy);
     void updateScorePolicy(int examId, String subjectCode, Integer selectiveIndex, ScorePolicy scorePolicy);
     @Query("select distinct(q.pk.mainNumber) from SelectiveGroup q where q.pk.examId=?1 and q.pk.subjectCode=?2 and q.pk.mainNumber in (select e.mainNumber from ExamQuestion e where e.examId=?1 and e.subjectCode=?2 and e.groupNumber=?3 )order by q.pk.mainNumber")
     @Query("select distinct(q.pk.mainNumber) from SelectiveGroup q where q.pk.examId=?1 and q.pk.subjectCode=?2 and q.pk.mainNumber in (select e.mainNumber from ExamQuestion e where e.examId=?1 and e.subjectCode=?2 and e.groupNumber=?3 )order by q.pk.mainNumber")
     List<Integer> findByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber);
     List<Integer> findByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber);
+
+    @Query("select q from SelectiveGroup q where q.pk.examId=?1 and q.pk.subjectCode=?2 and q.selectiveIndex=?3 order by q.pk.mainNumber")
+    List<SelectiveGroup> findByExamIdAndSubjectCodeAndSelectiveIndex(Integer examId, String subjectCode, Integer selectiveIndex);
 }
 }

+ 3 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/SelectiveStudentDao.java

@@ -22,4 +22,7 @@ public interface SelectiveStudentDao extends JpaRepository<SelectiveStudent, Int
     void deleteByStudentId(Integer studentId);
     void deleteByStudentId(Integer studentId);
     @Query("select count(s) from SelectiveStudent s where s.examId=?1 and s.subjectCode=?2 and (s.lessSelective=?3 or s.notSelective=?4)")
     @Query("select count(s) from SelectiveStudent s where s.examId=?1 and s.subjectCode=?2 and (s.lessSelective=?3 or s.notSelective=?4)")
     int countByExamIdAndSubjectCodeAndLessSelectiveOrNotSelective(Integer examId, String subjectCode,boolean lessSelective,boolean noSelective);
     int countByExamIdAndSubjectCodeAndLessSelectiveOrNotSelective(Integer examId, String subjectCode,boolean lessSelective,boolean noSelective);
+
+    @Query("select count(s) from SelectiveStudent s where s.studentId=?1 and (s.lessSelective=?2 or s.notSelective=?3)")
+    int countByStudentIdAndLessSelectiveOrNotSelective(Integer studentId,boolean lessSelective,boolean noSelective);
 }
 }

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

@@ -129,7 +129,11 @@ public class ExamSubject implements Serializable {
      */
      */
     @Column(name = "selective")
     @Column(name = "selective")
     private boolean selective;
     private boolean selective;
-
+    /**
+     * 是否含选做题
+     */
+    @Column(name = "enable_all_selective", nullable = false)
+    private boolean enableAllSelective;
     /**
     /**
      * 大题数量
      * 大题数量
      */
      */
@@ -436,4 +440,11 @@ public class ExamSubject implements Serializable {
         this.selective = selective;
         this.selective = selective;
     }
     }
 
 
+    public boolean isEnableAllSelective() {
+        return enableAllSelective;
+    }
+
+    public void setEnableAllSelective(boolean enableAllSelective) {
+        this.enableAllSelective = enableAllSelective;
+    }
 }
 }

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

@@ -68,4 +68,6 @@ public interface ExamSubjectService {
 	Boolean checkSubjectAbsentForExport(Integer examId);
 	Boolean checkSubjectAbsentForExport(Integer examId);
 
 
     void updateCardType(int examId);
     void updateCardType(int examId);
+
+    void updateEnableAllSelective(Integer examId, String subjectCode, boolean enableAllSelective);
 }
 }

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

@@ -31,4 +31,6 @@ public interface SelectiveGroupService {
     double sumScoreByExamIdAndSubjectCode(int examId, String subjectCode);
     double sumScoreByExamIdAndSubjectCode(int examId, String subjectCode);
 
 
     List<Integer> findByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber);
     List<Integer> findByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber);
+
+    List<SelectiveGroup> findByExamIdAndSubjectCodeAndSelectiveIndex(Integer examId, String subjectCode, Integer selectiveIndex);
 }
 }

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

@@ -157,6 +157,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 subject.setDisplayQuestionName(true);
                 subject.setDisplayQuestionName(true);
                 subject.setInspectRound(1);
                 subject.setInspectRound(1);
                 subject.setSelective(false);
                 subject.setSelective(false);
+                subject.setEnableAllSelective(false);
             } else {
             } else {
                 subject.setLevel(es.getLevel());
                 subject.setLevel(es.getLevel());
                 subject.setCategory(es.getCategory());
                 subject.setCategory(es.getCategory());
@@ -216,6 +217,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
             subject.setDisplayQuestionName(true);
             subject.setDisplayQuestionName(true);
             subject.setInspectRound(1);
             subject.setInspectRound(1);
             subject.setSelective(false);
             subject.setSelective(false);
+            subject.setEnableAllSelective(false);
             subjectService.save(subject);
             subjectService.save(subject);
         } else {
         } else {
             student.setSubjectName(subject.getName());
             student.setSubjectName(subject.getName());

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

@@ -367,6 +367,12 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
         }
         }
     }
     }
 
 
+    @Override
+    @Transactional
+    public void updateEnableAllSelective(Integer examId, String subjectCode, boolean enableAllSelective) {
+        subjectDao.updateEnableAllSelective(examId, subjectCode, enableAllSelective);
+    }
+
     @Override
     @Override
     public Boolean checkSubjectForExport(Integer examId) {
     public Boolean checkSubjectForExport(Integer examId) {
         Exam exam = examService.findById(examId);
         Exam exam = examService.findById(examId);
@@ -486,6 +492,7 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
                     es.setDisplayQuestionName(true);
                     es.setDisplayQuestionName(true);
                     es.setInspectRound(1);
                     es.setInspectRound(1);
                     es.setSelective(false);
                     es.setSelective(false);
+                    es.setEnableAllSelective(false);
                     subjectDao.saveAndFlush(es);
                     subjectDao.saveAndFlush(es);
                 } else {
                 } else {
                     // long count =
                     // long count =

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

@@ -66,7 +66,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         sql.append(" s.card_number cardNumber,s.inspect_count inspectCount,s.score_verify_user scoreVerifyUser,");
         sql.append(" s.card_number cardNumber,s.inspect_count inspectCount,s.score_verify_user scoreVerifyUser,");
         sql.append(" s.score_verify_time scoreVerifyTime,s.score_verify_flagged scoreVerifyFlagged,s.inspect_time inspectTime,");
         sql.append(" s.score_verify_time scoreVerifyTime,s.score_verify_flagged scoreVerifyFlagged,s.inspect_time inspectTime,");
         sql.append(" s.inspector_id inspectorId,s.inspected, ");
         sql.append(" s.inspector_id inspectorId,s.inspected, ");
-        sql.append(" (case when ss.not_selective=1 or ss.less_selective=1 then '是' else '否' end) selectiveErr ");
+        sql.append(" (case when ss.not_selective=1 or ss.less_selective=1 then '是' else '否' end) selectiveError ");
         sql.append(" from eb_exam_student s left join eb_exam_subject es on s.exam_id=es.exam_id and s.subject_code=es.code ");
         sql.append(" from eb_exam_student s left join eb_exam_subject es on s.exam_id=es.exam_id and s.subject_code=es.code ");
         sql.append(" left join eb_selective_student ss on ss.student_id = s.id ");
         sql.append(" left join eb_selective_student ss on ss.student_id = s.id ");
         String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore, selectiveStatus);
         String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore, selectiveStatus);

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

@@ -173,4 +173,9 @@ public class SelectiveGroupServiceImpl extends BaseQueryService<SelectiveGroup>
     public List<Integer> findByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber) {
     public List<Integer> findByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber) {
         return this.selectiveGroupDao.findByExamIdAndSubjectCodeAndGroupNumber(examId,subjectCode,groupNumber);
         return this.selectiveGroupDao.findByExamIdAndSubjectCodeAndGroupNumber(examId,subjectCode,groupNumber);
     }
     }
+
+    @Override
+    public List<SelectiveGroup> findByExamIdAndSubjectCodeAndSelectiveIndex(Integer examId, String subjectCode, Integer selectiveIndex) {
+        return selectiveGroupDao.findByExamIdAndSubjectCodeAndSelectiveIndex(examId, subjectCode,selectiveIndex);
+    }
 }
 }

+ 10 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/Task.java

@@ -147,6 +147,8 @@ public class Task implements Serializable {
 
 
     private String collationLabelCode;
     private String collationLabelCode;
 
 
+    private Boolean selectiveError;
+
     public Integer getLibraryId() {
     public Integer getLibraryId() {
         return libraryId;
         return libraryId;
     }
     }
@@ -370,4 +372,12 @@ public class Task implements Serializable {
     public void setCollationLabelCode(String collationLabelCode) {
     public void setCollationLabelCode(String collationLabelCode) {
         this.collationLabelCode = collationLabelCode;
         this.collationLabelCode = collationLabelCode;
     }
     }
+
+    public Boolean getSelectiveError() {
+        return selectiveError;
+    }
+
+    public void setSelectiveError(Boolean selectiveError) {
+        this.selectiveError = selectiveError;
+    }
 }
 }

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TaskServiceImpl.java

@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.biz.mark.service.Impl;
 
 
 import java.util.*;
 import java.util.*;
 
 
+import cn.com.qmth.stmms.biz.exam.dao.SelectiveStudentDao;
 import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.common.enums.*;
 import cn.com.qmth.stmms.common.enums.*;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
@@ -74,6 +75,8 @@ public class TaskServiceImpl implements TaskService {
 
 
     @Autowired
     @Autowired
     private RejectHistoryService rejectHistoryService;
     private RejectHistoryService rejectHistoryService;
+    @Autowired
+    private SelectiveStudentDao selectiveStudentDao;
 
 
     @Override
     @Override
     public List<Task> findByQuery(MarkLibrarySearchQuery query) {
     public List<Task> findByQuery(MarkLibrarySearchQuery query) {
@@ -435,6 +438,7 @@ public class TaskServiceImpl implements TaskService {
         }
         }
         task.setMarkerScore(student.getTotalScore());
         task.setMarkerScore(student.getTotalScore());
         task.setInspectTime(student.getInspectTime());
         task.setInspectTime(student.getInspectTime());
+        task.setSelectiveError(selectiveStudentDao.countByStudentIdAndLessSelectiveOrNotSelective(student.getId(),true,true)>0);
         return task;
         return task;
     }
     }
 
 

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

@@ -646,8 +646,8 @@ public class PaperController extends BaseExamController {
             List<ExamQuestion> list = new ArrayList<ExamQuestion>();
             List<ExamQuestion> list = new ArrayList<ExamQuestion>();
             list.add(question);
             list.add(question);
             taskExecutor.submit(new QuestionDeleteThread(list, markService, lockService));
             taskExecutor.submit(new QuestionDeleteThread(list, markService, lockService));
-            RequestUtils.setLog(request, "开始删除题目,subjectCode:" + subjectCode + " main number:"
-                    + question.getMainNumber() + " sub number:" + question.getSubNumber());
+            RequestUtils.setLog(request, "开始删除题目,科目代码:" + subjectCode + " 大题号:"
+                    + question.getMainNumber() + " 小题号:" + question.getSubNumber());
         }
         }
         String u = upload == null ? "" : upload.toString();
         String u = upload == null ? "" : upload.toString();
         String t = query.getTotalScoreNotEqual() == null ? "" : query.getTotalScoreNotEqual().toString();
         String t = query.getTotalScoreNotEqual() == null ? "" : query.getTotalScoreNotEqual().toString();

+ 16 - 10
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/SelectiveGroupController.java

@@ -9,6 +9,7 @@ import java.util.Set;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 
 
+import cn.com.qmth.stmms.biz.exam.model.*;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
@@ -25,10 +26,6 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 
 import cn.com.qmth.stmms.admin.dto.SelectivePartDTO;
 import cn.com.qmth.stmms.admin.dto.SelectivePartDTO;
 import cn.com.qmth.stmms.admin.thread.SubjectiveCalculateThread;
 import cn.com.qmth.stmms.admin.thread.SubjectiveCalculateThread;
-import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
-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.SelectiveGroup;
 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.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.ExamSubjectService;
@@ -245,19 +242,28 @@ public class SelectiveGroupController extends BaseExamController {
     @RequestMapping("/edit")
     @RequestMapping("/edit")
     @Transactional
     @Transactional
     public String edit(HttpServletRequest request, RedirectAttributes redirectAttributes,
     public String edit(HttpServletRequest request, RedirectAttributes redirectAttributes,
-            @RequestParam String subjectCode, @RequestParam Integer selectiveIndex, @RequestParam Integer policy) {
+            @RequestParam String subjectCode, @RequestParam Integer selectiveIndex, @RequestParam Integer policy,@RequestParam(required = true,defaultValue = "false") Boolean enableAllSelective) {
         int examId = getSessionExamId(request);
         int examId = getSessionExamId(request);
         if (lockService.isLocked(LockType.SCORE_CALCULATE, examId, subjectCode)) {
         if (lockService.isLocked(LockType.SCORE_CALCULATE, examId, subjectCode)) {
             addMessage(redirectAttributes, "正在统分中,请稍后再试");
             addMessage(redirectAttributes, "正在统分中,请稍后再试");
             return "redirect:/admin/exam/selectiveGroup?subjectCode=" + subjectCode;
             return "redirect:/admin/exam/selectiveGroup?subjectCode=" + subjectCode;
         }
         }
-        selectiveGroupService.updateScorePolicy(examId, subjectCode, selectiveIndex, ScorePolicy.findByValue(policy));
+        ExamSubject subject = subjectService.find(examId,subjectCode);
+        if(subject.isEnableAllSelective()!=enableAllSelective){
+            subjectService.updateEnableAllSelective(examId,subjectCode,enableAllSelective);
+        }
+        List<SelectiveGroup> list = selectiveGroupService.findByExamIdAndSubjectCodeAndSelectiveIndex(examId,subjectCode,selectiveIndex);
+        if(!list.isEmpty() && list.get(0).getScorePolicy().equals(ScorePolicy.findByValue(policy))){
+            return "redirect:/admin/exam/selectiveGroup?subjectCode=" + subjectCode;
+        }else{
+            selectiveGroupService.updateScorePolicy(examId, subjectCode, selectiveIndex, ScorePolicy.findByValue(policy));
 //        List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(examId, subjectCode,
 //        List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(examId, subjectCode,
 //                SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
 //                SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
-        SubjectiveCalculateThread thread = new SubjectiveCalculateThread(examId, subjectCode, markService,
-                lockService, questionService, groupService, markerService, inspectedService,studentService);
-        taskExecutor.submit(thread);
-        return "redirect:/admin/exam/selectiveGroup?subjectCode=" + subjectCode;
+            SubjectiveCalculateThread thread = new SubjectiveCalculateThread(examId, subjectCode, markService,
+                    lockService, questionService, groupService, markerService, inspectedService,studentService);
+            taskExecutor.submit(thread);
+            return "redirect:/admin/exam/selectiveGroup?subjectCode=" + subjectCode;
+        }
     }
     }
 
 
 }
 }

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

@@ -242,6 +242,7 @@ public class DataSyncThread implements Runnable {
         subject.setDisplayQuestionName(true);
         subject.setDisplayQuestionName(true);
         subject.setInspectRound(1);
         subject.setInspectRound(1);
         subject.setSelective(false);
         subject.setSelective(false);
+        subject.setEnableAllSelective(false);
         subjectService.save(subject);
         subjectService.save(subject);
     }
     }
 
 

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

@@ -224,6 +224,7 @@ public class OnlineExamThread implements Runnable {
         subject.setDisplayQuestionName(true);
         subject.setDisplayQuestionName(true);
         subject.setInspectRound(1);
         subject.setInspectRound(1);
         subject.setSelective(false);
         subject.setSelective(false);
+        subject.setEnableAllSelective(false);
         subjectService.save(subject);
         subjectService.save(subject);
         subjectMap.put(subjectCode, subject);
         subjectMap.put(subjectCode, subject);
         // 保存question
         // 保存question

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

@@ -787,6 +787,7 @@ public class MarkController extends BaseController {
         examSubject.setPaperAnswerUrl(fileService);
         examSubject.setPaperAnswerUrl(fileService);
         subject.accumulate("paperUrl", examSubject.getPaperUrl() == null ? "" : examSubject.getPaperUrl());
         subject.accumulate("paperUrl", examSubject.getPaperUrl() == null ? "" : examSubject.getPaperUrl());
         subject.accumulate("answerUrl", examSubject.getAnswerUrl() == null ? "" : examSubject.getAnswerUrl());
         subject.accumulate("answerUrl", examSubject.getAnswerUrl() == null ? "" : examSubject.getAnswerUrl());
+        setting.accumulate("enableAllSelective", examSubject.isEnableAllSelective());
         setting.accumulate("subject", subject);
         setting.accumulate("subject", subject);
     }
     }
 
 

+ 7 - 7
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupAdd.jsp

@@ -115,15 +115,15 @@
                 </caption>
                 </caption>
                 <thead>
                 <thead>
                 <tr>
                 <tr>
-                    <th></th>
-                    <th>大题号</th>
-                    <th>小题号</th>
+                    <th width="50px"></th>
+                    <th width="50px">大题号</th>
+                    <th  width="50px">小题号</th>
                     <th>名称</th>
                     <th>名称</th>
                     <th>昵称</th>
                     <th>昵称</th>
-                    <th>分数</th>
-                    <th>是否选做题</th>
-                    <th>选做题分组</th>
-                    <th>选做题区</th>
+                    <th width="50px">分数</th>
+                    <th width="50px">是否选做题</th>
+                    <th width="50px">选做题分组</th>
+                    <th width="50px">选做题区</th>
                 </tr>
                 </tr>
                 </thead>
                 </thead>
                 <c:forEach items="${questionList}" var="item">
                 <c:forEach items="${questionList}" var="item">

+ 7 - 7
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupEditFull.jsp

@@ -256,15 +256,15 @@
                 </caption>
                 </caption>
                 <thead>
                 <thead>
                 <tr>
                 <tr>
-                    <th></th>
-                    <th>大题号</th>
-                    <th>小题号</th>
+                    <th width="50px"></th>
+                    <th width="50px">大题号</th>
+                    <th width="50px">小题号</th>
                     <th>名称</th>
                     <th>名称</th>
                     <th>昵称</th>
                     <th>昵称</th>
-                    <th>分数</th>
-                    <th>是否选做题</th>
-                    <th>选做题分组</th>
-                    <th>选做题区</th>
+                    <th width="50px">分数</th>
+                    <th width="50px">是否选做题</th>
+                    <th width="50px">选做题分组</th>
+                    <th width="50px">选做题区</th>
                 </tr>
                 </tr>
                 </thead>
                 </thead>
                 <c:forEach items="${questionList}" var="item">
                 <c:forEach items="${questionList}" var="item">

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

@@ -5,10 +5,10 @@
     <title>成绩复核</title>
     <title>成绩复核</title>
     <meta name="decorator" content="default"/>
     <meta name="decorator" content="default"/>
     <%@include file="/WEB-INF/views/include/head.jsp" %>
     <%@include file="/WEB-INF/views/include/head.jsp" %>
-    <style type="text/css">.sort {
-        color: #0663A2;
-        cursor: pointer;
-    }</style>
+    <style type="text/css">
+        .sort{color:#0663A2;cursor:pointer;}
+        .selectiveError{color:#FF5F5F}
+    </style>
 </head>
 </head>
 <body>
 <body>
 <div id="importBox" class="hide">
 <div id="importBox" class="hide">
@@ -174,7 +174,7 @@
                     ${result.secretNumber}
                     ${result.secretNumber}
                 </c:if>
                 </c:if>
             </td>
             </td>
-            <td>${result.selectiveErr}</td>
+            <td <c:if test="${result.selectiveError=='是'}">class="selectiveError" </c:if>>${result.selectiveError}</td>
             <td>${result.objectiveScoreString}</td>
             <td>${result.objectiveScoreString}</td>
             <td>${result.subjectiveScoreString}</td>
             <td>${result.subjectiveScoreString}</td>
             <td><fmt:formatNumber pattern="###.###" value="${result.totalScore}"/></td>
             <td><fmt:formatNumber pattern="###.###" value="${result.totalScore}"/></td>

+ 11 - 9
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/selectiveList.jsp

@@ -183,14 +183,16 @@
 	    <div class="task-header">
 	    <div class="task-header">
 	        <p class="title">设置选做题规则</p>
 	        <p class="title">设置选做题规则</p>
 	        <p class="image-close"><img src="${ctxStatic}/mark-new/images/images-close.png"/></p></div>
 	        <p class="image-close"><img src="${ctxStatic}/mark-new/images/images-close.png"/></p></div>
-	    <div class="task-content">选做题规则:<span id ="scorePolicySpan"></span> <br/><br/>
-	    <div style="z-index:99999">
-	    取分规则:<select name="policy" style="z-index:99999;" id="scorePolicySelect">
-	    			 <c:forEach items="${scorePolicyList}" var="item">
-                        <option value="${item.value }">${item.name }</option>
-                     </c:forEach>
-	    		</select><br/><br/>
-	    </div>
+	    <div class="task-content">
+			选做题规则:<span id ="scorePolicySpan"></span><br/>
+			启用一键未选做:<input name="enableAllSelective" type="checkbox" <c:if test="${subject.enableAllSelective}">checked</c:if>/><br/>
+			<div style="z-index:99999">
+			取分规则:<select name="policy" style="z-index:99999;" id="scorePolicySelect">
+						 <c:forEach items="${scorePolicyList}" var="item">
+							<option value="${item.value }">${item.name }</option>
+						 </c:forEach>
+					</select><br/><br/>
+			</div>
 	    *如选做为5选3,则系统会校验后续选做题总量为5,合分数量为3。
 	    *如选做为5选3,则系统会校验后续选做题总量为5,合分数量为3。
 	    <i class="wrong"> </i>
 	    <i class="wrong"> </i>
 	    </div>
 	    </div>
@@ -259,7 +261,7 @@ $('.task-btn').click(function () {
    $('#inputForm').submit();
    $('#inputForm').submit();
 });
 });
 $('.btn-score-policy').click(function () {
 $('.btn-score-policy').click(function () {
-	if(confirm('修改取分规则会触发重新算分,算分完成前,不能进行该科目的任何操作!')){
+	if(confirm('修改取分规则会触发重新算分,算分完成前,不能进行该科目的任何操作!仅修改启用一键未选做不触发统分')){
 		 $("#inputForm").attr("action", "${ctx}/admin/exam/selectiveGroup/edit");
 		 $("#inputForm").attr("action", "${ctx}/admin/exam/selectiveGroup/edit");
 		   $('#inputForm').submit();
 		   $('#inputForm').submit();
 	}
 	}