Quellcode durchsuchen

3.4.4 update-20250607 bug修复

xiaofei vor 2 Wochen
Ursprung
Commit
f3850993e6

+ 3 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java

@@ -162,10 +162,12 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
     /**
      * 查找需要统分考生
      *
-     * @param limit
+     * @param
      * @return
      */
     IPage<MarkStudent> findNeedScoreCalculateStudent(@Param("page") Page<MarkStudent> page);
 
     BasicExam getBasicExamById(@Param("examId") Long examId);
+
+    int countUnmarkByExamIdAndPaperNumber(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 }

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -303,4 +303,6 @@ public interface MarkStudentService extends IService<MarkStudent> {
     String getCardContent(MarkStudentVo markStudent);
 
     Set<Long> listStudentIds(Long examId, String paperNumber, List<String> classNames);
+
+    int countUnmarkByExamIdAndPaperNumber(Long examId, String paperNumber);
 }

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

@@ -255,7 +255,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                         continue;
                     }
                     // 未缺考、未违纪且已上传图片的考生全部评完
-                    else if (markStudentService.countByExamIdAndPaperNumberAndMarkStatus(examId, paperNumber, SubjectiveStatus.UNMARK) > 0) {
+                    else if (markStudentService.countByExamIdAndPaperNumberAndMarkStatus(examId, paperNumber, SubjectiveStatus.UNMARK) > 0
+                            || markStudentService.countUnmarkByExamIdAndPaperNumber(examId, paperNumber) > 0) {
                         stringJoiner.add(courseInfo + "考生正在统分中,无法结束评卷");
                         continue;
                     }

+ 5 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -2744,4 +2744,9 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         List<MarkStudent> students = this.list(queryWrapper);
         return students.stream().map(MarkStudent::getId).collect(Collectors.toSet());
     }
+
+    @Override
+    public int countUnmarkByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        return this.baseMapper.countUnmarkByExamIdAndPaperNumber(examId, paperNumber);
+    }
 }

+ 24 - 0
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -1096,4 +1096,28 @@
     <select id="getBasicExamById" resultType="com.qmth.teachcloud.common.entity.BasicExam">
         select * from basic_exam be where be.id = #{examId}
     </select>
+    <select id="countUnmarkByExamIdAndPaperNumber" resultType="java.lang.Integer">
+        SELECT
+            COUNT(1)
+        FROM
+            (SELECT
+                 mt.student_id,
+                 SUM(CASE
+                         WHEN status = 'MARKED' THEN 0
+                         ELSE 1
+                     END) aa
+             FROM
+                 mark_task mt
+             WHERE
+                 mt.exam_id = #{examId} AND mt.paper_number = #{paperNumber}
+             GROUP BY mt.student_id
+             HAVING aa = 0
+                AND EXISTS( SELECT
+                                1
+                            FROM
+                                mark_student ms
+                            WHERE
+                                mt.student_id = ms.id
+                              AND ms.subjective_status = 'UNMARK')) a
+    </select>
 </mapper>