瀏覽代碼

Merge remote-tracking branch 'origin/test20200828' into dev_20201016

ting.yin 4 年之前
父節點
當前提交
6230148c97

+ 9 - 6
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/MarkGroupStudentDao.java

@@ -1,16 +1,19 @@
 package cn.com.qmth.stmms.biz.exam.dao;
 
-import cn.com.qmth.stmms.biz.exam.model.MarkGroupStudent;
-import cn.com.qmth.stmms.biz.exam.model.MarkGroupStudentPK;
-import cn.com.qmth.stmms.common.enums.LibraryStatus;
-import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
-import java.util.List;
+import cn.com.qmth.stmms.biz.exam.model.MarkGroupStudent;
+import cn.com.qmth.stmms.biz.exam.model.MarkGroupStudentPK;
+import cn.com.qmth.stmms.common.enums.LibraryStatus;
+import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 
-public interface MarkGroupStudentDao extends PagingAndSortingRepository<MarkGroupStudent, MarkGroupStudentPK> {
+public interface MarkGroupStudentDao extends JpaRepository<MarkGroupStudent, MarkGroupStudentPK>,
+        PagingAndSortingRepository<MarkGroupStudent, MarkGroupStudentPK> {
 
     @Query("select s from MarkGroupStudent s where s.pk.studentId=?1 and s.pk.groupNumber=?2")
     MarkGroupStudent findByStudentIdAndGroupNumber(Integer studentId, Integer groupNumber);

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

@@ -109,6 +109,12 @@ public class Exam implements Serializable {
     @Column(name = "forbidden_info", nullable = false)
     private boolean forbiddenInfo;
 
+    /**
+     * 禁止查看成绩
+     */
+    @Column(name = "forbidden_score", nullable = false)
+    private boolean forbiddenScore;
+
     /**
      * 客观题统分状态
      */
@@ -280,6 +286,14 @@ public class Exam implements Serializable {
         this.forbiddenInfo = forbiddenInfo;
     }
 
+    public boolean isForbiddenScore() {
+        return forbiddenScore;
+    }
+
+    public void setForbiddenScore(boolean forbiddenScore) {
+        this.forbiddenScore = forbiddenScore;
+    }
+
     public ObjectiveStatus getObjectiveStatus() {
         return objectiveStatus;
     }

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

@@ -634,6 +634,9 @@ public class MarkServiceImpl implements MarkService {
             // 触发仲裁后续状态更新
             libraryDao.updateByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber(),
                     LibraryStatus.WAIT_ARBITRATE);
+            // 未评完
+            resetStudentGroup(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
+                    library.getGroupNumber());
         } else {
             // 判断当前分组是否已完成评卷
             checkStudentGroup(library.getStudentId(), group);
@@ -1279,7 +1282,7 @@ public class MarkServiceImpl implements MarkService {
         gs.setSubjectCode(subjectCode);
         gs.setGroupNumber(groupNumber);
         gs.setStatus(status);
-        groupStudentDao.save(gs);
+        groupStudentDao.saveAndFlush(gs);
     }
 
     private void updateStudentGroupScore(Integer studentId, Integer examId, String subjectCode, Integer groupNumber,
@@ -1287,7 +1290,6 @@ public class MarkServiceImpl implements MarkService {
         // scoreDao.deleteByStudentIdAndGroupNumber(studentId, groupNumber);
         List<ExamQuestion> questions = questionDao.findByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(examId,
                 subjectCode, false, groupNumber);
-        List<SubjectiveScore> list = new ArrayList<>();
         for (int i = 0; i < scoreList.size(); i++) {
             ScoreItem item = scoreList.get(i);
             ExamQuestion question = questions.get(i);
@@ -1301,9 +1303,8 @@ public class MarkServiceImpl implements MarkService {
             ss.setMainNumber(question.getMainNumber());
             ss.setSubNumber(question.getSubNumber());
             ss.setScore(item.getScore());
-            list.add(ss);
+            scoreDao.saveAndFlush(ss);
         }
-        scoreDao.save(list);
     }
 
     @Override

+ 15 - 12
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/SubjectQuestionDTO.java

@@ -85,11 +85,10 @@ public class SubjectQuestionDTO {
         return groups;
     }
 
-    public boolean validate(List<String> error) {
+    public boolean validate(List<String> error, Map<Integer, String> titleMap) {
         if (list.size() > 0) {
             Set<String> numberSet = new HashSet<String>();
-            Map<Integer, String> titleMap = new HashMap<Integer, String>();
-            //Map<Integer, Integer> groupNumberMap = new HashMap<Integer, Integer>();
+            // Map<Integer, Integer> groupNumberMap = new HashMap<>();
             try {
                 // 基本字段合法性校验
                 for (ExamQuestion question : list) {
@@ -126,14 +125,18 @@ public class SubjectQuestionDTO {
                         titleMap.put(question.getMainNumber(), question.getMainTitle());
                     }
 
-                    //不再限制一个大题只能属于一个评卷分组
-                    //                    Integer groupNumber = groupNumberMap.get(question.getMainNumber());
-                    //                    if (groupNumber != null && !groupNumber.equals(question.getGroupNumber())) {
-                    //                        error.add("[" + subjectCode + "] 大题号" + question.getMainNumber() + "有评卷分组不一致的记录");
-                    //                        return false;
-                    //                    } else {
-                    //                        groupNumberMap.put(question.getMainNumber(), question.getGroupNumber());
-                    //                    }
+                    // 不再限制一个大题只能属于一个评卷分组
+                    // Integer groupNumber =
+                    // groupNumberMap.get(question.getMainNumber());
+                    // if (groupNumber != null &&
+                    // !groupNumber.equals(question.getGroupNumber())) {
+                    // error.add("[" + subjectCode + "] 大题号" +
+                    // question.getMainNumber() + "有评卷分组不一致的记录");
+                    // return false;
+                    // } else {
+                    // groupNumberMap.put(question.getMainNumber(),
+                    // question.getGroupNumber());
+                    // }
 
                     String number = question.getQuestionNumber();
                     if (objective) {
@@ -177,7 +180,7 @@ public class SubjectQuestionDTO {
             } finally {
                 numberSet.clear();
                 titleMap.clear();
-                //groupNumberMap.clear();
+                // groupNumberMap.clear();
             }
         } else {
             return false;

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

@@ -142,6 +142,11 @@ public class ExamController extends BaseExamController {
             oldExam.setStatus(exam.getStatus());
             oldExam.setForceSpecialTag(exam.isForceSpecialTag());
             oldExam.setForbiddenInfo(exam.isForbiddenInfo());
+            if (exam.isForbiddenInfo()) {
+                oldExam.setForbiddenScore(exam.isForbiddenScore());
+            } else {
+                oldExam.setForbiddenScore(false);
+            }
             JSONObject sasConfig = new JSONObject();
             sasConfig.accumulate("passScore", passScore);
             sasConfig.accumulate("excellentScore", excellentScore);

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

@@ -208,7 +208,13 @@ public class PaperController extends BaseExamController {
                 examService.updateObjectiveStatus(examId, ObjectiveStatus.WAITING);
                 ExamSubject subject = subjectService.find(examId, dto.getSubjectCode());
                 if (subject != null) {
-                    if (dto.validate(error)) {
+                    Map<Integer, String> titleMap = new HashMap<>();
+                    List<ExamQuestion> current = questionService.findByExamAndSubjectAndObjective(examId,
+                            subject.getCode(), false);
+                    for (ExamQuestion question : current) {
+                        titleMap.put(question.getMainNumber(), question.getMainTitle());
+                    }
+                    if (dto.validate(error, titleMap)) {
                         if (objective) {
                             questionService.deleteByExamAndSubjectAndObjective(examId, dto.getSubjectCode(), objective);
                             for (ExamQuestion question : dto.getQuestionList()) {

+ 5 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/utils/SessionExamUtils.java

@@ -14,6 +14,8 @@ public class SessionExamUtils {
 
     public static final String FORBIDDEN_INFO_KEY = "forbiddenInfo";
 
+    public static final String FORBIDDEN_SCORE_KEY = "forbiddenScore";
+
     public static int getExamId(HttpServletRequest request) {
         int examId = 0;
         try {
@@ -36,14 +38,17 @@ public class SessionExamUtils {
         session.setParameter(EXAM_ID_KEY, null);
         session.setParameter(EXAM_NAME_KEY, null);
         session.setParameter(FORBIDDEN_INFO_KEY, null);
+        session.setParameter(FORBIDDEN_SCORE_KEY, null);
         request.removeAttribute(EXAM_ID_KEY);
         request.removeAttribute(EXAM_NAME_KEY);
         request.removeAttribute(FORBIDDEN_INFO_KEY);
+        request.removeAttribute(FORBIDDEN_SCORE_KEY);
     }
 
     public static void setExamId(HttpServletRequest request, Exam exam) {
         StmmsSession session = RequestUtils.getSession(request);
         session.setParameter(EXAM_ID_KEY, String.valueOf(exam.getId()));
         session.setParameter(FORBIDDEN_INFO_KEY, String.valueOf(exam.isForbiddenInfo()));
+        session.setParameter(FORBIDDEN_SCORE_KEY, String.valueOf(exam.isForbiddenScore()));
     }
 }

+ 3 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CoreController.java

@@ -288,6 +288,9 @@ public class CoreController extends BaseApiController {
             obj.accumulate("subjectCode", student.getSubjectCode());
             obj.accumulate("subjectName", student.getSubjectName());
             obj.accumulate("paperType", StringUtils.trimToEmpty(student.getPaperType()));
+            obj.accumulate("className", student.getClassName());
+            obj.accumulate("college", student.getCollege());
+            obj.accumulate("teacher", student.getTeacher());
             obj.accumulate("status", getStatus(student));
             obj.accumulate("totalScore", df.format(student.getTotalScore()));
             obj.accumulate("objectiveScore", df.format(student.getObjectiveScore()));

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/ExamStudentController.java

@@ -99,7 +99,7 @@ public class ExamStudentController extends BaseApiController {
         return 0;
     }
 
-    @RoleRequire({ Role.SCHOOL_ADMIN })
+    @RoleRequire({ Role.SCHOOL_ADMIN, Role.SCANNER })
     @RequestMapping("/exam/students")
     @ResponseBody
     public JSONArray getStudent(HttpServletRequest request, ExamStudentSearchQuery query,

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

@@ -40,9 +40,11 @@
 	            <option value="${item.value}" <c:if test="${query.status!=null && item.value==query.status.value}">selected</c:if>>${item.name}</option>
                 </c:forEach>
             </select>
+            <c:if test="${web_user.schoolAdmin==true || forbiddenScore==false}">
             <label>准考证号</label>
             <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-medium"/>
 			&nbsp;
+			</c:if>
 			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
 			
 			<c:if test="${query.totalCount>0}">

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

@@ -25,6 +25,23 @@
                     }
                 }
             });
+            
+            var forbiddenInfo = ${exam.forbiddenInfo};
+            debugger;
+            if (forbiddenInfo != null && forbiddenInfo ==true) {
+                $("#forbiddenScoreDiv").show();
+            } else {
+            	$("#forbiddenScore").prop("checked", false);
+                $("#forbiddenScoreDiv").hide();
+            }
+            $("#forbiddenInfo").change(function () {
+                if ($("#forbiddenInfo").is(':checked')) {
+                    $("#forbiddenScoreDiv").show();
+                } else {
+                	$("#forbiddenScore").prop("checked", false);
+                    $("#forbiddenScoreDiv").hide();
+                }
+            });
         });
     </script>
 </head>
@@ -70,9 +87,17 @@
 	<div class="control-group">
         <label class="control-label">禁止其他人查看考生信息</label>
         <div class="controls">
-            <input name="forbiddenInfo" type="checkbox" <c:if test="${exam.forbiddenInfo}">checked</c:if>/>
+            <input name="forbiddenInfo" id="forbiddenInfo" type="checkbox" <c:if test="${exam.forbiddenInfo}">checked</c:if>/>
+        </div>
+    </div>
+	<div id="forbiddenScoreDiv">
+	<div class="control-group" >
+        <label class="control-label">禁止科组长成绩查询</label>
+        <div class="controls">
+            <input name="forbiddenScore" id="forbiddenScore" type="checkbox" <c:if test="${exam.forbiddenScore}">checked</c:if>/>
         </div>
     </div>
+    </div>
     <div class="control-group">
         <label class="control-label">及格分</label>
         <div class="controls">

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

@@ -30,6 +30,15 @@
                     $("#forceSpecialTagDiv").show();
                 }
             });
+            $("#forbiddenScoreDiv").hide();
+            $("#forbiddenInfo").change(function () {
+                if ($("#forbiddenInfo").is(':checked')) {
+                    $("#forbiddenScoreDiv").show();
+                } else {
+                	$("#forbiddenScore").prop("checked", false);
+                    $("#forbiddenScoreDiv").hide();
+                }
+            });
         });
     </script>
 </head>
@@ -77,8 +86,16 @@
 	<div class="control-group">
         <label class="control-label">禁止其他人查看考生信息</label>
         <div class="controls">
-            <input name="forbiddenInfo" type="checkbox" <c:if test="${exam.forbiddenInfo}">checked</c:if>/>
+            <input name="forbiddenInfo" id="forbiddenInfo" type="checkbox" <c:if test="${exam.forbiddenInfo}">checked</c:if>/>
         </div>
+    </div>
+	<div id="forbiddenScoreDiv">
+	<div class="control-group" >
+        <label class="control-label">禁止科组长成绩查询</label>
+        <div class="controls">
+            <input name="forbiddenScore" id="forbiddenScore" type="checkbox" <c:if test="${exam.forbiddenScore}">checked</c:if>/>
+        </div>
+    </div>
     </div>
     <div class="control-group">
         <label class="control-label">及格分</label>

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

@@ -144,7 +144,9 @@
                                     
                                     <c:if test="${web_user.subjectHeader==true}">
                                         <li><a href="${ctx}/admin/exam/mark" target="mainFrame"><i class="icon-pencil"></i><span data-i18n-text="index.mark">评卷管理</span></a></li>
+                                        <c:if test="${forbiddenScore!=true}">
                                         <li><a href="${ctx}/admin/exam/score" target="mainFrame"><i class="icon-search"></i><span data-i18n-text="index.score">成绩查询</span></a></li>
+                                        </c:if>
                                         <li><a href="${ctx}/admin/exam/inspected" target="mainFrame"><i class="icon-flag"></i><span data-i18n-text="index.inspected">成绩复核</span></a></li>
                                         <li><a href="${ctx}/admin/exam/problem/history" target="mainFrame"><i class="icon-tag"></i><span data-i18n-text="index.problem">问题试卷</span></a></li>
                                         <li><a href="${ctx}/admin/exam/reportSubject" target="mainFrame"><i class="icon-signal"></i><span data-i18n-text="index.report.total">总量分析</span></a></li>

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

@@ -51,9 +51,11 @@
             </c:forEach>
         </select>
         <br/><br/>
+        <c:if test="${web_user.schoolAdmin==true || forbiddenScore==false}">
         <label>准考证号</label>
         <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-medium"/>
         &nbsp;
+        </c:if>
         <label>考生编号</label>
         <input type="text" name="secretNumber" id="secretNumber" value="${query.secretNumber}" class="input-medium"/>
         &nbsp;

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

@@ -36,8 +36,10 @@
                 <option value="${item.number}" <c:if test="${item.number==query.groupNumber}">selected</c:if>>${item.number}-${item.title}</option>
             </c:forEach>
         </select>
+        <c:if test="${web_user.schoolAdmin==true || forbiddenScore==false}">
         <label>准考证号</label>
         <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-medium"/>
+       	</c:if>
         <label>考生编号</label>
         <input type="text" name="secretNumber" id="secretNumber" value="${query.secretNumber}" maxlength="10" class="input-medium"/>
         &nbsp;