Ver Fonte

下载成绩报告

yin há 3 meses atrás
pai
commit
28708dca35

+ 15 - 13
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkArchiveController.java

@@ -1,5 +1,17 @@
 package com.qmth.distributed.print.api.mark;
 
+import java.io.IOException;
+import java.net.URLEncoder;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.service.BasicExamService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -13,19 +25,9 @@ import com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentQuery;
 import com.qmth.teachcloud.mark.bean.archivescore.ScoreReportVo;
 import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.MarkStudentService;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.net.URLEncoder;
 
 /**
  * <p>
@@ -84,8 +86,8 @@ public class MarkArchiveController {
 
     @ApiOperation(value = "成绩报告导出")
     @RequestMapping(value = "/score/report/download", method = RequestMethod.POST)
-    public void scoreReportDownload(MultipartFile file, HttpServletResponse response) {
-        markStudentService.scoreReportDownload(file, response);
+    public Result scoreReportDownload(@Validated ArchiveStudentQuery query,MultipartFile file, HttpServletResponse response) {
+        return ResultUtil.ok(markStudentService.scoreReportDownload(query,file, response));
     }
 
     @ApiOperation(value = "成绩报告")

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -181,7 +181,7 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     int countOmrAbsentStudent(Long examId, String paperNumber, boolean isOmrAbsentConfirm, String teachClassName);
 
-    void scoreReportDownload(MultipartFile file, HttpServletResponse response);
+    String scoreReportDownload(ArchiveStudentQuery query,MultipartFile file, HttpServletResponse response);
 
     void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
 

+ 13 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -55,13 +55,16 @@ import com.qmth.teachcloud.mark.params.MarkHeaderResult;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.BatchGetDataUtil;
 import com.qmth.teachcloud.mark.utils.Calculator;
+import com.qmth.teachcloud.mark.utils.FileStoreUtils;
 import com.qmth.teachcloud.mark.utils.ScoreCalculateUtil;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.FillPatternType;
 import org.apache.poi.ss.usermodel.IndexedColors;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.FileCopyUtils;
@@ -155,6 +158,9 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     @Resource
     CommonCacheService commonCacheService;
 
+    @Autowired
+    private FileStoreUtils fileStoreUtils;
+
     @Override
     public List<String> listClassByExamIdAndCourseCode(Long examId, String paperNumber) {
         MarkStudentQuery markStudentQuery = new MarkStudentQuery();
@@ -1582,7 +1588,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     @Override
-    public void scoreReportDownload(MultipartFile file, HttpServletResponse response) {
+    public String scoreReportDownload(ArchiveStudentQuery query,MultipartFile file, HttpServletResponse response) {
         String rootPath = null;
         File htmlFile;
         File pdfFile;
@@ -1617,7 +1623,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                 pdfFile.createNewFile();
             }
             HtmlToPdfUtil.convert(cardHtmlPath, cardPdfPath, PageSizeEnum.A4);
-            FileUtil.outputFile(response, pdfFile, "报告" + SystemConstant.PDF_PREFIX);
+            String md5 = DigestUtils.md5Hex(new FileInputStream(pdfFile));
+            String path = UploadFileEnum.PDF.getPath(UploadFileEnum.PDF.getTitle(), query.getExamId(), query.getPaperNumber(), FormatType.PDF.name().toLowerCase());
+            String uploadPath = fileStoreUtils.uploadFile(new FileInputStream(pdfFile), md5, UploadFileEnum.PDF, path);
+            return uploadPath;
+//            FileUtil.outputFile(response, pdfFile, "报告" + SystemConstant.PDF_PREFIX);
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
@@ -1625,6 +1635,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                 ConvertUtil.delFolder(rootPath);
             }
         }
+        return null;
     }
 
     @Override