ting.yin 1 년 전
부모
커밋
d67a63dd1a

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/AnswerCardDao.java

@@ -8,6 +8,7 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 
 import cn.com.qmth.stmms.biz.exam.model.AnswerCard;
 import cn.com.qmth.stmms.biz.exam.model.AnswerCardPK;
+import cn.com.qmth.stmms.common.enums.CardSource;
 
 public interface AnswerCardDao extends PagingAndSortingRepository<AnswerCard, AnswerCardPK>,
         JpaSpecificationExecutor<AnswerCard> {
@@ -18,4 +19,7 @@ public interface AnswerCardDao extends PagingAndSortingRepository<AnswerCard, An
     @Query("select q from AnswerCard q where q.pk.examId=?1 order by q.pk.number")
     List<AnswerCard> findByExamId(Integer examId);
 
+    @Query(value = "select e.* from eb_answer_card e left join eb_answer_card_subject s on e.exam_id=s.exam_id and e.number=s.card_number where e.exam_id = ?1 and e.source=?2 and e.code is null and s.subject_code=?2", nativeQuery = true)
+    AnswerCard findByExamIdAndSubjectCodeAndCodeIsNull(Integer examId, String subjectCode, CardSource source);
+
 }

+ 2 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/AnswerCardSubjectDao.java

@@ -13,10 +13,10 @@ public interface AnswerCardSubjectDao extends PagingAndSortingRepository<AnswerC
         JpaSpecificationExecutor<AnswerCardSubject> {
 
     @Query("select s from AnswerCardSubject s where s.examId=?1 and s.cardNumber=?2 and s.subjectCode=?3 ")
-    AnswerCardSubject findByExamIdAndNumberAndSubjectCode(Integer examId, Integer number, String subjectCode);
+    AnswerCardSubject findByExamIdAndCardNumberAndSubjectCode(Integer examId, Integer number, String subjectCode);
 
     @Query("select q from AnswerCardSubject q where q.examId=?1 and q.cardNumber=?2")
-    List<AnswerCardSubject> findByExamId(Integer examId, Integer number);
+    List<AnswerCardSubject> findByExamIdAndCardNumber(Integer examId, Integer number);
 
     @Modifying
     @Query("delete AnswerCardSubject s where s.examId=?1 and s.cardNumber=?2 ")

+ 2 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/AnswerCardService.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import cn.com.qmth.stmms.biz.exam.model.AnswerCard;
 import cn.com.qmth.stmms.biz.exam.model.AnswerCardSubject;
+import cn.com.qmth.stmms.common.enums.CardSource;
 
 public interface AnswerCardService {
 
@@ -17,7 +18,7 @@ public interface AnswerCardService {
 
     void delete(AnswerCard card);
 
-    AnswerCard findByExamIdAndSubjectCode(Integer examId, String subjectCode);
+    AnswerCard findByExamIdAndSubjectCode(Integer examId, String subjectCode, CardSource source);
 
     List<AnswerCardSubject> getSubjectByExamIdAndNumber(Integer examId, Integer number);
 

+ 6 - 6
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/AnswerCardServiceImpl.java

@@ -13,6 +13,7 @@ import cn.com.qmth.stmms.biz.exam.dao.AnswerCardSubjectDao;
 import cn.com.qmth.stmms.biz.exam.model.AnswerCard;
 import cn.com.qmth.stmms.biz.exam.model.AnswerCardSubject;
 import cn.com.qmth.stmms.biz.exam.service.AnswerCardService;
+import cn.com.qmth.stmms.common.enums.CardSource;
 
 @Service
 public class AnswerCardServiceImpl extends BaseQueryService<AnswerCard> implements AnswerCardService {
@@ -49,8 +50,8 @@ public class AnswerCardServiceImpl extends BaseQueryService<AnswerCard> implemen
     @Override
     public void save(AnswerCard card, String subjectCode) {
         if (StringUtils.isNotBlank(subjectCode)) {
-            AnswerCardSubject answerCardSubject = cardSubjectDao.findByExamIdAndSubjectCode(card.getExamId(),
-                    subjectCode);
+            AnswerCardSubject answerCardSubject = cardSubjectDao.findByExamIdAndCardNumberAndSubjectCode(
+                    card.getExamId(), card.getNumber(), subjectCode);
             if (answerCardSubject == null) {
                 answerCardSubject = new AnswerCardSubject(card.getExamId(), card.getNumber(), subjectCode);
                 cardSubjectDao.save(answerCardSubject);
@@ -67,14 +68,13 @@ public class AnswerCardServiceImpl extends BaseQueryService<AnswerCard> implemen
     }
 
     @Override
-    public AnswerCard findByExamIdAndSubjectCode(Integer examId, String subjectCode) {
-        AnswerCardSubject s = cardSubjectDao.findByExamIdAndSubjectCode(examId, subjectCode);
-        AnswerCard card = cardDao.findByExamIdAndNumber(examId, s.getCardNumber());
+    public AnswerCard findByExamIdAndSubjectCode(Integer examId, String subjectCode, CardSource source) {
+        AnswerCard card = cardDao.findByExamIdAndSubjectCodeAndCodeIsNull(examId, subjectCode, source);
         return card;
     }
 
     @Override
     public List<AnswerCardSubject> getSubjectByExamIdAndNumber(Integer examId, Integer number) {
-        return cardSubjectDao.findByExamId(examId, number);
+        return cardSubjectDao.findByExamIdAndCardNumber(examId, number);
     }
 }

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

@@ -908,7 +908,8 @@ public class PaperController extends BaseExamController {
                     }
                     byte[] out = cardFile.output();
                     String md5 = BinaryUtil.encodeMD5(out);
-                    AnswerCard card = answerCardService.findByExamIdAndSubjectCode(examId, subject.getCode());
+                    AnswerCard card = answerCardService.findByExamIdAndSubjectCode(examId, subject.getCode(),
+                            CardSource.WEB);
                     if (card == null) {
                         card = new AnswerCard();
                         card.setExamId(examId);

+ 5 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/FileController.java

@@ -11,10 +11,13 @@ import cn.com.qmth.stmms.common.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.ApiUser;
 import cn.com.qmth.stmms.common.enums.*;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
+
 import com.aliyun.oss.common.utils.BinaryUtil;
 import com.google.common.io.ByteStreams;
+
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,6 +30,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.util.Arrays;
@@ -322,7 +326,7 @@ public class FileController extends BaseApiController {
                 byte[] out = cardFile.output();
                 ins = new ByteArrayInputStream(out);
                 md5 = BinaryUtil.encodeMD5(out);
-                card = answerCardService.findByExamIdAndSubjectCode(examId, subjectCode);
+                card = answerCardService.findByExamIdAndSubjectCode(examId, subjectCode, CardSource.WEB);
                 if (card == null) {
                     card = new AnswerCard();
                     card.setExamId(examId);