Selaa lähdekoodia

3.4.1 bug修复

xiaofei 9 kuukautta sitten
vanhempi
commit
f20520baa9

+ 6 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -413,7 +413,9 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         copyExamCard.setCopyCardId(id);
         copyExamCard.setCopyCardId(id);
         copyExamCard.setUsed(false);
         copyExamCard.setUsed(false);
         // 生成图片
         // 生成图片
-        createJpgImage(copyExamCard);
+        if (ExamCardStatusEnum.SUBMIT.equals(copyExamCard.getStatus())) {
+            createJpgImage(copyExamCard);
+        }
         this.save(copyExamCard);
         this.save(copyExamCard);
         return copyExamCard.getId();
         return copyExamCard.getId();
     }
     }
@@ -421,6 +423,9 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
     @Override
     @Override
     public void convertImage(Long id) {
     public void convertImage(Long id) {
         ExamCard examCard = this.getById(id);
         ExamCard examCard = this.getById(id);
+        if (!ExamCardStatusEnum.SUBMIT.equals(examCard.getStatus())) {
+            throw ExceptionResultEnum.ERROR.exception("提交状态题卡才能生成图片");
+        }
         createJpgImage(examCard);
         createJpgImage(examCard);
         if (StringUtils.isNotBlank(examCard.getJpgAttachment())) {
         if (StringUtils.isNotBlank(examCard.getJpgAttachment())) {
             UpdateWrapper<ExamCard> updateWrapper = new UpdateWrapper<>();
             UpdateWrapper<ExamCard> updateWrapper = new UpdateWrapper<>();

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java

@@ -28,6 +28,7 @@ import com.qmth.teachcloud.mark.service.ScanPaperService;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.task.Task;
 import org.activiti.engine.task.Task;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -704,7 +705,7 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         // 更新曝光卷型、未曝光卷型
         // 更新曝光卷型、未曝光卷型
         ExamTaskDetail examTaskDetail = this.getByExamIdAndCourseIdAndPaperNumber(examId, null, paperNumber);
         ExamTaskDetail examTaskDetail = this.getByExamIdAndCourseIdAndPaperNumber(examId, null, paperNumber);
         // 考生使用卷型
         // 考生使用卷型
-        List<String> studentPaperTypes = Arrays.asList(exposePaperType.split(","));
+        List<String> studentPaperTypes = StringUtils.isBlank(exposePaperType) ? Arrays.asList(ArrayUtils.EMPTY_STRING_ARRAY) : Arrays.asList(exposePaperType.split(","));
         List<String> paperTypeList = Objects.isNull(examTaskDetail.getPaperType()) ? new ArrayList<>() : Arrays.asList(examTaskDetail.getPaperType().split(","));
         List<String> paperTypeList = Objects.isNull(examTaskDetail.getPaperType()) ? new ArrayList<>() : Arrays.asList(examTaskDetail.getPaperType().split(","));
         List<String> exposedPaperTypeList = Objects.isNull(examTaskDetail.getExposedPaperType()) ? new ArrayList<>() : Arrays.asList(examTaskDetail.getExposedPaperType().split(","));
         List<String> exposedPaperTypeList = Objects.isNull(examTaskDetail.getExposedPaperType()) ? new ArrayList<>() : Arrays.asList(examTaskDetail.getExposedPaperType().split(","));
 
 

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

@@ -784,7 +784,7 @@ public class ImportLogicServiceImpl implements ImportLogicService {
                             try {
                             try {
                                 Field declaredField = aClass.getDeclaredField(enumResult.getCode());
                                 Field declaredField = aClass.getDeclaredField(enumResult.getCode());
                                 declaredField.setAccessible(true);
                                 declaredField.setAccessible(true);
-                                declaredField.set(basicExamStudentImport, StringUtils.deleteWhitespace(entry.getValue()));
+                                declaredField.set(basicExamStudentImport, RequiredFieldsEnum.TEACHER_NAME.getCode().equals(enumResult.getCode()) ? entry.getValue().trim() : StringUtils.deleteWhitespace(entry.getValue()));
                             } catch (NoSuchFieldException e) {
                             } catch (NoSuchFieldException e) {
                                 throw ExceptionResultEnum.ERROR.exception("未获取到表头为[" + entry.getKey() + "]的属性值");
                                 throw ExceptionResultEnum.ERROR.exception("未获取到表头为[" + entry.getKey() + "]的属性值");
                             } catch (IllegalAccessException e) {
                             } catch (IllegalAccessException e) {

+ 25 - 6
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java

@@ -34,6 +34,7 @@ import com.qmth.teachcloud.common.service.FileUploadService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.FileUtil;
 import com.qmth.teachcloud.common.util.FileUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.mark.bean.answercard.CardFile;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreQuery;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreQuery;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreVo;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreVo;
 import com.qmth.teachcloud.mark.bean.cardJson.CourseCard;
 import com.qmth.teachcloud.mark.bean.cardJson.CourseCard;
@@ -56,6 +57,7 @@ import com.qmth.teachcloud.mark.mapper.MarkPaperMapper;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.Calculator;
 import com.qmth.teachcloud.mark.utils.Calculator;
 import com.qmth.teachcloud.mark.utils.CardParseUtils;
 import com.qmth.teachcloud.mark.utils.CardParseUtils;
+import com.qmth.teachcloud.mark.utils.FileStoreUtils;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FileUtils;
@@ -70,7 +72,9 @@ import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URLEncoder;
 import java.net.URLEncoder;
 import java.util.*;
 import java.util.*;
 import java.util.function.Function;
 import java.util.function.Function;
@@ -108,7 +112,9 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     @Resource
     @Resource
     private BasicCourseService basicCourseService;
     private BasicCourseService basicCourseService;
     @Resource
     @Resource
-    private FileUploadService fileUploadService;
+    private FileStoreUtils fileStoreUtils;
+    @Resource
+    private MarkFileService markFileService;
 
 
 
 
     @Override
     @Override
@@ -561,6 +567,10 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
 
 
             // 相同课程代码,取第一个题卡
             // 相同课程代码,取第一个题卡
             Map<String, CourseCard> courseCardMap = courseCardList.stream().collect(Collectors.toMap(m -> m.getCourseCode(), Function.identity(), (v1, v2) -> v1));
             Map<String, CourseCard> courseCardMap = courseCardList.stream().collect(Collectors.toMap(m -> m.getCourseCode(), Function.identity(), (v1, v2) -> v1));
+
+            File tempFile = SystemConstant.getFileTempDirVar(System.currentTimeMillis() + File.separator + SystemConstant.getNanoId(), SystemConstant.TEMP_PREFIX);
+            String rootPath = tempFile.getParent();
+            File jsonFile = null;
             for (Map.Entry<String, CourseCard> entry : courseCardMap.entrySet()) {
             for (Map.Entry<String, CourseCard> entry : courseCardMap.entrySet()) {
                 String courseCode = entry.getKey();
                 String courseCode = entry.getKey();
                 CourseCard courseCard = entry.getValue();
                 CourseCard courseCard = entry.getValue();
@@ -618,9 +628,14 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                 }
                 }
 
 
                 // 上传电子卡格式
                 // 上传电子卡格式
-                String filePathName = SystemConstant.buildPath(true, UploadFileEnum.CARD.getTitle(), String.valueOf(SystemConstant.getDbUuid())) + fileName;
-                FilePathVo filePathVo = fileUploadService.uploadFile(zipReader.read(jsonFileName), UploadFileEnum.CARD, filePathName, DigestUtils.md5Hex(zipReader.read(jsonFileName)));
-                if (filePathVo != null) {
+                String jsonPath = rootPath + File.separator + SystemConstant.getDbUuid() + SystemConstant.JSON_PREFIX;
+                CardFile cardFile = CardFile.parse(jsonContent);
+                jsonFile = SystemConstant.createJsonFile(jsonPath, cardFile.output());
+                Integer number = scanAnswerCardService.findMaxCardNumberByExamId(examId) + 1;
+                String filePathName = markFileService.getAnswerCardUri(examId, markPaper.getCoursePaperId(), number);
+                String jsonMd5 = DigestUtils.md5Hex(new FileInputStream(jsonFile));
+                String uploadPath = fileStoreUtils.uploadFile(new FileInputStream(jsonFile), jsonMd5, UploadFileEnum.CARD, filePathName);
+                if (StringUtils.isNotBlank(uploadPath)) {
                     // 删除试卷结构
                     // 删除试卷结构
                     markQuestionService.deleteByExamIdAndPaperNumber(examId, markPaper.getPaperNumber());
                     markQuestionService.deleteByExamIdAndPaperNumber(examId, markPaper.getPaperNumber());
                     // 保存试卷结构
                     // 保存试卷结构
@@ -666,8 +681,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                     scanAnswerCard.setCardId(null);
                     scanAnswerCard.setCardId(null);
                     scanAnswerCard.setNumber(scanAnswerCardService.findMaxCardNumberByExamId(examId) + 1);
                     scanAnswerCard.setNumber(scanAnswerCardService.findMaxCardNumberByExamId(examId) + 1);
                     scanAnswerCard.setSource(CardSource.WEB);
                     scanAnswerCard.setSource(CardSource.WEB);
-                    scanAnswerCard.setUri(JSON.toJSONString(filePathVo));
-                    scanAnswerCard.setMd5(md5);
+                    scanAnswerCard.setUri(uploadPath);
+                    scanAnswerCard.setMd5(jsonMd5);
                     scanAnswerCard.setNeedAdapte(true);
                     scanAnswerCard.setNeedAdapte(true);
                     scanAnswerCard.setSinglePage(false);// 默认false
                     scanAnswerCard.setSinglePage(false);// 默认false
                     scanAnswerCard.setContent(jsonContent);
                     scanAnswerCard.setContent(jsonContent);
@@ -687,6 +702,10 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
         } catch (Exception e) {
         } catch (Exception e) {
             throw ExceptionResultEnum.ERROR.exception("上传失败:" + e.getMessage());
             throw ExceptionResultEnum.ERROR.exception("上传失败:" + e.getMessage());
         } finally {
         } finally {
+//            try {
+//                FileUtils.forceDeleteOnExit(jsonFile);
+//            } catch (IOException e) {
+//            }
             if (parentDirVar != null) {
             if (parentDirVar != null) {
                 FileUtil.deleteFile(parentDirVar);
                 FileUtil.deleteFile(parentDirVar);
             }
             }