yin 10 місяців тому
батько
коміт
d7c5a838e6

+ 15 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialLibraryDao.java

@@ -71,11 +71,21 @@ public interface TrialLibraryDao extends JpaRepository<TrialLibrary, Integer>, J
             + "where m.markerId=?1 ")
     void resetByMarkerId(Integer markerId);
 
+    @Modifying(clearAutomatically = true)
+    @Query("update TrialLibrary m set m.markerTime=null, m.markerScore=null, m.markerScoreList=null "
+            + "where m.markerId=?1 ")
+    void resetByMarkerIdButMarkerId(Integer markerId);
+
     @Modifying(clearAutomatically = true)
     @Query("update TrialLibrary m set m.markerId=null, m.markerTime=null, m.markerScore=null, m.markerScoreList=null "
             + "where m.id=?1")
     void resetById(Integer id);
 
+    @Modifying(clearAutomatically = true)
+    @Query("update TrialLibrary m set m.markerTime=null, m.markerScore=null, m.markerScoreList=null "
+            + "where m.id=?1")
+    void resetByIdButMarkerId(Integer id);
+
     @Query("select f from TrialLibrary f where f.markerId=?1 order by f.studentId")
     List<TrialLibrary> findByMarkerId(Integer markerId);
 
@@ -83,6 +93,11 @@ public interface TrialLibraryDao extends JpaRepository<TrialLibrary, Integer>, J
     @Query("update TrialLibrary m set m.markerId=null, m.markerTime=null, m.markerScore=null, m.markerScoreList=null "
             + " where m.examId=?1 and m.subjectCode=?2 and m.groupNumber=?3")
     void resetByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer number);
+
+    @Modifying(clearAutomatically = true)
+    @Query("update TrialLibrary m set m.markerTime=null, m.markerScore=null, m.markerScoreList=null "
+            + " where m.examId=?1 and m.subjectCode=?2 and m.groupNumber=?3")
+    void resetByExamIdAndSubjectCodeAndGroupNumberButMarkerId(Integer examId, String subjectCode, Integer number);
     @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);

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

