xiaofei 1 an în urmă
părinte
comite
014566998a

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -758,7 +758,9 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         List<RoleResult> roleSource = new ArrayList<>();
         for (SysRole s : authBean.getRoleList()) {
             roleNamesSet.add(s.getName());
-            role.add(s.getType().name());
+            if (s.getType() != null) {
+                role.add(s.getType().name());
+            }
             if (Objects.isNull(s.getSource()) && Objects.nonNull(s.getType())) {
                 roleTypes.add(s.getType().name());
             }

+ 1 - 6
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/utils/FileStoreUtils.java

@@ -278,11 +278,6 @@ public class FileStoreUtils {
 
     public String uploadFile(InputStream inputStream, String md5, UploadFileEnum uploadFileEnum, String path) {
         try {
-            InputStream md5InputStream = inputStream;
-            String fileMd5 = DigestUtils.md5Hex(md5InputStream);
-            if (!Objects.equals(fileMd5, md5)) {
-                throw ExceptionResultEnum.MD5_EQUALS_FALSE.exception();
-            }
             FssDomain fssDomain = getFssDomain(uploadFileEnum.getFssType());
             boolean oss = dictionaryConfig.sysDomain().isOss();
             String fileName = getFssPath(oss, uploadFileEnum, path);
@@ -299,7 +294,7 @@ public class FileStoreUtils {
             }
             return JSON.toJSONString(new FilePathVo(fileName, uploadFileEnum, type));
         } catch (Exception e) {
-            throw ExceptionResultEnum.ERROR.exception("文件上传失败");
+            throw ExceptionResultEnum.ERROR.exception("文件上传失败" + e.getMessage());
         }
     }
 

+ 1 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/impl/JobServiceImpl.java

@@ -156,7 +156,7 @@ public class JobServiceImpl implements JobService {
         for (ExamDetailCourseInitMarkDto dto : examDetailCourseInitMarkDtoList) {
             printFinishService.insertMarkPaper(dto.getExamId(), dto.getCourseCode(), dto.getCourseName(), dto.getPaperNumber(), dto.getCoursePaperId(), dto.getPackageCode(), dto.getCreateId(), dto.getPaperType());
             printFinishService.insertMarkStudent(dto);
-            printFinishService.insertScanAnswerCard(dto);
+            printFinishService.insertScanAnswerCardAndMarkQuestion(dto);
         }
         log.info("结束同步数据:" + DateDisposeUtils.dateTime(new Date()));
     }

+ 4 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/PrintFinishService.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.task.service;
 
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
+import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 
 /**
  * 打印结束后操作服务类
@@ -11,7 +12,9 @@ public interface PrintFinishService {
 
     void insertMarkStudent(ExamDetailCourseInitMarkDto examDetail);
 
-    void insertScanAnswerCard(ExamDetailCourseInitMarkDto dto);
+    void insertScanAnswerCardAndMarkQuestion(ExamDetailCourseInitMarkDto dto);
+
+    void insertScanAnswerCard(ExamDetailCourseInitMarkDto dto, PaperInfoVo paperInfoVo);
 
     void insertMarkQuestion(Long examId, String paperNumber, String content);
 }

+ 53 - 43
teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/impl/PrintFinishServiceImpl.java

@@ -123,7 +123,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
     }
 
     @Override
-    public void insertScanAnswerCard(ExamDetailCourseInitMarkDto dto) {
+    public void insertScanAnswerCardAndMarkQuestion(ExamDetailCourseInitMarkDto dto) {
         String paperType = dto.getPaperType();
         if (StringUtils.isNotBlank(paperType)) {
             ExamTaskDetail examTaskDetail = examTaskDetailService.findByExamIdAndCourseCodeAndPaperNumber(dto.getSchoolId(), dto.getExamId(), dto.getCourseCode(), dto.getPaperNumber());
@@ -134,54 +134,64 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                     // 解析卡格式中试卷结构并保存
                     this.insertMarkQuestion(dto.getExamId(), dto.getPaperNumber(), examCard.getContent());
 
-                    ScanAnswerCard scanAnswerCard = scanAnswerCardService.getByExamIdAndCoursePaperIdAndCardId(dto.getExamId(), dto.getCoursePaperId(), paperInfoVo.getCardId());
-                    if (scanAnswerCard != null) {
-                        continue;
-                    }
+                    // 保存卡格式
+                    this.insertScanAnswerCard(dto, paperInfoVo);
+                }
+            }
+        }
+    }
+
+    @Override
+    public void insertScanAnswerCard(ExamDetailCourseInitMarkDto dto, PaperInfoVo paperInfoVo) {
+        ExamCard examCard = examCardService.getById(paperInfoVo.getCardId());
+        if (examCard != null) {
 
-                    File tempFile = SystemConstant.getFileTempDirVar(System.currentTimeMillis() + File.separator + SystemConstant.getNanoId(), SystemConstant.TEMP_PREFIX);
-                    String rootPath = tempFile.getParent();
-                    String jsonPath = rootPath + File.separator + paperInfoVo.getCardId() + SystemConstant.JSON_PREFIX;
-                    File jsonFile = SystemConstant.createJsonFile(jsonPath, examCard.getContent());
-                    if (jsonFile.exists()) {
-                        InputStream inputStream = null;
+            ScanAnswerCard scanAnswerCard = scanAnswerCardService.getByExamIdAndCoursePaperIdAndCardId(dto.getExamId(), dto.getCoursePaperId(), paperInfoVo.getCardId());
+            if (scanAnswerCard != null) {
+                return;
+            }
+
+            File tempFile = SystemConstant.getFileTempDirVar(System.currentTimeMillis() + File.separator + SystemConstant.getNanoId(), SystemConstant.TEMP_PREFIX);
+            String rootPath = tempFile.getParent();
+            String jsonPath = rootPath + File.separator + paperInfoVo.getCardId() + SystemConstant.JSON_PREFIX;
+            File jsonFile = SystemConstant.createJsonFile(jsonPath, examCard.getContent());
+            if (jsonFile.exists()) {
+                InputStream inputStream = null;
+                try {
+                    inputStream = new FileInputStream(jsonFile);
+                    String md5 = DigestUtils.md5Hex(new FileInputStream(jsonFile));
+                    Integer number = scanAnswerCardService.findMaxCardNumberByExamId(dto.getExamId());
+                    String path = markFileService.getAnswerCardUri(dto.getExamId(), dto.getCoursePaperId(), number);
+                    String uploadPath = fileStoreUtils.uploadFile(inputStream, md5, UploadFileEnum.CARD, path);
+
+                    scanAnswerCard = new ScanAnswerCard();
+                    scanAnswerCard.setExamId(dto.getExamId());
+                    scanAnswerCard.setPaperNumber(dto.getPaperNumber());
+                    scanAnswerCard.setCoursePaperId(dto.getCoursePaperId());
+                    scanAnswerCard.setCardId(paperInfoVo.getCardId());
+                    scanAnswerCard.setNumber(number);
+                    scanAnswerCard.setSource(CardSource.WEB);
+                    scanAnswerCard.setUri(uploadPath);
+                    scanAnswerCard.setMd5(md5);
+                    scanAnswerCard.setNeedAdapte(true);
+                    scanAnswerCardService.save(scanAnswerCard);
+                } catch (IOException e) {
+                    log.info("考试[{}],试卷编号[{}],题卡ID[{}]同步阅卷失败", dto.getExamId(), dto.getPaperNumber(), paperInfoVo.getCardId());
+                } finally {
+                    try {
+                        FileUtils.forceDeleteOnExit(jsonFile);
+                    } catch (IOException e) {
+                        log.info("删除jsonFile失败");
+                    }
+                    if (inputStream != null) {
                         try {
-                            File file = jsonFile;
-                            inputStream = new FileInputStream(jsonFile);
-                            String md5 = DigestUtils.md5Hex(new FileInputStream(file));
-                            Integer number = scanAnswerCardService.findMaxCardNumberByExamId(dto.getExamId());
-                            String path = markFileService.getAnswerCardUri(dto.getExamId(), dto.getCoursePaperId(), number);
-                            String uploadPath = fileStoreUtils.uploadFile(inputStream, md5, UploadFileEnum.CARD, path);
-
-                            scanAnswerCard = new ScanAnswerCard();
-                            scanAnswerCard.setExamId(dto.getExamId());
-                            scanAnswerCard.setPaperNumber(dto.getPaperNumber());
-                            scanAnswerCard.setCoursePaperId(dto.getCoursePaperId());
-                            scanAnswerCard.setCardId(paperInfoVo.getCardId());
-                            scanAnswerCard.setNumber(number);
-                            scanAnswerCard.setSource(CardSource.WEB);
-                            scanAnswerCard.setUri(uploadPath);
-                            scanAnswerCard.setMd5(md5);
-                            scanAnswerCard.setNeedAdapte(true);
-                            scanAnswerCardService.save(scanAnswerCard);
+                            inputStream.close();
                         } catch (IOException e) {
-                            log.info("考试[{}],试卷编号[{}],题卡ID[{}]同步阅卷失败", dto.getExamId(), dto.getPaperNumber(), paperInfoVo.getCardId());
-                        } finally {
-                            try {
-                                FileUtils.forceDeleteOnExit(jsonFile);
-                            } catch (IOException e) {
-                                log.info("删除jsonFile失败");
-                            }
-                            if (inputStream != null) {
-                                try {
-                                    inputStream.close();
-                                } catch (IOException e) {
-                                    log.info("关闭inputStream流失败");
-                                }
-                            }
+                            log.info("关闭inputStream流失败");
                         }
                     }
                 }
+
             }
         }
     }