|
@@ -1,18 +1,23 @@
|
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.update.Update;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.qmth.boot.core.exception.ParameterException;
|
|
|
import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
|
|
|
+import com.qmth.teachcloud.common.bean.marking.CardJpgResult;
|
|
|
+import com.qmth.teachcloud.common.bean.marking.scanAnswerCard.AnswerCard;
|
|
|
+import com.qmth.teachcloud.common.bean.marking.scanAnswerCard.AnswerCardPage;
|
|
|
+import com.qmth.teachcloud.common.bean.vo.FilePathVo;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
|
|
|
import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
|
|
|
import com.qmth.teachcloud.common.service.TeachcloudCommonService;
|
|
|
+import com.qmth.teachcloud.common.util.HttpUtil;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
import com.qmth.teachcloud.mark.bean.UriVo;
|
|
|
import com.qmth.teachcloud.mark.bean.answercard.AnswerCardSaveDomain;
|
|
@@ -22,12 +27,10 @@ import com.qmth.teachcloud.mark.entity.MarkPaper;
|
|
|
import com.qmth.teachcloud.mark.entity.ScanAnswerCard;
|
|
|
import com.qmth.teachcloud.mark.enums.CardSource;
|
|
|
import com.qmth.teachcloud.mark.mapper.ScanAnswerCardMapper;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkFileService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkPaperService;
|
|
|
-import com.qmth.teachcloud.mark.service.ScanAnswerCardService;
|
|
|
-import com.qmth.teachcloud.mark.service.ScanPaperService;
|
|
|
+import com.qmth.teachcloud.mark.service.*;
|
|
|
import com.qmth.teachcloud.mark.utils.FileStoreUtils;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -35,6 +38,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -51,16 +55,16 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
|
|
|
|
|
|
@Autowired
|
|
|
private MarkPaperService markPaperService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private ScanPaperService scanPaperService;
|
|
|
@Resource
|
|
|
private MarkFileService markFileService;
|
|
|
@Resource
|
|
|
+ private MarkStudentService markStudentService;
|
|
|
+ @Resource
|
|
|
private BasicRoleDataPermissionService basicRoleDataPermissionService;
|
|
|
@Resource
|
|
|
private TeachcloudCommonService teachcloudCommonService;
|
|
|
-
|
|
|
@Resource
|
|
|
private FileStoreUtils fileStoreUtils;
|
|
|
|
|
@@ -157,6 +161,8 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
|
|
|
// card.setSliceConfig(sliceConfig);
|
|
|
card.setMd5(domain.getMd5());
|
|
|
card.setUri(filePath);
|
|
|
+ card.setAdapteMd5(domain.getMd5());
|
|
|
+ card.setAdapteUri(filePath);
|
|
|
this.saveOrUpdate(card);
|
|
|
return card;
|
|
|
}
|
|
@@ -272,4 +278,37 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
|
|
|
this.remove(updateWrapper);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<CardJpgResult> listPageImage(Long examId, String paperNumber, String paperType) {
|
|
|
+ List<CardJpgResult> cardJpgResultList = new ArrayList<>();
|
|
|
+ Integer maxCardNumber = markStudentService.maxCardNumber(examId, paperNumber, paperType);
|
|
|
+ if (maxCardNumber != null) {
|
|
|
+ ScanAnswerCard scanAnswerCard = this.findByExamAndNumber(examId, maxCardNumber);
|
|
|
+ if (scanAnswerCard != null && StringUtils.isNotBlank(scanAnswerCard.getAdapteUri())) {
|
|
|
+ FilePathVo filePathVo = JSON.parseObject(scanAnswerCard.getAdapteUri(), FilePathVo.class);
|
|
|
+ if (filePathVo != null && StringUtils.isNotBlank(filePathVo.getPath())) {
|
|
|
+ String url = fileStoreUtils.getPrivateUrl(filePathVo.getPath(), filePathVo.getUploadType().getFssType());
|
|
|
+ try {
|
|
|
+ String jsonContent = HttpUtil.get(url, null, null, null);
|
|
|
+ if (StringUtils.isNotBlank(jsonContent)) {
|
|
|
+ AnswerCard answerCard = JSON.parseObject(jsonContent, AnswerCard.class);
|
|
|
+ if (answerCard != null && CollectionUtils.isNotEmpty(answerCard.getPages())) {
|
|
|
+ int pageIndex = 1;
|
|
|
+ for (AnswerCardPage page : answerCard.getPages()) {
|
|
|
+ if (page.getExchange() != null && StringUtils.isNotBlank(page.getExchange().getPageImage())) {
|
|
|
+ String pageImage = page.getExchange().getPageImage().replaceAll("\\r\\n", "");
|
|
|
+ cardJpgResultList.add(new CardJpgResult("page" + pageIndex, pageIndex, "data:image/png;base64," + pageImage));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ return cardJpgResultList;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return cardJpgResultList;
|
|
|
+ }
|
|
|
+
|
|
|
}
|