|
@@ -15,6 +15,7 @@ import com.qmth.distributed.print.business.service.BasicVerifyCodeService;
|
|
import com.qmth.distributed.print.business.service.ExamPrintPlanService;
|
|
import com.qmth.distributed.print.business.service.ExamPrintPlanService;
|
|
import com.qmth.distributed.print.business.service.PrintCommonService;
|
|
import com.qmth.distributed.print.business.service.PrintCommonService;
|
|
import com.qmth.distributed.print.business.service.TBSyncTaskService;
|
|
import com.qmth.distributed.print.business.service.TBSyncTaskService;
|
|
|
|
+import com.qmth.distributed.print.business.util.PdfUtil;
|
|
import com.qmth.teachcloud.common.bean.auth.AuthBean;
|
|
import com.qmth.teachcloud.common.bean.auth.AuthBean;
|
|
import com.qmth.teachcloud.common.bean.result.LoginResult;
|
|
import com.qmth.teachcloud.common.bean.result.LoginResult;
|
|
import com.qmth.teachcloud.common.bean.result.UserLoginCheckResult;
|
|
import com.qmth.teachcloud.common.bean.result.UserLoginCheckResult;
|
|
@@ -24,13 +25,15 @@ import com.qmth.teachcloud.common.entity.*;
|
|
import com.qmth.teachcloud.common.enums.*;
|
|
import com.qmth.teachcloud.common.enums.*;
|
|
import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
|
|
import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
-import com.qmth.teachcloud.common.util.Result;
|
|
|
|
-import com.qmth.teachcloud.common.util.ResultUtil;
|
|
|
|
-import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
|
|
|
+import com.qmth.teachcloud.common.util.*;
|
|
import io.swagger.annotations.*;
|
|
import io.swagger.annotations.*;
|
|
|
|
+import org.apache.commons.codec.digest.DigestUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.apache.http.entity.ContentType;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
|
+import org.springframework.mock.web.MockMultipartFile;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.validation.BindingResult;
|
|
import org.springframework.validation.BindingResult;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
@@ -38,6 +41,10 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import javax.validation.Valid;
|
|
import javax.validation.Valid;
|
|
|
|
+import java.io.File;
|
|
|
|
+import java.io.FileInputStream;
|
|
|
|
+import java.io.FileOutputStream;
|
|
|
|
+import java.io.OutputStream;
|
|
import java.security.NoSuchAlgorithmException;
|
|
import java.security.NoSuchAlgorithmException;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -102,6 +109,9 @@ public class SysController {
|
|
@Resource
|
|
@Resource
|
|
BasicCampusService basicCampusService;
|
|
BasicCampusService basicCampusService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ FileStoreUtil fileStoreUtil;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 登录
|
|
* 登录
|
|
*
|
|
*
|
|
@@ -247,7 +257,8 @@ public class SysController {
|
|
}
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "文件上传接口")
|
|
@ApiOperation(value = "文件上传接口")
|
|
- @RequestMapping(value = "/file/upload", method = RequestMethod.POST)
|
|
|
|
|
|
+ @RequestMapping(value = "/file/exam_paper_upload", method = RequestMethod.POST)
|
|
|
|
+// @RequestMapping(value = "/file/upload", method = RequestMethod.POST)
|
|
@Transactional
|
|
@Transactional
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
|
|
public Result fileUpload(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
|
|
public Result fileUpload(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
|
|
@@ -272,6 +283,81 @@ public class SysController {
|
|
return ResultUtil.ok(new EditResult(basicAttachment.getId(), teachcloudCommonService.filePreview(basicAttachment.getPath()), basicAttachment.getPages()));
|
|
return ResultUtil.ok(new EditResult(basicAttachment.getId(), teachcloudCommonService.filePreview(basicAttachment.getPath()), basicAttachment.getPages()));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @ApiOperation(value = "考试试卷文件上传接口")
|
|
|
|
+// @RequestMapping(value = "/file/exam_paper_upload", method = RequestMethod.POST)
|
|
|
|
+ @RequestMapping(value = "/file/upload", method = RequestMethod.POST)
|
|
|
|
+ @Transactional
|
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
|
|
|
|
+ public Result fileExamPaperUpload(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
|
|
|
|
+ @ApiParam(value = "上传文件类型", required = true) @RequestParam UploadFileEnum type) {
|
|
|
|
+ Map<String,EditResult> resultMap = new HashMap<>();
|
|
|
|
+ BasicAttachment basicOriginalAttachment = null;
|
|
|
|
+ BasicAttachment basicTranslateAttachment = null;
|
|
|
|
+ EditResult original = new EditResult();
|
|
|
|
+ EditResult translate = new EditResult();
|
|
|
|
+ File localTempFile = null;
|
|
|
|
+ try {
|
|
|
|
+ File pdfOriginalFile = FileUtil.multipartFileToFile(file);
|
|
|
|
+ PageSizeEnum pageSizeEnum = PdfUtil.getPdfFormat(pdfOriginalFile);
|
|
|
|
+ switch (pageSizeEnum){
|
|
|
|
+ case A3:
|
|
|
|
+ basicOriginalAttachment = printCommonService.saveAttachment(file, ServletUtil.getRequestMd5(), type);
|
|
|
|
+ if (Objects.isNull(basicOriginalAttachment)) {
|
|
|
|
+ throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
|
|
|
|
+ }
|
|
|
|
+ original.setId(basicOriginalAttachment.getId());
|
|
|
|
+ original.setUrl(teachcloudCommonService.filePreview(basicOriginalAttachment.getPath()));
|
|
|
|
+ original.setPages(basicOriginalAttachment.getPages());
|
|
|
|
+
|
|
|
|
+ BeanUtils.copyProperties(original,translate);
|
|
|
|
+ break;
|
|
|
|
+ case A4:
|
|
|
|
+ basicOriginalAttachment = printCommonService.saveAttachment(file, ServletUtil.getRequestMd5(), type);
|
|
|
|
+ if (Objects.isNull(basicOriginalAttachment)) {
|
|
|
|
+ throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
|
|
|
|
+ }
|
|
|
|
+ original.setId(basicOriginalAttachment.getId());
|
|
|
|
+ original.setUrl(teachcloudCommonService.filePreview(basicOriginalAttachment.getPath()));
|
|
|
|
+ original.setPages(basicOriginalAttachment.getPages());
|
|
|
|
+
|
|
|
|
+ String destUrl = SystemConstant.PDF_TEMP_FILES_DIR + File.separator + file.getOriginalFilename();
|
|
|
|
+ localTempFile = new File(destUrl);
|
|
|
|
+ OutputStream out = new FileOutputStream(localTempFile);
|
|
|
|
+ PdfUtil.concatPDFs(new FileInputStream(pdfOriginalFile),out,false);
|
|
|
|
+ // File转换成MutipartFile
|
|
|
|
+ FileInputStream inputStream = new FileInputStream(localTempFile);
|
|
|
|
+ MultipartFile multipartFile = new MockMultipartFile(localTempFile.getName(),localTempFile.getName(), ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
|
|
|
|
+ basicTranslateAttachment = printCommonService.saveAttachment(multipartFile, DigestUtils.md5Hex(multipartFile.getBytes()), type);
|
|
|
|
+ translate.setId(basicTranslateAttachment.getId());
|
|
|
|
+ translate.setUrl(teachcloudCommonService.filePreview(basicTranslateAttachment.getPath()));
|
|
|
|
+ translate.setPages(basicTranslateAttachment.getPages());
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("请上传A4或A3格式的试卷文件");
|
|
|
|
+ }
|
|
|
|
+ resultMap.put("original",original);
|
|
|
|
+ resultMap.put("translate",translate);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("请求出错", e);
|
|
|
|
+ if (Objects.nonNull(basicOriginalAttachment)) {
|
|
|
|
+ basicAttachmentService.deleteAttachment(basicOriginalAttachment);
|
|
|
|
+ }
|
|
|
|
+ if (Objects.nonNull(basicTranslateAttachment)) {
|
|
|
|
+ basicAttachmentService.deleteAttachment(basicTranslateAttachment);
|
|
|
|
+ }
|
|
|
|
+ if (e instanceof ApiException) {
|
|
|
|
+ ResultUtil.error((ApiException) e, e.getMessage());
|
|
|
|
+ } else {
|
|
|
|
+ ResultUtil.error(e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ } finally {
|
|
|
|
+ if (Objects.nonNull(localTempFile)){
|
|
|
|
+ FileUtil.deleteFile(localTempFile);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return ResultUtil.ok(resultMap);
|
|
|
|
+ }
|
|
|
|
+
|
|
@ApiOperation(value = "文件下载接口")
|
|
@ApiOperation(value = "文件下载接口")
|
|
@RequestMapping(value = "/file/download", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/file/download", method = RequestMethod.POST)
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
|