Răsfoiți Sursa

下载并合并文件

licailing 5 ani în urmă
părinte
comite
95558814ca

+ 65 - 14
src/main/java/com/izouma/wenlvju/service/RateService.java

@@ -87,9 +87,6 @@ public class RateService {
             //承办过
             dataMap.put("undertake", rate.isUndertakeExamination() ? "是" : "否");
             //考级机构名称
-//            if (rate.isUndertakeExamination()) {
-//            dataMap.put("examination", String.join(",", rate.getExamination()));
-//            }
             Set<Long> ids = collaborateRepo.findAllByRateId(rate.getId())
                     .stream()
                     .map(Collaborate::getGradingOrganizationId)
@@ -112,8 +109,6 @@ public class RateService {
             StringWriter writer = new StringWriter();
             Template template = configuration.getTemplate("RateTemplate.ftl", "utf-8");//以utf-8的编码读取ftl文件
             template.process(dataMap, writer);
-            System.out.println(writer.toString());
-
             return writer.toString();
         } catch (Exception e) {
             log.error("生成word错误", e);
@@ -121,30 +116,86 @@ public class RateService {
         }
     }
 
-    public void upLoad(Rate rate) {
+    public List<File> upLoad(Rate rate) {
+        List<File> files = new ArrayList<>();
         String uri = "http://192.168.50.238:8080/word2pdf";
         // 表格
         String export = this.export(rate);
         InputStream is = new ByteArrayInputStream(export.getBytes());
-        String filename = "审核材料";
-        AtomicInteger num = new AtomicInteger(1);
+        File file = new File("/Users/qiufangchao/Desktop/" + "申请表" + ".pdf");
         HttpRequest.post(uri)
                 .accept("*/*")
                 .part("file", "审核材料.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", is)
-                .receive(new File("/Users/qiufangchao/Desktop/" + filename + num + ".pdf"));
+                .receive(file);
+        files.add(file);
+        this.downloadFile(files, rate.getPrivacyPolicy(), "法人资格");
+//        this.downloadFile(files, rate.getBusiness(), "业务内容");
+//        this.downloadFile(files, rate.getCredits(), "社会信誉");
+//        this.downloadFile(files, rate.getFire(), "消防安全");
+//        this.downloadFile(files, rate.getHygiene(), "卫生防疫");
+//        this.downloadFile(files, rate.getFinance(), "财务报表");
+//        this.downloadFile(files, rate.getProperty(), "房产证明");
+        return files;
+    }
+
+    public List<InputStream> upLoad1(Rate rate) {
+        List<InputStream> files = new ArrayList<>();
+        String uri = "http://192.168.50.238:8080/word2pdf";
+        // 表格
+        String export = this.export(rate);
+        InputStream is = new ByteArrayInputStream(export.getBytes());
+        InputStream stream = HttpRequest.post(uri)
+                .accept("*/*")
+                .part("file", "审核材料.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", is)
+                .stream();
+        files.add(stream);
+        this.downloadFile1(files, rate.getPrivacyPolicy());
+//        this.downloadFile(files, rate.getBusiness(), "业务内容");
+//        this.downloadFile(files, rate.getCredits(), "社会信誉");
+//        this.downloadFile(files, rate.getFire(), "消防安全");
+//        this.downloadFile(files, rate.getHygiene(), "卫生防疫");
+//        this.downloadFile(files, rate.getFinance(), "财务报表");
+//        this.downloadFile(files, rate.getProperty(), "房产证明");
+        return files;
+    }
+
+    public void downloadFile1(List<InputStream> files, List<String> urls) {
+        AtomicInteger num = new AtomicInteger(1);
+        urls.forEach(privacy -> {
+            num.getAndIncrement();
+            if (getSuffix(privacy).equals("doc") || getSuffix(privacy).equals("docx")) {
+                InputStream is1 = HttpRequest.get(privacy)
+                        .stream();
+                InputStream stream = HttpRequest.post("http://192.168.50.238:8080/word2pdf")
+                        .accept("*/*")
+                        .part("file", "审核材料.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", is1)
+                        .stream();
+                files.add(stream);
+            } else if (getSuffix(privacy).equals("pdf")) {
+                InputStream stream = HttpRequest.get(privacy)
+                        .stream();
+                files.add(stream);
+            }
+        });
+    }
 
-        rate.getPrivacyPolicy().forEach(privacy -> {
+    public void downloadFile(List<File> files, List<String> urls, String filename) {
+        AtomicInteger num = new AtomicInteger(1);
+        urls.forEach(privacy -> {
             num.getAndIncrement();
+            File file1 = new File("/Users/qiufangchao/Desktop/" + filename + num + ".pdf");
             if (getSuffix(privacy).equals("doc") || getSuffix(privacy).equals("docx")) {
                 InputStream is1 = HttpRequest.get(privacy)
                         .stream();
-                HttpRequest.post(uri)
+                HttpRequest.post("http://192.168.50.238:8080/word2pdf")
                         .accept("*/*")
                         .part("file", "审核材料.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", is1)
-                        .receive(new File("/Users/qiufangchao/Desktop/" + filename + num + ".pdf"));
+                        .receive(file1);
+                files.add(file1);
             } else if (getSuffix(privacy).equals("pdf")) {
                 HttpRequest.get(privacy)
-                        .receive(new File("/Users/qiufangchao/Desktop/" + filename + num + ".pdf"));
+                        .receive(file1);
+                files.add(file1);
             }
         });
     }
@@ -154,6 +205,6 @@ public class RateService {
         if (index < 0) {
             return "";
         }
-        return url.substring(index);
+        return url.substring(index + 1);
     }
 }

+ 32 - 0
src/test/java/com/izouma/wenlvju/service/RateServiceTest.java

@@ -5,9 +5,17 @@ import com.izouma.wenlvju.ApplicationTests;
 import com.izouma.wenlvju.domain.Rate;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.RateRepo;
+import org.apache.pdfbox.io.MemoryUsageSetting;
+import org.apache.pdfbox.multipdf.PDFMergerUtility;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
 
 public class RateServiceTest extends ApplicationTests {
     @Autowired
@@ -20,4 +28,28 @@ public class RateServiceTest extends ApplicationTests {
         Rate rate = rateRepo.findById(467L).orElseThrow(new BusinessException("无记录"));
         rateService.upLoad(rate);
     }
+
+    @Test
+    public void test2() throws IOException {
+        Rate rate = rateRepo.findById(467L).orElseThrow(new BusinessException("无记录"));
+        List<InputStream> files = rateService.upLoad1(rate);
+
+        String targetPath = "/Users/qiufangchao/Desktop/result.pdf";
+        // pdf合并工具类
+        PDFMergerUtility mergePdf = new PDFMergerUtility();
+//        for (File f : files) {
+//            if (f.exists() && f.isFile()) {
+                // 循环添加要合并的pdf
+//                mergePdf.addSource(f);
+//            }
+//        }
+        mergePdf.addSources(files);
+        // 设置合并生成pdf文件名称
+        mergePdf.setDestinationFileName(targetPath);
+        // 合并pdf
+        mergePdf.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
+        new File(targetPath);
+
+    }
+
 }

+ 0 - 22
src/test/java/com/izouma/wenlvju/web/RateControllerTest.java

@@ -3,16 +3,11 @@ package com.izouma.wenlvju.web;
 
 import com.github.kevinsawicki.http.HttpRequest;
 import com.izouma.wenlvju.ApplicationTests;
-import org.apache.commons.io.IOUtils;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
 import java.time.LocalDateTime;
 
 public class RateControllerTest extends ApplicationTests {
@@ -29,24 +24,7 @@ public class RateControllerTest extends ApplicationTests {
         rateController.saveReviewTime(162L, LocalDateTime.now());
     }
 
-    @Test
-    public void test2() {
-//        String targetPath = "";
-//        // pdf合并工具类
-//        PDFMergerUtility mergePdf = new PDFMergerUtility();
-//        for (File f : files) {
-//            if (f.exists() && f.isFile()) {
-//                // 循环添加要合并的pdf
-//                mergePdf.addSource(f);
-//            }
-//        }
-//        // 设置合并生成pdf文件名称
-//        mergePdf.setDestinationFileName(targetPath);
-//        // 合并pdf
-//        mergePdf.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
-//        return new File(targetPath);
 
-    }
 
     @Test
     public void test3() {