فهرست منبع

修复试评查询问题,分组模式下解绑评卷员删除任务

yin 10 ماه پیش
والد
کامیت
0f3940ee97

+ 5 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialLibraryDao.java

@@ -63,8 +63,8 @@ public interface TrialLibraryDao extends JpaRepository<TrialLibrary, Integer>, J
     List<TrialLibrary> findByExamIdAndSubjectCodeAndGroupNumberAndMarkerIdAndMarkerScore(Integer examId,
             String subjectCode, Integer groupNumber, Integer markerId, Double markerScore, Pageable query);
 
-    @Query("select count(*) from TrialLibrary f where f.markerId=?1")
-    long countByMarkerId(Integer markerId);
+    @Query("select count(*) from TrialLibrary f where f.markerId=?1 and f.markerScoreList is not null")
+    long countByMarkerIdAndMarkerScoreIsNotNull(Integer markerId);
 
     @Modifying(clearAutomatically = true)
     @Query("update TrialLibrary m set m.markerId=null, m.markerTime=null, m.markerScore=null, m.markerScoreList=null "
@@ -101,4 +101,7 @@ public interface TrialLibraryDao extends JpaRepository<TrialLibrary, Integer>, J
     @Query("select l from TrialLibrary l where l.examId=?1 and l.subjectCode=?2 and l.groupNumber=?3 "
             + " and l.studentId in (?4) ")
     List<TrialLibrary> findByExamIdAndSubjectCodeAndGroupNumberAndStudentIdIn(Integer examId, String subjectCode, Integer number, List<Integer> studentIds);
+    @Modifying
+    @Query("delete TrialLibrary m where m.markerId=?1")
+    void deleteByMarkerId(Integer markerId);
 }

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

