Przeglądaj źródła

3.4.5 update-20250607 bug修复

xiaofei 2 tygodni temu
rodzic
commit
f7b74e80d1

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

@@ -165,7 +165,7 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
     /**
      * 查找需要统分考生
      *
-     * @param limit
+     * @param 
      * @return
      */
     IPage<MarkStudent> findNeedScoreCalculateStudent(@Param("page") Page<MarkStudent> page);
@@ -181,5 +181,5 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
      */
     List<MarkAiScoreDto> findScoreByAiMark(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 
-    List<Long> listAiMarkAbnormal(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
+    int countUnmarkByExamIdAndPaperNumber(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 }

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

@@ -310,4 +310,6 @@ public interface MarkStudentService extends IService<MarkStudent> {
      * @return
      */
     List<MarkAiScoreDto> findScoreByAiMark(Long examId, String paperNumber);
+
+    int countUnmarkByExamIdAndPaperNumber(Long examId, String paperNumber);
 }

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

@@ -257,7 +257,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

@@ -2770,4 +2770,9 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public List<MarkAiScoreDto> findScoreByAiMark(Long examId, String paperNumber) {
         return this.baseMapper.findScoreByAiMark(examId, paperNumber);
     }
+
+    @Override
+    public int countUnmarkByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        return this.baseMapper.countUnmarkByExamIdAndPaperNumber(examId, paperNumber);
+    }
 }

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

@@ -1138,4 +1138,28 @@
         union
             select ms.id from mark_student ms where ms.exam_id = #{examId} AND ms.paper_number = #{paperNumber} and ms.ai_mark_abnormal = TRUE
     </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>