Sfoglia il codice sorgente

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

wangliang 1 anno fa
parent
commit
a9c7a80257

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java

@@ -280,7 +280,7 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         // 校验2 试卷编号存在时,任课教师,考试时间,考点考场均必填;
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
         boolean needPaperNumber = (basicSchool.getHasPaperNumber() != null && basicSchool.getHasPaperNumber()) || ExamModelEnum.MODEL4.equals(basicExam.getExamModel());
-        if (needPaperNumber) {
+        if (needPaperNumber && StringUtils.isBlank(paperNumber)) {
             errorMsgList.add("试卷编号必填");
         }
 

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -929,6 +929,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
                             markPaperPackageService.deleteByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
                             markQuestionService.deleteByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
                             scanAnswerCardService.deleteByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
+                            for (String paperType : examDetailCourse.getPaperNumber().split(",")) {
+                                markPaperService.updateStudentCountByExamIdAndPaperNumberAndPaperType(examDetail.getExamId(), examDetailCourse.getPaperNumber(), paperType);
+                            }
                         };
                     }
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncBasicExamStudentImportService.java

@@ -119,7 +119,7 @@ public class AsyncBasicExamStudentImportService extends AsyncImportTaskTemplete
                 // 模式4,直接进扫描阅卷库
                 BasicExam basicExam = basicExamService.getById(tbTask.getExamId());
                 if (ExamModelEnum.MODEL4.equals(basicExam.getExamModel())) {
-                    importLogicService.saveMarkStudent(tbTask.getExamId(), basicExamStudentList);
+                    importLogicService.saveMarkStudent(tbTask.getExamId(), basicExamStudentList, tbTask.getCreateId());
 
                     // 重新统计试卷下考生数量
                     basicExamStudentList.stream().map(BasicExamStudent::getPaperNumber).distinct().forEach(m -> markPaperService.updateStudentCountByExamIdAndPaperNumberAndPaperType(tbTask.getExamId(), m, SystemConstant.DEFAULT_PAPER_TYPE_A));

+ 3 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/ImportLogicService.java

@@ -31,9 +31,10 @@ public interface ImportLogicService {
     /**
      * 保存阅卷数据
      *
-     * @param examId 考试id
+     * @param examId   考试id
+     * @param createId
      */
-    void saveMarkStudent(Long examId, List<BasicExamStudent> basicExamStudentList);
+    void saveMarkStudent(Long examId, List<BasicExamStudent> basicExamStudentList, Long createId);
 
     /**
      * 处理客观题结构导入

+ 2 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/ImportLogicServiceImpl.java

@@ -576,9 +576,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
 
     @Transactional
     @Override
-    public void saveMarkStudent(Long examId, List<BasicExamStudent> basicExamStudentList) {
-        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        Long requestUserId = requestUser.getId();
+    public void saveMarkStudent(Long examId, List<BasicExamStudent> basicExamStudentList, Long createId) {
 
         Map<String, List<BasicExamStudent>> stringMap = basicExamStudentList.stream().collect(Collectors.groupingBy(BasicExamStudent::getPaperNumber));
 
@@ -586,7 +584,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             BasicExamStudent basicExamStudent = entry.getValue().get(0);
             MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, entry.getKey());
             if (markPaper == null) {
-                markPaper = new MarkPaper(examId, basicExamStudent.getCourseId(), entry.getKey(), String.valueOf(System.currentTimeMillis()), requestUserId, SystemConstant.DEFAULT_PAPER_TYPE_A);
+                markPaper = new MarkPaper(examId, basicExamStudent.getCourseId(), entry.getKey(), String.valueOf(System.currentTimeMillis()), createId, SystemConstant.DEFAULT_PAPER_TYPE_A);
                 markPaperService.save(markPaper);
             }
             Set<String> secretNumberSet = new HashSet<>();

+ 1 - 1
distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml

@@ -40,7 +40,7 @@
                be.name           examName
         FROM exam_student a
                 LEFT JOIN
-            basic_exam_student bes ON a.student_id = bes.id
+            basic_exam_student bes ON a.basic_student_id = bes.id
                  LEFT JOIN
              exam_detail_course b ON a.exam_detail_course_id = b.id
                 LEFT JOIN

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

@@ -334,12 +334,16 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     @Override
     public void updateStudentCountByExamIdAndPaperNumberAndPaperType(Long examId, String paperNumber, String paperType) {
         long count = markStudentService.countByExamIdAndPaperNumber(examId, paperNumber, paperType);
-        UpdateWrapper<MarkPaper> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().set(MarkPaper::getStudentCount, count)
-                .eq(MarkPaper::getExamId, examId)
-                .eq(MarkPaper::getPaperNumber, paperNumber)
-                .eq(MarkPaper::getPaperType, paperType);
-        this.update(updateWrapper);
+        if (count == 0) {
+            this.deleteByExamIdAndPaperNumber(examId, paperNumber, true);
+        } else {
+            UpdateWrapper<MarkPaper> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(MarkPaper::getStudentCount, count)
+                    .eq(MarkPaper::getExamId, examId)
+                    .eq(MarkPaper::getPaperNumber, paperNumber)
+                    .eq(MarkPaper::getPaperType, paperType);
+            this.update(updateWrapper);
+        }
     }
 
     @Override