Procházet zdrojové kódy

登记簿批量导出代码提交

jingyuanchao před 1 rokem
rodič
revize
f4d07421e3

+ 3 - 2
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteFileService.java

@@ -6,6 +6,7 @@ import com.xunmei.common.core.domain.registerbook.dto.CoreRegisterBookPdfExportD
 import com.xunmei.common.core.domain.registerbook.dto.ExportPdfDto;
 import com.xunmei.system.api.domain.SysFile;
 import com.xunmei.system.api.factory.RemoteFileFallbackFactory;
+import feign.Response;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -72,8 +73,8 @@ public interface RemoteFileService {
     String getStaticPathPrefix();
 
     @PostMapping(value = "/file/registerBookCompressPdf",consumes = MediaType.APPLICATION_JSON_VALUE)
-    void registerBookCompressPdf(@RequestBody ExportPdfDto exportDto);
+    Response registerBookCompressPdf(@RequestBody ExportPdfDto exportDto);
 
     @PostMapping(value = "/file/cutFileCompress")
-    void cutFileCompress(@RequestBody CoreRegisterBookPdfExportDto exportDto);
+    Response cutFileCompress(@RequestBody CoreRegisterBookPdfExportDto exportDto);
 }

+ 5 - 4
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteFileFallbackFactory.java

@@ -6,6 +6,7 @@ import com.xunmei.common.core.domain.registerbook.dto.CoreRegisterBookPdfExportD
 import com.xunmei.common.core.domain.registerbook.dto.ExportPdfDto;
 import com.xunmei.system.api.RemoteFileService;
 import com.xunmei.system.api.domain.SysFile;
+import feign.Response;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -60,13 +61,13 @@ public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileServ
             }
 
             @Override
-            public void registerBookCompressPdf(ExportPdfDto exportDto) {
-
+            public Response registerBookCompressPdf(ExportPdfDto exportDto) {
+                return null;
             }
 
             @Override
-            public void cutFileCompress(CoreRegisterBookPdfExportDto exportDto) {
-
+            public Response cutFileCompress(CoreRegisterBookPdfExportDto exportDto) {
+                return null;
             }
         };
     }

+ 0 - 3
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/registerbook/dto/CoreRegisterBookPdfExportDto.java

@@ -1,6 +1,5 @@
 package com.xunmei.common.core.domain.registerbook.dto;
 
-import cn.hutool.core.lang.UUID;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -21,6 +20,4 @@ public class CoreRegisterBookPdfExportDto extends CoreRegisterBookPdfPageDto {
 
     @ApiModelProperty(value = "文件id数组")
     private List<Long> pdfIdList;
-
-    private String guid= UUID.fastUUID().toString();
 }

+ 0 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/registerbook/dto/ExportPdfDto.java