@@ -197,7 +197,7 @@ public class MarkServiceImpl implements MarkService {
         }
         if (group != null) {
             if (group.getStatus() == MarkStatus.TRIAL) {
-                return trialLibraryDao.countByMarkerId(marker.getId());
+                return trialLibraryDao.countByMarkerIdAndMarkerScoreIsNotNull(marker.getId());
             } else {
                 return libraryDao.countByMarkerAndStatus(marker.getId(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED,
                         LibraryStatus.INSPECTED);
@@ -516,6 +516,19 @@ public class MarkServiceImpl implements MarkService {
         inspectedService.clearByStudent(library.getStudentId());
     }
 
+    @Override
+    @Transactional
+    public void deleteMarker(Marker marker) {
+        User user = userService.findById(marker.getUserId());
+        user.refreshAccessToken();
+        userService.save(user);
+        this.releaseByMarker(marker);
+        if (TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
+            trialLibraryDao.deleteByMarkerId(marker.getId());
+        }
+        markerService.deleteById(marker.getId());
+    }
+
     /**
      * 根据考生删除评卷任务
      *

+ 2 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TrialServiceImpl.java

@@ -144,8 +144,8 @@ public class TrialServiceImpl extends BaseQueryService<TrialLibrary> implements
     }
 
     @Override
-    public long countByMarkerId(Integer markerId) {
-        return libraryDao.countByMarkerId(markerId);
+    public long countByMarkerIdAndMarkerScoreIsNotNull(Integer markerId) {
+        return libraryDao.countByMarkerIdAndMarkerScoreIsNotNull(markerId);
     }
 
     @Override

+ 1 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/MarkService.java

@@ -263,4 +263,5 @@ public interface MarkService {
 
     void resetLibrary(MarkLibrary library);
 
+    void deleteMarker(Marker marker);
 }

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/TrialService.java

@@ -20,7 +20,7 @@ public interface TrialService {
 
     long countLibrary(Integer examId, String subjectCode, Integer groupNumber);
 
-    long countByMarkerId(Integer markerId);
+    long countByMarkerIdAndMarkerScoreIsNotNull(Integer markerId);
 
     List<TrialLibrary> findHistory(Integer examId, String subjectCode, Integer groupNumber, Integer markerId,
             int pageNumber, int pageSize, Sort sort, Double markerScore);

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

@@ -559,7 +559,7 @@ public class MarkerController extends BaseExamController {
             return "redirect:/admin/exam/marker";
         }
         long count = libraryService.countByMarker(markerId);
-        long trialCount = trialService.countByMarkerId(markerId);
+        long trialCount = trialService.countByMarkerIdAndMarkerScoreIsNotNull(markerId);
         String subjectCode = marker.getSubjectCode();
         Integer groupNumber = marker.getGroupNumber();
         if (count > 0 || trialCount > 0) {
@@ -567,13 +567,12 @@ public class MarkerController extends BaseExamController {
         } else {
             try {
                 lockService.waitlock(LockType.MARKER, marker.getId());
-                markService.releaseByMarker(marker);
+                markService.deleteMarker(marker);
             } catch (Exception e) {
                 log.error("release marker error", e);
             } finally {
                 lockService.unlock(LockType.MARKER, marker.getId());
             }
-            markerService.deleteById(markerId);
         }
         return "redirect:/admin/exam/marker?subjectCode=" + subjectCode + "&groupNumber=" + groupNumber;
     }

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

@@ -406,10 +406,10 @@ public class PaperController extends BaseExamController {
                         error.add("[" + subject.getCode() + "] 已存在分组");
                         continue;
                     }
-//                    if (subject.isSelective()) {
-//                        error.add("[" + subject.getCode() + "] 已存在选做题分组");
-//                        continue;
-//                    }
+                    if (subject.isSelective()) {
+                        error.add("[" + subject.getCode() + "] 已存在选做题分组");
+                        continue;
+                    }
                     Map<Integer, String> titleMap = new HashMap<>();
                     List<ExamQuestion> current = questionService.findByExamAndSubjectAndObjective(examId,
                             subject.getCode(), false);

+ 14 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/TrialController.java

@@ -259,14 +259,24 @@ public class TrialController extends BaseExamController {
                 }
             }
         }
-        List<TrialMarkerVO> markerList = new ArrayList<TrialMarkerVO>();
+        List<TrialMarkerVO> result = new ArrayList<TrialMarkerVO>();
+        List<Marker> markerList = new ArrayList<Marker>();
         if (query.getGroupNumber() != null) {
             MarkerSearchQuery mQuery = new MarkerSearchQuery();
             mQuery.setExamId(examId);
             mQuery.setSubjectCode(query.getSubjectCode());
             mQuery.setGroupNumber(query.getGroupNumber());
             mQuery.setPageSize(Integer.MAX_VALUE);
-            query = markerService.findByQuery(mQuery);
+            mQuery = markerService.findByQuery(mQuery);
+            for (Marker marker:mQuery.getResult()) {
+                User user = userService.findById(marker.getUserId());
+                marker.setLoginName(user.getLoginName());
+                marker.setUser(user);
+                markerList.add(marker);
+            }
+
+            query.setPageSize(Integer.MAX_VALUE);
+            query = markerService.findByQuery(query);
             for (Marker marker : query.getResult()) {
                 TrialMarkerVO vo = new TrialMarkerVO();
                 vo.setId(marker.getId());
@@ -310,9 +320,10 @@ public class TrialController extends BaseExamController {
                     list.add(trialQuestionVO);
                 }
                 vo.setQuestionList(list);
-                markerList.add(vo);
+                result.add(vo);
             }
         }
+        model.addAttribute("result", result);
         model.addAttribute("markerList", markerList);
         model.addAttribute("query", query);
         model.addAttribute("subjectList", getExamSubject(examId, wu));

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

@@ -410,7 +410,7 @@ public class MarkController extends BaseController {
             arbitrateCount = libraryService.countByQuery(query);
         } else if (group.getStatus() == MarkStatus.TRIAL) {
             totalCount = trialService.countLibrary(group.getExamId(), group.getSubjectCode(), group.getNumber());
-            personCount = trialService.countByMarkerId(marker.getId());
+            personCount = trialService.countByMarkerIdAndMarkerScoreIsNotNull(marker.getId());
             markedCount = trialService.countMarkedLibrary(group.getExamId(), group.getSubjectCode(), group.getNumber());
         }
         status.accumulate("personCount", personCount);

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

@@ -88,9 +88,9 @@
 		<tbody>
 		<c:forEach items="${resultList}" var="result">
 			<tr>
-				<td class="selectiveError"><c:if test="${result.selectiveError}">是</c:if></td>
 				<td><input type="checkbox" class="codes" name="codes" value="${result.subject.code}" <c:if test="${result.selectiveError}">disabled="disabled"</c:if>>
-				${result.subject.code}-${result.subject.name}&nbsp;${result.subject.remark}
+			${result.subject.code}-${result.subject.name}&nbsp;${result.subject.remark}
+				<td class="selectiveError"><c:if test="${result.selectiveError}">是</c:if></td>
 				<c:if test="${!result.groupFinish}"><img class="icon-info-sign" title="主观分未完成分组" src="${ctxStatic }/images/sgin-icon@2x.png"></img></c:if>
 				</td>
 				<td>${result.subject.uploadCount}</td>

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

@@ -63,7 +63,7 @@
         &nbsp;
         <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
         <c:if test="${trialMode=='EXCLUSIVE'}">
-            <a href="${ctx}/admin/exam/trial/marker?subjectCode=${query.subjectCode}" class="btn">试评分析</a>
+            <a href="${ctx}/admin/exam/trial/marker?subjectCode=${query.subjectCode}&groupNumber=${query.groupNumber}" class="btn">试评分析</a>
         </c:if>
     </div>
 </form>

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

@@ -52,8 +52,8 @@
             </c:forEach>
         </select>
         <label>评卷员</label>
-        <select class="input-medium" id="marker-select" name="markerId">
-            <option value="0">不限</option>
+        <select class="input-medium" id="marker-select" name="id">
+            <option value="">不限</option>
             <c:forEach items="${markerList}" var="item">
                 <option value="${item.id}"
                         <c:if test="${item.id==query.id}">selected</c:if>>${item.loginName}</option>
@@ -78,7 +78,7 @@
     </tr>
     </thead>
     <tbody>
-    <c:forEach items="${markerList}" var="marker">
+    <c:forEach items="${result}" var="marker">
         <tr>
             <td>${marker.loginName}</td>
             <td>${marker.groupNumber}-${marker.groupTitle}</td>