소스 검색

Merge remote-tracking branch 'origin/dev_v3.4.2' into dev_v3.4.2

wangliang 7 달 전
부모
커밋
a37ef05142

+ 6 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkQuestionAnswerService.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.mark.service;
 
+import com.qmth.teachcloud.common.entity.MarkQuestion;
 import com.qmth.teachcloud.mark.entity.MarkQuestionAnswer;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -21,4 +22,9 @@ public interface MarkQuestionAnswerService extends IService<MarkQuestionAnswer>
     List<MarkQuestionAnswer> listByExamIdAndPaperNumberAndPaperType(Long examId, String paperNumber, String paperType);
 
     int countByExamIdAndPaperNumber(Long examId, String paperNumber);
+
+    void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
+
+    void saveByMarkQuestion(Long examId, String paperNumber, List<MarkQuestion> markQuestions);
+
 }

+ 39 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionAnswerServiceImpl.java

@@ -2,13 +2,20 @@ package com.qmth.teachcloud.mark.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.qmth.teachcloud.common.entity.MarkQuestion;
+import com.qmth.teachcloud.common.enums.ObjectivePolicy;
+import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.MarkQuestionAnswer;
 import com.qmth.teachcloud.mark.mapper.MarkQuestionAnswerMapper;
+import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.MarkQuestionAnswerService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.mark.service.MarkQuestionService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -22,6 +29,9 @@ import java.util.List;
 @Service
 public class MarkQuestionAnswerServiceImpl extends ServiceImpl<MarkQuestionAnswerMapper, MarkQuestionAnswer> implements MarkQuestionAnswerService {
 
+    @Resource
+    private MarkPaperService markPaperService;
+
     @Override
     public void deleteByExamIdAndPaperNumberAndMainNumberAndSubNumber(Long examId, String paperNumber, Integer mainNumber, Integer subNumber) {
         UpdateWrapper<MarkQuestionAnswer> updateWrapper = new UpdateWrapper<>();
@@ -57,4 +67,33 @@ public class MarkQuestionAnswerServiceImpl extends ServiceImpl<MarkQuestionAnswe
                 .eq(MarkQuestionAnswer::getPaperNumber, paperNumber);
         return this.count(queryWrapper);
     }
+
+    @Override
+    public void deleteByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        UpdateWrapper<MarkQuestionAnswer> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(MarkQuestionAnswer::getExamId, examId)
+                .eq(MarkQuestionAnswer::getPaperNumber, paperNumber);
+        this.remove(updateWrapper);
+    }
+
+    @Override
+    public void saveByMarkQuestion(Long examId, String paperNumber, List<MarkQuestion> markQuestions) {
+        MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
+        List<MarkQuestionAnswer> markQuestionAnswers = new ArrayList<>();
+        for (String paperType : markPaper.getPaperTypeList()) {
+            List<MarkQuestionAnswer> markQuestionAnswerList = this.listByExamIdAndPaperNumberAndPaperType(examId, paperNumber, paperType);
+            for (MarkQuestion markQuestion : markQuestions) {
+                if (!markQuestion.getObjective()) {
+                    continue;
+                }
+                MarkQuestionAnswer questionAnswer = markQuestionAnswerList.stream().filter(m -> m.getMainNumber() != null && m.getMainNumber().equals(markQuestion.getMainNumber()) && m.getSubNumber().equals(markQuestion.getSubNumber())).
+                        findFirst().orElse(null);
+                if (questionAnswer == null) {
+                    MarkQuestionAnswer markQuestionAnswer = new MarkQuestionAnswer(examId, paperNumber, paperType, markQuestion.getMainNumber(), markQuestion.getSubNumber());
+                    markQuestionAnswers.add(markQuestionAnswer);
+                }
+            }
+        }
+        this.saveBatch(markQuestionAnswers);
+    }
 }

+ 3 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java

@@ -116,6 +116,8 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
                 question.setUpdateTime(System.currentTimeMillis());
             }
             this.saveBatch(questions);
+            markQuestionAnswerService.deleteByExamIdAndPaperNumber(examId, paperNumber);
+            markQuestionAnswerService.saveByMarkQuestion(examId, paperNumber, questions);
         } else {
             List<MarkQuestion> saveOrUpdateList = new ArrayList<>();
             for (MarkQuestion question : questions) {
@@ -197,6 +199,7 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
                 });
             }
             this.saveOrUpdateBatch(saveOrUpdateList);
+            markQuestionAnswerService.saveByMarkQuestion(examId, paperNumber, saveOrUpdateList);
         }
         // 更新客观题满分、主观题满分、总分
         List<MarkQuestion> markQuestions = this.listQuestionByExamIdAndPaperNumber(examId, paperNumber);