Эх сурвалжийг харах

3.4.4 update-20250311,sql优化

xiaofei 3 сар өмнө
parent
commit
fdfad7f089

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserPaperService.java

@@ -17,9 +17,10 @@ import java.util.List;
  */
 public interface MarkUserPaperService extends IService<MarkUserPaper> {
 
-    List<MarkUserPaper> listByExamIdAndPaperNumberAndUserId(Long examId, String paperNumber, Long userId);
+    List<MarkUserPaper> listByExamIdAndPaperNumber(Long examId, String paperNumber);
     MarkUserPaper getByExamIdAndPaperNumberAndUserId(Long examId, String paperNumber, Long userId);
 
     void update(Long examId, String paperNumber, Long userId, MarkMode mode, QuestionModel questionModel, Long markedQuestionId);
+    void updateModeBatch(Long examId, String paperNumber, MarkMode mode);
 
 }

+ 2 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java

@@ -172,7 +172,7 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
             lambda.set(MarkPaper::getSheetConfig, markPaper.getSheetConfig());
         }
         // 更新评卷员模式
-        markUserPaperService.update(markPaper.getExamId(), markPaper.getPaperNumber(), null, MarkMode.UNLIMITED.equals(markPaper.getMarkMode()) ? MarkMode.TRACK : markPaper.getMarkMode(), null, null);
+        markUserPaperService.updateModeBatch(markPaper.getExamId(), markPaper.getPaperNumber(), MarkMode.UNLIMITED.equals(markPaper.getMarkMode()) ? MarkMode.TRACK : markPaper.getMarkMode());
         this.update(updateWrapper);
     }
 
@@ -214,7 +214,7 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                     .eq(MarkPaper::getExamId, markPaperSettingList.getExamId())
                     .eq(MarkPaper::getPaperNumber, markPaperSettingList.getPaperNumber());
             // 更新评卷员模式
-            markUserPaperService.update(markPaperSettingList.getExamId(), markPaperSettingList.getPaperNumber(), null, MarkMode.UNLIMITED.equals(config.getMarkMode()) ? MarkMode.TRACK : config.getMarkMode(), null, null);
+            markUserPaperService.updateModeBatch(markPaperSettingList.getExamId(), markPaperSettingList.getPaperNumber(), MarkMode.UNLIMITED.equals(config.getMarkMode()) ? MarkMode.TRACK : config.getMarkMode());
             this.update(updateWrapper);
         }
     }

+ 15 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserPaperServiceImpl.java

@@ -26,11 +26,10 @@ import java.util.List;
 public class MarkUserPaperServiceImpl extends ServiceImpl<MarkUserPaperMapper, MarkUserPaper> implements MarkUserPaperService {
 
     @Override
-    public List<MarkUserPaper> listByExamIdAndPaperNumberAndUserId(Long examId, String paperNumber, Long userId) {
+    public List<MarkUserPaper> listByExamIdAndPaperNumber(Long examId, String paperNumber) {
         QueryWrapper<MarkUserPaper> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(MarkUserPaper::getExamId, examId)
-                .eq(MarkUserPaper::getPaperNumber, paperNumber)
-                .eq(userId != null, MarkUserPaper::getUserId, userId);
+                .eq(MarkUserPaper::getPaperNumber, paperNumber);
         return this.list(queryWrapper);
     }
 
@@ -49,12 +48,25 @@ public class MarkUserPaperServiceImpl extends ServiceImpl<MarkUserPaperMapper, M
             markUserPaper = new MarkUserPaper(examId, paperNumber, userId);
             markUserPaper.setMode(mode);
             markUserPaper.setQuestionModel(questionModel);
+            markUserPaper.setMarkedQuestionId(markedQuestionId);
         } else {
             markUserPaper.setMode(mode);
             if (questionModel != null) {
                 markUserPaper.setQuestionModel(questionModel);
             }
+            if (markedQuestionId != null) {
+                markUserPaper.setMarkedQuestionId(markedQuestionId);
+            }
         }
         this.saveOrUpdate(markUserPaper);
     }
+
+    @Override
+    public void updateModeBatch(Long examId, String paperNumber, MarkMode mode) {
+        UpdateWrapper<MarkUserPaper> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(MarkUserPaper::getMode, mode)
+                .eq(MarkUserPaper::getExamId, examId)
+                .eq(MarkUserPaper::getPaperNumber, paperNumber);
+        this.update(updateWrapper);
+    }
 }