Răsfoiți Sursa

fix:主客观题导入缺少课程编号导致空指针

caozixuan 11 luni în urmă
părinte
comite
7731efb02a

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

@@ -612,8 +612,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
         Map<String, String> courseCheckMap = basicCourseService.list(
                         new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getSchoolId, schoolId)).stream()
                 .collect(Collectors.toMap(BasicCourse::getCode, BasicCourse::getName));
-        List<MarkPaper> markPaperList = markPaperService.list(
-                new QueryWrapper<MarkPaper>().lambda().eq(MarkPaper::getExamId, examId));
+        List<MarkPaper> markPaperList = markPaperService.findMarkPaperListByExamId(examId);
         // 题号重复校验
         // 导入的客观题题号集合
         Set<String> questionNumberCheckSet = new HashSet<>();
@@ -800,8 +799,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
         Map<String, String> courseCheckMap = basicCourseService.list(
                         new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getSchoolId, schoolId)).stream()
                 .collect(Collectors.toMap(BasicCourse::getCode, BasicCourse::getName));
-        List<MarkPaper> markPaperList = markPaperService.list(
-                new QueryWrapper<MarkPaper>().lambda().eq(MarkPaper::getExamId, examId));
+        List<MarkPaper> markPaperList = markPaperService.findMarkPaperListByExamId(examId);
         // 题号重复校验
         // 导入的客观题题号集合
         Set<String> questionNumberCheckSet = new HashSet<>();

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

@@ -46,4 +46,6 @@ public interface MarkPaperMapper extends BaseMapper<MarkPaper> {
     List<MarkPaper> listByExamId(@Param("examId") Long examId, @Param("status") String status, @Param("dpr") DataPermissionRule dpr);
 
     IPage<ArchivePaperVo> documentList(Page<ArchiveScoreVo> page, @Param("req") ArchivePaperQuery query, @Param("dpr") DataPermissionRule dpr);
+
+    List<MarkPaper> findMarkPaperListByExamId(@Param("examId") Long examId);
 }

+ 13 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkPaperService.java

@@ -34,6 +34,7 @@ public interface MarkPaperService extends IService<MarkPaper> {
     MarkPaper getByExamIdAndPaperNumberAndPaperType(Long examId, String paperNumber, String paperType);
 
     void savePaperSetting(MarkPaper markPaper);
+
     void saveBatchPaperSetting(MarkPaperSettingParam markPaperSettingParam);
 
     Boolean finishPaper(Long examId, List<String> paperNumbers, MarkPaperStatus status);
@@ -44,13 +45,15 @@ public interface MarkPaperService extends IService<MarkPaper> {
 
     int getPaperNumberCount(Long id, Long courseId, String coursePaperId, MarkPaperStatus status, DataPermissionRule dpr);
 
-    IPage<CheckScoreListDto> listStudentScoreList(Long examId, Long courseId, String paperNumber, Integer pageNumber, Integer pageSize);
+    IPage<CheckScoreListDto> listStudentScoreList(Long examId, Long courseId, String paperNumber, Integer pageNumber,
+            Integer pageSize);
 
     void updateStatus(Long examId, String paperNumber, MarkPaperStatus newStatus, MarkPaperStatus currentStatus);
 
     void updateUploadCount(Long examId, String paperNumber, int countUploaded);
 
-    IPage<MarkPaperPackageDto> listPackage(Long examId, String paperNumber, String packageCode, Integer pageNumber, Integer pageSize);
+    IPage<MarkPaperPackageDto> listPackage(Long examId, String paperNumber, String packageCode, Integer pageNumber,
+            Integer pageSize);
 
     MarkPaper getByExamIdAndCoursePaperId(Long examId, String coursePaperId);
 
@@ -71,4 +74,12 @@ public interface MarkPaperService extends IService<MarkPaper> {
     void updateAbsentCount(Long examId, String paperNumber, int absentCount);
 
     IPage<ArchivePaperVo> documentList(ArchivePaperQuery query);
+
+    /**
+     * 根据考试id查询markPaper信息(只查课程信息和试卷编号)
+     *
+     * @param examId 考试id
+     * @return List<MarkPaper>
+     */
+    List<MarkPaper> findMarkPaperListByExamId(Long examId);
 }

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

@@ -417,4 +417,9 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
         IPage<ArchivePaperVo> ret = this.baseMapper.documentList(page, query, dpr);
         return ret;
     }
+
+    @Override
+    public List<MarkPaper> findMarkPaperListByExamId(Long examId) {
+        return this.baseMapper.findMarkPaperListByExamId(examId);
+    }
 }

+ 18 - 0
teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

@@ -270,4 +270,22 @@
         </if>
         ORDER BY t.id desc
     </select>
+    <select id="findMarkPaperListByExamId" resultType="com.qmth.teachcloud.mark.entity.MarkPaper">
+        SELECT
+            mp.id,
+            mp.exam_id AS examId,
+            mp.course_id AS courseId,
+            bc.code AS courseCode,
+            bc.name AS courseName,
+            mp.paper_number AS paperNumber
+        FROM
+            mark_paper mp
+                LEFT JOIN
+            basic_course bc ON mp.course_id = bc.id
+        <where>
+            <if test="examId != ''">
+                AND mp.exam_id = #{examId}
+            </if>
+        </where>
+    </select>
 </mapper>