@@ -20,8 +20,6 @@ public class ExportPdfDto {
 
     private String fileName;
 
-    private String guid;
-
     private Boolean checkSub;
 
     private Long orgId;

+ 5 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/registerbook/controller/CoreRegisterBookPdfController.java

@@ -1,6 +1,5 @@
 package com.xunmei.core.registerbook.controller;
 
-import cn.hutool.core.util.ObjectUtil;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.registerbook.dto.CoreRegisterBookPdfExportDto;
 import com.xunmei.common.core.domain.registerbook.dto.CoreRegisterBookPdfPageDto;
@@ -17,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -35,6 +36,7 @@ public class CoreRegisterBookPdfController extends BaseController {
     private RedisTemplate redisTemplate;
     @Autowired
     private RemoteOrgService orgService;
+
     @ApiOperation(value = "登记簿分页")
     @RequiresPermissions("core:registerBook:list")
     @GetMapping("/list")
@@ -45,11 +47,7 @@ public class CoreRegisterBookPdfController extends BaseController {
 
     @ApiOperation(value = "批量导出登记簿zip")
     @PostMapping("/batch/export")
-    public void exportPdfZip(@RequestBody CoreRegisterBookPdfExportDto exportDto) {
-        if (ObjectUtil.isEmpty(exportDto.getGuid())) {
-            throw new RuntimeException("guid不能为空!");
-        }
-        redisTemplate.opsForValue().increment(exportDto.getGuid(), 9);
+    public void exportPdfZip(@RequestBody CoreRegisterBookPdfExportDto exportDto, HttpServletResponse response) throws IOException {
         final String orgName = orgService.selectOrgById(exportDto.getOrgId(), SecurityConstants.INNER).getName();
         final List<CoreRegisterBookPdfPageVo> registerBookPdfList = registerBookPdfService.queryExportData(exportDto);
         if (registerBookPdfList.size() == 0) {
@@ -59,8 +57,7 @@ public class CoreRegisterBookPdfController extends BaseController {
         ExportPdfDto pdfDto = new ExportPdfDto();
         pdfDto.setRegisterBookPdfList(registerBookPdfList);
         pdfDto.setFileName(fileName);
-        pdfDto.setGuid(exportDto.getGuid());
-        registerBookPdfService.export(pdfDto);
+        registerBookPdfService.export(pdfDto, response);
     }
 
 }

+ 3 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/registerbook/service/ICoreRegisterBookPdfService.java

@@ -8,6 +8,8 @@ import com.xunmei.common.core.domain.registerbook.dto.ExportPdfDto;
 import com.xunmei.common.core.domain.registerbook.vo.CoreRegisterBookPdfPageVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -23,5 +25,5 @@ public interface ICoreRegisterBookPdfService extends IService<CoreRegisterBookPd
 
     List<CoreRegisterBookPdfPageVo> queryExportData(CoreRegisterBookPdfExportDto exportDto);
 
-    void export(ExportPdfDto pdfDto);
+    void export(ExportPdfDto pdfDto, HttpServletResponse response) throws IOException;
 }

+ 32 - 9
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/registerbook/service/impl/CoreRegisterBookPdfServiceImpl.java

@@ -24,10 +24,15 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import com.xunmei.system.api.vo.SysOrgVO;
+import feign.Response;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -56,10 +61,10 @@ public class CoreRegisterBookPdfServiceImpl extends ServiceImpl<CoreRegisterBook
 
         LambdaQueryWrapper<CoreRegisterBookPdf> wrapper = new LambdaQueryWrapper<>();
 
-        if (req.getCheckSub()){
-            wrapper.likeRight(CoreRegisterBookPdf::getOrgPath,sysOrg.getPath());
-        }else {
-            wrapper.eq(CoreRegisterBookPdf::getOrgId,req.getOrgId());
+        if (req.getCheckSub()) {
+            wrapper.likeRight(CoreRegisterBookPdf::getOrgPath, sysOrg.getPath());
+        } else {
+            wrapper.eq(CoreRegisterBookPdf::getOrgId, req.getOrgId());
         }
         Page<CoreRegisterBookPdf> pageRequest = req.getPageRequest();
         Page<CoreRegisterBookPdf> page = coreRegisterBookPdfMapper.selectPage(pageRequest, wrapper);
@@ -71,15 +76,32 @@ public class CoreRegisterBookPdfServiceImpl extends ServiceImpl<CoreRegisterBook
     }
 
     private CoreRegisterBookPdfPageVo getCoreRegisterBookPdfPageVo(CoreRegisterBookPdf coreRegisterBookPdf) {
-        CoreRegisterBookPdfPageVo vo=new CoreRegisterBookPdfPageVo();
-        BeanUtils.copyProperties(coreRegisterBookPdf,vo);
+        CoreRegisterBookPdfPageVo vo = new CoreRegisterBookPdfPageVo();
+        BeanUtils.copyProperties(coreRegisterBookPdf, vo);
         return vo;
 
     }
 
     @Override
-    public void export(ExportPdfDto pdfDto) {
-        fileService.registerBookCompressPdf(pdfDto);
+    public void export(ExportPdfDto pdfDto, HttpServletResponse response) throws IOException {
+        InputStream inputStream = null;
+        OutputStream outputStream = null;
+        try {
+            Response result = fileService.registerBookCompressPdf(pdfDto);
+            Response.Body body = result.body();
+            inputStream = body.asInputStream();
+            outputStream = response.getOutputStream();
+            int length = 0;
+            byte[] temp = new byte[1024 * 10];
+            while ((length = inputStream.read(temp)) != -1) {
+                outputStream.write(temp, 0, length);
+            }
+            outputStream.flush();
+            outputStream.close();
+            inputStream.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
     }
 
     @Override
@@ -125,7 +147,8 @@ public class CoreRegisterBookPdfServiceImpl extends ServiceImpl<CoreRegisterBook
         return result;
     }
 
-    private List<IdName<Long, String>> get(List<SysOrgVO> all, List<IdName<Long, String>> orgList, SysOrgVO org, Long orgId) {
+    private List<IdName<Long, String>> get(List<SysOrgVO> all, List<IdName<Long, String>> orgList, SysOrgVO
+            org, Long orgId) {
 
         final Optional<SysOrgVO> optional = all.stream()
                 .filter(org1 -> org1.getId().equals(org.getParentId()) && org.getPath().contains(org1.getPath()))

+ 2 - 1
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/controller/SysFileController.java

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.Map;
 
 /**
@@ -177,7 +178,7 @@ public class SysFileController {
 
 
     @PostMapping(value = "/registerBookCompressPdf")
-    void registerBookCompressPdf(@RequestBody ExportPdfDto exportDto,HttpServletResponse response){
+    void registerBookCompressPdf(@RequestBody ExportPdfDto exportDto, HttpServletResponse response) throws IOException {
         sysFileService.registerBookCompressPdf(exportDto,response);
     }
 

+ 1 - 1
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/ISysFileService.java

@@ -67,7 +67,7 @@ public interface ISysFileService
 
     InputStream getFileStream(String path) throws IOException;
 
-    void registerBookCompressPdf(ExportPdfDto exportDto,HttpServletResponse response);
+    void registerBookCompressPdf(ExportPdfDto exportDto, HttpServletResponse response) throws IOException;
 
     void cutFileCompress(CoreRegisterBookPdfExportDto exportDto);
 

+ 4 - 16
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/LocalSysFileServiceImpl.java

@@ -526,10 +526,7 @@ public class LocalSysFileServiceImpl implements ISysFileService {
     }
 
     @Override
-    public void registerBookCompressPdf(ExportPdfDto pdfDto,HttpServletResponse response) {
-        if (ObjectUtil.isEmpty(pdfDto.getGuid())) {
-            pdfDto.setGuid(cn.hutool.core.lang.UUID.fastUUID().toString());
-        }
+    public void registerBookCompressPdf(ExportPdfDto pdfDto, HttpServletResponse response) throws IOException {
         final List<CoreRegisterBookPdfPageVo> registerBookPdfList = pdfDto.getRegisterBookPdfList();
         try {
             String zipName = URLEncoder.encode(pdfDto.getFileName() + DateHelper.getDateString(new Date()) + ".zip", "UTF-8");
@@ -549,11 +546,9 @@ public class LocalSysFileServiceImpl implements ISysFileService {
                 log.info("当前开始处理第{}个文件 ", pdfToZipTempVoList.indexOf(tempVo) + 1);
                 deal(zos, pdfDto, tempVo);
             }
-
-
-            outputStream.flush();
+            zos.flush();
+            zos.close();
             outputStream.close();
-
             log.info("登记簿批量导出压缩文件完成,文件数量:{}", pdfToZipTempVoList.size());
         } catch (Throwable e) {
             String errMsg = String.format("登记簿导出失败:%s", e);
@@ -564,7 +559,6 @@ public class LocalSysFileServiceImpl implements ISysFileService {
                 FileUtil.del(temp);
                 log.info("临时目录已删除");
             }
-            // redisTemplate.delete(pdfDto.getGuid());
         }
     }
 
@@ -579,9 +573,6 @@ public class LocalSysFileServiceImpl implements ISysFileService {
         try {
 
             inputStream = getFileStream(pdf.getFileUrl());
-            if (pdfDto != null) {
-                redisTemplate.opsForValue().increment(pdfDto.getGuid(), 9);
-            }
             if (ObjectUtil.isEmpty(inputStream)) {
                 log.error("登记簿导出失败,文件不存在,文件名:{}", pdf.getFileUrl());
                 return null;
@@ -636,11 +627,8 @@ public class LocalSysFileServiceImpl implements ISysFileService {
         while ((len = fileInputStream.read(buffer)) > 0) {
             zos.write(buffer, 0, len);
         }
+        zos.closeEntry();
         fileInputStream.close();
-        if (pdfDto != null) {
-            redisTemplate.opsForValue().increment(pdfDto.getGuid(), 9);
-        }
-
     }