Parcourir la source

3.4.4 update-20250512,解绑评卷员

xiaofei il y a 1 mois
Parent
commit
0372cc73e9

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserQuestionService.java

@@ -133,4 +133,6 @@ public interface MarkUserQuestionService extends IService<MarkUserQuestion> {
     List<MarkUser> listUserByExamIdAndPaperNumber(Long examId, String paperNumber);
 
     void updateEnableByExamIdAndPaperNumberAndQuestionIds(Long examId, String paperNumber, List<Long> questionIds, Boolean enable);
+
+    void removeByExamIdAndPaperNumberAndQuestionIdsAndUserId(Long examId, String paperNumber, List<Long> questionIds, Long userId);
 }

+ 33 - 7
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserQuestionServiceImpl.java

@@ -144,6 +144,7 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
         return markUserGroupProgressDtoIPage;
     }
 
+    @Transactional
     @Override
     public void addMarkUserQuestion(MarkerAddParam markerAddParam) {
         if (CollectionUtils.isNotEmpty(markerAddParam.getUserIds())) {
@@ -172,7 +173,15 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
             }
         }
 
-        markPaperService.updateGroupStatus(markerAddParam.getExamId(), markerAddParam.getPaperNumber());
+        List<MarkUserQuestion> markUserQuestionList = this.listByExamIdAndPaperNumberAndQuestionId(markerAddParam.getExamId(), markerAddParam.getPaperNumber(), markerAddParam.getQuestionId());
+        for (MarkUserQuestion markUserQuestion : markUserQuestionList) {
+            if (markUserQuestion.getEnable()) {
+                continue;
+            }
+            this.deleteMarker(markUserQuestion);
+        }
+
+//        markPaperService.updateGroupStatus(markerAddParam.getExamId(), markerAddParam.getPaperNumber());
     }
 
     private List<Long> listMergeQuestionId(Long examId, String paperNumber, Long questionId) {
@@ -218,13 +227,20 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
     public void deleteMarker(MarkUserQuestion markUserQuestion) {
         // 先回收,再删除
         releaseMarker(Arrays.asList(markUserQuestion.getId()));
-        // 逻辑解绑
+
         List<Long> ids = listMergeQuestionId(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), markUserQuestion.getQuestionId());
-        UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().set(MarkUserQuestion::getEnable, false)
-                .eq(MarkUserQuestion::getUserId, markUserQuestion.getUserId())
-                .in(MarkUserQuestion::getQuestionId, ids);
-        this.update(updateWrapper);
+
+        List<MarkTask> markTaskList = markTaskService.listByExamIdAndPaperNumberAndQuestionIdAndUserIdAndClassName(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), markUserQuestion.getQuestionId(), markUserQuestion.getUserId(), null);
+        if (markTaskService.markedCount(markTaskList) > 0) {
+            // 逻辑解绑
+            UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(MarkUserQuestion::getEnable, false)
+                    .eq(MarkUserQuestion::getUserId, markUserQuestion.getUserId())
+                    .in(MarkUserQuestion::getQuestionId, ids);
+            this.update(updateWrapper);
+        } else {
+            this.removeByExamIdAndPaperNumberAndQuestionIdsAndUserId(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), ids, markUserQuestion.getUserId());
+        }
 
         markPaperService.updateGroupStatus(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber());
     }
@@ -575,4 +591,14 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
                 .in(MarkUserQuestion::getQuestionId, questionIds);
         this.update(updateWrapper);
     }
+
+    @Override
+    public void removeByExamIdAndPaperNumberAndQuestionIdsAndUserId(Long examId, String paperNumber, List<Long> questionIds, Long userId) {
+        UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(MarkUserQuestion::getExamId, examId)
+                .eq(MarkUserQuestion::getPaperNumber, paperNumber)
+                .in(MarkUserQuestion::getQuestionId, questionIds)
+                .eq(MarkUserQuestion::getUserId, userId);
+        this.remove(updateWrapper);
+    }
 }