Browse Source

3.4.5 20250614 实施过程中bug修复

xiaofei 1 tuần trước cách đây
mục cha
commit
0712923040

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

@@ -96,6 +96,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     @Resource
     private ScanAnswerCardService scanAnswerCardService;
     @Resource
+    private ScanAnswerCardQuestionService scanAnswerCardQuestionService;
+    @Resource
     private TeachcloudCommonService teachcloudCommonService;
     @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
@@ -702,7 +704,7 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                     scanAnswerCard.setCoursePaperId(markPaper.getCoursePaperId());
                     scanAnswerCard.setPaperType(markPaper.getPaperType());
                     scanAnswerCard.setCardId(null);
-                    scanAnswerCard.setNumber(scanAnswerCardService.findMaxCardNumberByExamId(examId) + 1);
+                    scanAnswerCard.setNumber(number);
                     scanAnswerCard.setSource(CardSource.WEB);
                     scanAnswerCard.setUri(uploadPath);
                     scanAnswerCard.setMd5(jsonMd5);
@@ -714,6 +716,31 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                     scanAnswerCard.setPaperCount(paperCount);
                     scanAnswerCardService.save(scanAnswerCard);
 
+                    List<ScanAnswerCardQuestion> scanAnswerCardQuestions = new ArrayList<>();
+                    for (Struct struct : structList) {
+                        if (!struct.getObjective()) {
+                            continue;
+                        }
+                        ScanAnswerCardQuestion scanAnswerCardQuestion = new ScanAnswerCardQuestion();
+                        scanAnswerCardQuestion.setId(SystemConstant.getDbUuid());
+                        scanAnswerCardQuestion.setExamId(examId);
+                        scanAnswerCardQuestion.setPaperNumber(markPaper.getPaperNumber());
+                        scanAnswerCardQuestion.setCoursePaperId(markPaper.getCoursePaperId());
+                        scanAnswerCardQuestion.setSerialNumber(markPaper.getSerialNumber());
+                        scanAnswerCardQuestion.setCardNumber(number);
+                        scanAnswerCardQuestion.setMainNumber(struct.getMainNumber());
+                        scanAnswerCardQuestion.setSubNumber(struct.getSubNumber());
+                        scanAnswerCardQuestion.setOptionCount(struct.getOptionCount());
+                        scanAnswerCardQuestion.setQuestionType(struct.getType());
+                        scanAnswerCardQuestion.setPaperIndex(struct.getPaperIndex());
+                        scanAnswerCardQuestion.setPageIndex(struct.getPageIndex());
+                        scanAnswerCardQuestion.setCreateTime(System.currentTimeMillis());
+                        scanAnswerCardQuestions.add(scanAnswerCardQuestion);
+                    }
+
+                    scanAnswerCardQuestionService.deleteByExamIdAndPaperNumberAndCardNumber(examId, markPaper.getPaperNumber(), number);
+                    scanAnswerCardQuestionService.saveBatch(scanAnswerCardQuestions);
+
                     // 状态改为未提交
                     UpdateWrapper<MarkPaper> updateWrapper = new UpdateWrapper<>();
                     updateWrapper.lambda().set(MarkPaper::getQuestionStatus, false)