|
@@ -34,6 +34,7 @@ import com.qmth.teachcloud.common.service.FileUploadService;
|
|
|
import com.qmth.teachcloud.common.service.TeachcloudCommonService;
|
|
|
import com.qmth.teachcloud.common.util.FileUtil;
|
|
|
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.ArchiveScoreVo;
|
|
|
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.utils.Calculator;
|
|
|
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.collections4.CollectionUtils;
|
|
|
import org.apache.commons.io.FileUtils;
|
|
@@ -70,7 +72,9 @@ import javax.annotation.Resource;
|
|
|
import javax.servlet.ServletOutputStream;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.File;
|
|
|
+import java.io.FileInputStream;
|
|
|
import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Function;
|
|
@@ -108,7 +112,9 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
|
|
|
@Resource
|
|
|
private BasicCourseService basicCourseService;
|
|
|
@Resource
|
|
|
- private FileUploadService fileUploadService;
|
|
|
+ private FileStoreUtils fileStoreUtils;
|
|
|
+ @Resource
|
|
|
+ private MarkFileService markFileService;
|
|
|
|
|
|
|
|
|
@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));
|
|
|
+
|
|
|
+ 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()) {
|
|
|
String courseCode = entry.getKey();
|
|
|
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());
|
|
|
// 保存试卷结构
|
|
@@ -666,8 +681,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
|
|
|
scanAnswerCard.setCardId(null);
|
|
|
scanAnswerCard.setNumber(scanAnswerCardService.findMaxCardNumberByExamId(examId) + 1);
|
|
|
scanAnswerCard.setSource(CardSource.WEB);
|
|
|
- scanAnswerCard.setUri(JSON.toJSONString(filePathVo));
|
|
|
- scanAnswerCard.setMd5(md5);
|
|
|
+ scanAnswerCard.setUri(uploadPath);
|
|
|
+ scanAnswerCard.setMd5(jsonMd5);
|
|
|
scanAnswerCard.setNeedAdapte(true);
|
|
|
scanAnswerCard.setSinglePage(false);// 默认false
|
|
|
scanAnswerCard.setContent(jsonContent);
|
|
@@ -687,6 +702,10 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
|
|
|
} catch (Exception e) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("上传失败:" + e.getMessage());
|
|
|
} finally {
|
|
|
+// try {
|
|
|
+// FileUtils.forceDeleteOnExit(jsonFile);
|
|
|
+// } catch (IOException e) {
|
|
|
+// }
|
|
|
if (parentDirVar != null) {
|
|
|
FileUtil.deleteFile(parentDirVar);
|
|
|
}
|