wangliang 4 år sedan
förälder
incheckning
fb603f800e

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncDownloadPdfTempleteService.java

@@ -30,7 +30,7 @@ import java.util.StringJoiner;
 public class AsyncDownloadPdfTempleteService extends AsyncExportTaskTemplete {
     private final static Logger log = LoggerFactory.getLogger(AsyncCreatePdfTempleteService.class);
 
-    static final String OBJ_TITLE = "pdf数据";
+    static final String OBJ_TITLE = "zip数据";
     /**
      * 下载pdf
      *

+ 46 - 26
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.business.templete.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.oss.common.utils.BinaryUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.dto.ExaminationExportDto;
@@ -23,7 +24,9 @@ import com.qmth.distributed.print.business.util.OssUtil;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import com.qmth.distributed.print.common.util.FileUtil;
+import com.qmth.distributed.print.common.util.HexUtils;
 import com.qmth.distributed.print.common.util.ResultUtil;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
@@ -535,40 +538,57 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     public Map<String, Object> executeDownloadPdfLogic(Map<String, Object> map) throws Exception {
         try {
             TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
-            SysUser sysUser = (SysUser) map.get(SystemConstant.USER);
             JSONArray jsonArray = JSONArray.parseArray(tbTask.getRemark());
             ArraysParams arraysParams = new ArraysParams(jsonArray.toArray(new Long[jsonArray.size()]));
+            if (Objects.isNull(arraysParams) || arraysParams.getIds().length == 0) {
+                throw ExceptionResultEnum.ERROR.exception("数组id为空");
+            }
 
             //查询examDetail
             QueryWrapper<ExamDetail> examDetailQueryWrapper = new QueryWrapper<>();
             examDetailQueryWrapper.lambda().in(ExamDetail::getPrintPlanId, arraysParams.getIds());
             List<ExamDetail> examDetailList = examDetailService.list(examDetailQueryWrapper);
-            Set<Long> attachmentIds = examDetailList.stream().map(ExamDetail::getAttachmentId).collect(Collectors.toSet());
-
-            List<BasicAttachment> basicAttachmentList = basicAttachmentService.listByIds(attachmentIds);
-
-            LocalDateTime nowTime = LocalDateTime.now();
-            StringJoiner stringJoiner = new StringJoiner("")
-                    .add(SystemConstant.TEMP_FILES_DIR).add(File.separator)
-                    .add(UploadFileEnum.FILE.getTitle()).add(File.separator)
-                    .add(String.valueOf(nowTime.getYear())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getDayOfMonth()))
-                    .add(File.separator).add(SystemConstant.getUuid()).add(SystemConstant.ZIP_PREFIX);
-            File zipFile = new File(stringJoiner.toString());
-            if (!zipFile.getParentFile().exists()) {
-                zipFile.getParentFile().mkdirs();
-                zipFile.createNewFile();
-            }
-            List<File> sourceFiles = new ArrayList<>();
-            for (BasicAttachment basicAttachment : basicAttachmentList) {
-                JSONObject jsonObject = JSONObject.parseObject(basicAttachment.getPath());
-                StringJoiner stringJoinerPdf = new StringJoiner("")
-                        .add(SystemConstant.TEMP_FILES_DIR).add(File.separator)
-                        .add((String) jsonObject.get("path"));
-                sourceFiles.add(ossUtil.ossDownload((String) jsonObject.get("path"), stringJoinerPdf.toString()));
+            if (Objects.nonNull(examDetailList)) {
+                Set<Long> attachmentIds = examDetailList.stream().map(ExamDetail::getAttachmentId).collect(Collectors.toSet());
+                List<BasicAttachment> basicAttachmentList = basicAttachmentService.listByIds(attachmentIds);
+
+                if (Objects.nonNull(basicAttachmentList)) {
+                    LocalDateTime nowTime = LocalDateTime.now();
+                    StringJoiner stringJoiner = new StringJoiner("")
+                            .add(SystemConstant.TEMP_FILES_DIR).add(File.separator);
+                    StringJoiner dirName = new StringJoiner("")
+                            .add(UploadFileEnum.FILE.getTitle()).add(File.separator)
+                            .add(String.valueOf(nowTime.getYear())).add(File.separator)
+                            .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
+                            .add(String.format("%02d", nowTime.getDayOfMonth()))
+                            .add(File.separator).add(SystemConstant.getUuid()).add(SystemConstant.ZIP_PREFIX);
+                    File zipFile = new File(stringJoiner.toString() + dirName.toString());
+                    if (!zipFile.getParentFile().exists()) {
+                        zipFile.getParentFile().mkdirs();
+                        zipFile.createNewFile();
+                    }
+                    List<File> sourceFiles = new ArrayList<>();
+                    for (BasicAttachment basicAttachment : basicAttachmentList) {
+                        JSONObject jsonObject = JSONObject.parseObject(basicAttachment.getPath());
+                        StringJoiner stringJoinerPdf = new StringJoiner("")
+                                .add(SystemConstant.TEMP_FILES_DIR).add(File.separator)
+                                .add((String) jsonObject.get("path"));
+                        sourceFiles.add(ossUtil.ossDownload((String) jsonObject.get("path"), stringJoinerPdf.toString()));
+                    }
+                    FileUtil.doZip(zipFile, sourceFiles);
+                    ossUtil.ossUpload(dirName.toString(), zipFile, BinaryUtil.toBase64String(HexUtils.decodeHex(DigestUtils.md5Hex(new FileInputStream(zipFile)))));
+                    JSONObject jsonObject = new JSONObject();
+                    jsonObject.put(SystemConstant.PATH, dirName.toString());
+                    jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
+                    jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
+                    tbTask.setResultFilePath(jsonObject.toJSONString());
+                    for (File file : sourceFiles) {
+                        file.delete();
+                    }
+                    zipFile.delete();
+                }
+                map.computeIfAbsent(SystemConstant.SIZE, v -> attachmentIds.size());
             }
-            FileUtil.doZip(zipFile, sourceFiles);
         } catch (Exception e) {
             log.error("请求出错", e);
             if (e instanceof ApiException) {