@@ -8,6 +8,8 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 import cn.com.qmth.stmms.biz.config.service.impl.SystemCache;
+import cn.com.qmth.stmms.biz.user.model.User;
+import cn.com.qmth.stmms.biz.user.service.UserService;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -129,6 +131,9 @@ public class MarkServiceImpl implements MarkService {
     @Autowired
     private ReportSubjectService reportSubjectService;
 
+    @Autowired
+    private UserService userService;
+
     /**
      * 某个评卷分组已申请的评卷任务数量
      *
@@ -449,12 +454,16 @@ public class MarkServiceImpl implements MarkService {
      *            - 评卷员
      */
     @Override
-    @Transactional
     public void resetMarker(Marker marker) {
         MarkGroup group = groupDao.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
         if (group == null || !markerDao.exists(marker.getId())) {
             return;
         }
+        User user = userService.findById(marker.getUserId());
+        user.refreshAccessToken();
+        userService.save(user);
+        releaseByMarker(marker);
+
         if (group.getStatus() == MarkStatus.FORMAL) {
             // 仲裁和等待仲裁的任务不被重置
             // 只选取评卷完成状态的记录重新检查
@@ -464,15 +473,7 @@ public class MarkServiceImpl implements MarkService {
             for (MarkLibrary library : list) {
                 lockService.waitlock(LockType.STUDENT, library.getStudentId());
                 try {
-                    trackDao.deleteByLibraryId(library.getId());
-                    specialTagDao.deleteByLibraryId(library.getId());
-                    libraryDao.resetById(library.getId(), null, null, null, null, LibraryStatus.WAITING,
-                            library.getStatus());
-                    updateStudentGroupStatus(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
-                            library.getGroupNumber(), SubjectiveStatus.UNMARK);
-                    studentService.updateSubjectiveStatusAndScore(library.getStudentId(), SubjectiveStatus.UNMARK, 0,
-                            null);
-                    inspectedService.clearByStudent(library.getStudentId());
+                    resetLibrary(library);
                 } finally {
                     lockService.unlock(LockType.STUDENT, library.getStudentId());
                 }
@@ -490,14 +491,31 @@ public class MarkServiceImpl implements MarkService {
             }
             trialTagDao.deleteByMarkerId(marker.getId());
             trialTrackDao.deleteByMarkerId(marker.getId());
-            trialLibraryDao.resetByMarkerId(marker.getId());
+            if (TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
+                trialLibraryDao.resetByMarkerIdButMarkerId(marker.getId());
+            }else{
+                trialLibraryDao.resetByMarkerId(marker.getId());
+            }
         }
         updateMarkedCount(group);
-        releaseByMarker(marker);
         // inspectHistoryService.deleteByExamIdAndSubjectCode(marker.getExamId(),
         // marker.getSubjectCode());
     }
 
+    @Transactional
+    @Override
+    public void resetLibrary(MarkLibrary library) {
+        trackDao.deleteByLibraryId(library.getId());
+        specialTagDao.deleteByLibraryId(library.getId());
+        libraryDao.resetById(library.getId(), null, null, null, null, LibraryStatus.WAITING,
+                library.getStatus());
+        updateStudentGroupStatus(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
+                library.getGroupNumber(), SubjectiveStatus.UNMARK);
+        studentService.updateSubjectiveStatusAndScore(library.getStudentId(), SubjectiveStatus.UNMARK, 0,
+                null);
+        inspectedService.clearByStudent(library.getStudentId());
+    }
+
     /**
      * 根据考生删除评卷任务
      *
@@ -923,7 +941,11 @@ public class MarkServiceImpl implements MarkService {
     @Transactional
     public boolean resetLibrary(TrialLibrary library) {
         if (library != null) {
-            trialLibraryDao.resetById(library.getId());
+            if (TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
+                trialLibraryDao.resetByIdButMarkerId(library.getId());
+            }else{
+                trialLibraryDao.resetById(library.getId());
+            }
             trialTrackDao.deleteByLibraryId(library.getId());
             trialTagDao.deleteByLibraryId(library.getId());
             return true;
@@ -1444,8 +1466,13 @@ public class MarkServiceImpl implements MarkService {
             trialTrackDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
                     group.getNumber());
             trialTagDao.deleteByExamAndSubjectAndGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
-            trialLibraryDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
-                    group.getNumber());
+            if (TrialMode.EXCLUSIVE.equals(systemCache.getTrialMode())) {
+                trialLibraryDao.resetByExamIdAndSubjectCodeAndGroupNumberButMarkerId(group.getExamId(), group.getSubjectCode(),
+                        group.getNumber());
+            }else{
+                trialLibraryDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
+                        group.getNumber());
+            }
         }
         markerDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
                 group.getNumber());

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

@@ -10,6 +10,7 @@ import cn.com.qmth.stmms.biz.mark.model.*;
 import cn.com.qmth.stmms.common.enums.ArbitrateType;
 import cn.com.qmth.stmms.common.enums.ScorePolicy;
 import cn.com.qmth.stmms.common.enums.ThirdPolicy;
+import org.springframework.transaction.annotation.Transactional;
 
 public interface MarkService {
 
@@ -260,4 +261,6 @@ public interface MarkService {
 
     void groupTrialToFormal(int examId, String subjectCode);
 
+    void resetLibrary(MarkLibrary library);
+
 }

+ 0 - 23
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkerController.java

@@ -278,29 +278,6 @@ public class MarkerController extends BaseExamController {
                 obj.accumulate("success", false);
                 obj.accumulate("message", "评卷员正在重置");
             }
-
-            // try {
-            // lockService.waitlock(LockType.EXAM_SUBJECT, marker.getExamId(),
-            // marker.getSubjectCode());
-            // lockService
-            // .waitlock(LockType.GROUP, marker.getExamId(),
-            // marker.getSubjectCode(), marker.getGroupNumber());
-            // lockService.waitlock(LockType.MARKER, marker.getId());
-            //
-            // markService.resetMarker(marker);
-            // obj.accumulate("success", true);
-            // } catch (Exception e) {
-            // log.error("reset marker error", e);
-            // obj.accumulate("success", false);
-            // obj.accumulate("message", "重置评卷员失败");
-            // } finally {
-            // lockService.unlock(LockType.MARKER, marker.getId());
-            // lockService
-            // .unlock(LockType.GROUP, marker.getExamId(),
-            // marker.getSubjectCode(), marker.getGroupNumber());
-            // lockService.unlock(LockType.EXAM_SUBJECT, marker.getExamId(),
-            // marker.getSubjectCode());
-            // }
         } else {
             obj.accumulate("success", false);
             obj.accumulate("message", "该评卷员不存在");