Jelajahi Sumber

3.4.4 update-20250314,自测bug修复

xiaofei 3 bulan lalu
induk
melakukan
abc4b02b9f

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkArchiveController.java

@@ -87,7 +87,7 @@ public class MarkArchiveController {
     @ApiOperation(value = "成绩报告导出")
     @RequestMapping(value = "/score/report/download", method = RequestMethod.POST)
     public Result scoreReportDownload(@Validated ArchiveStudentQuery query,MultipartFile file, HttpServletResponse response) {
-        return ResultUtil.ok(markStudentService.scoreReportDownload(query,file, response));
+        return ResultUtil.success(markStudentService.scoreReportDownload(query,file, response));
     }
 
     @ApiOperation(value = "成绩报告")

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkService.java

@@ -90,7 +90,7 @@ public interface MarkService {
 
     void updateMarkGroupStatus(Long examId, String paperNumber);
 
-    void checkStudentSubjectiveScore(Long examId, String coursePaperId, long unGroupQuestionCount);
+    void checkStudentSubjectiveScore(Long examId, String coursePaperId);
 
     boolean rejectMarkTask(MarkTask markTask, Long userId, String reason);
 

+ 5 - 6
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java

@@ -244,15 +244,14 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
         // 主观题结构有变动
         List<MarkQuestion> subjectiveQuestions = questions.stream().filter(m -> m.getObjective()).collect(Collectors.toList());
         List<MarkQuestion> subjectiveMarkQuestionList = markQuestionList.stream().filter(m -> m.getObjective()).collect(Collectors.toList());
+        // 更新分组状态
+        markService.updateMarkGroupStatus(examId, paperNumber);
+
         if (!CollectionUtils.isEqualCollection(subjectiveQuestions, subjectiveMarkQuestionList)) {
-            // 未分组的题目
-//            long unGroupQuestionCount = this.countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(examId, paperNumber, false);
-//            // 考生主观题重新统分
-//            markService.checkStudentSubjectiveScore(examId, markPaper.getCoursePaperId(), unGroupQuestionCount);
+            // 考生主观题重新统分
+            markService.checkStudentSubjectiveScore(examId, markPaper.getCoursePaperId());
         }
 
-        // 更新分组状态
-        markService.updateMarkGroupStatus(examId, paperNumber);
     }
 
     @Override

+ 3 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -782,9 +782,7 @@ public class MarkServiceImpl implements MarkService {
                 lockService.unwatch(LockType.QUESTION, result.getQuestionId());
             }
         }
-
-        // 未分组的题目
-//        checkStudentSubjective(markStudent.getId(), markStudent.getExamId(), markStudent.getPaperNumber());
+        resetStudentStatus(markStudent.getId());
     }
 
     private void updateMarkSubjectScore(MarkStudent markStudent, MarkResultQuestion resultQuestion, Long userId) {
@@ -1201,10 +1199,10 @@ public class MarkServiceImpl implements MarkService {
     }
 
     @Override
-    public void checkStudentSubjectiveScore(Long examId, String coursePaperId, long unGroupQuestionCount) {
+    public void checkStudentSubjectiveScore(Long examId, String coursePaperId) {
         List<MarkStudent> markStudentList = markStudentService.listByExamIdAndCoursePaperId(examId, coursePaperId);
         for (MarkStudent markStudent : markStudentList) {
-//            checkStudentSubjective(markStudent.getId(), unGroupQuestionCount, markQuestion.getPaperNumber());
+            resetStudentStatus(markStudent.getId());
         }
     }
 

+ 9 - 6
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -1588,7 +1588,8 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     @Override
-    public String scoreReportDownload(ArchiveStudentQuery query,MultipartFile file, HttpServletResponse response) {
+    public String scoreReportDownload(ArchiveStudentQuery query, MultipartFile file, HttpServletResponse response) {
+        MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(query.getExamId(), query.getPaperNumber());
         String rootPath = null;
         File htmlFile;
         File pdfFile;
@@ -1623,10 +1624,12 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                 pdfFile.createNewFile();
             }
             HtmlToPdfUtil.convert(cardHtmlPath, cardPdfPath, PageSizeEnum.A4);
-            String md5 = DigestUtils.md5Hex(new FileInputStream(pdfFile));
-            String path = UploadFileEnum.PDF.getPath(UploadFileEnum.PDF.getTitle(), query.getExamId(), query.getPaperNumber(), FormatType.PDF.name().toLowerCase());
-            String uploadPath = fileStoreUtils.uploadFile(new FileInputStream(pdfFile), md5, UploadFileEnum.PDF, path);
-            return uploadPath;
+            String fileName = markPaper.getId() + SystemConstant.PDF_PREFIX;
+            FilePathVo filePathVo = fileUploadService.uploadFile(pdfFile, UploadFileEnum.FILE, fileName);
+            if (filePathVo == null) {
+                throw ExceptionResultEnum.ERROR.exception("报告下载失败");
+            }
+            return teachcloudCommonService.filePreview(JSON.toJSONString(filePathVo));
 //            FileUtil.outputFile(response, pdfFile, "报告" + SystemConstant.PDF_PREFIX);
         } catch (Exception e) {
             e.printStackTrace();
@@ -2449,7 +2452,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public UpdateTimeVo add(Long examId, String coursePaperId, String studentCode, String studentName, String paperType, Long basicStudentId) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
         MarkPaper markPaper = markPaperService.getByExamIdAndCoursePaperId(examId, coursePaperId);
-        MarkStudent markStudent = new MarkStudent(SystemConstant.getDbUuid(), examId, basicStudentId, markPaper.getCourseId(), markPaper.getPaperNumber(), coursePaperId, markPaper.getSerialNumber(), paperType, studentCode, "", null, null, null, null,null, user.getId());
+        MarkStudent markStudent = new MarkStudent(SystemConstant.getDbUuid(), examId, basicStudentId, markPaper.getCourseId(), markPaper.getPaperNumber(), coursePaperId, markPaper.getSerialNumber(), paperType, studentCode, "", null, null, null, null, null, user.getId());
         if (markStudent.getSecretNumber() == null) {
             markStudent.randomSecretNumber();
             while (this.countByExamIdAndSecretNumber(markStudent.getExamId(), markStudent.getSecretNumber()) > 0) {

+ 2 - 2
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -197,8 +197,8 @@
 			AND t.marker_score IS NOT NULL
 		)
         <if test="classNames != null and classNames.size() > 0">
-            AND EXISTS (select 1 from mark_student ms where exam_id = #{examId} and paper_number = #{paperNumber}
-            AND m.teach_class_name IN
+            AND EXISTS (select 1 from mark_student ms where ms.exam_id = #{examId} and ms.paper_number = #{paperNumber}
+            AND ms.teach_class_name IN
             <foreach collection="classNames" item="className" separator="," open="(" close=")">
                 #{className}
             </foreach>