孙永军 hace 1 año
padre
commit
3e54db6744

+ 4 - 0
build.gradle

@@ -62,6 +62,7 @@ dependencies {
     implementation 'com.opencsv:opencsv:4.5'
     implementation 'cn.hutool:hutool-http:5.7.20'
     implementation 'cn.hutool:hutool-poi:5.7.20'
+    implementation 'org.apache.poi:poi:5.0.0'
     implementation 'org.apache.poi:poi-ooxml:5.0.0'
     implementation 'com.alibaba:easyexcel:2.2.6'
     implementation 'org.springframework.retry:spring-retry:1.3.1'
@@ -69,6 +70,9 @@ dependencies {
     implementation 'com.aliyun.oss:aliyun-sdk-oss:3.10.2'
     implementation 'xerces:xercesImpl:2.11.0'
 
+    implementation 'org.apache.poi:poi-scratchpad:5.0.0'
+
+
 
 }
 

+ 7 - 1
src/main/java/com/sxtvs/open/api/bid/controller/BidFilesController.java

@@ -12,6 +12,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -42,7 +43,12 @@ public class BidFilesController {
     public List<String> upload(@RequestParam(value = "id") Long id, @RequestParam("files") MultipartFile[] file){
         List<String> urls = new ArrayList<>();
         for( MultipartFile multipartFile : file){
-            String s = ossService.bidPut(multipartFile, id);
+            String s;
+            if(Objects.requireNonNull(multipartFile.getOriginalFilename()).endsWith(".doc")){
+                s = ossService.bidDocPut(multipartFile, id);
+            }else{
+               s = ossService.bidPut(multipartFile, id);
+            }
             urls.add(s);
         }
         return urls;

+ 33 - 3
src/main/java/com/sxtvs/open/api/h5template/service/impl/OSSService.java

@@ -13,12 +13,14 @@ import com.aliyun.oss.model.*;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.util.TextUtils;
+import org.apache.poi.hwpf.HWPFDocument;
+import org.apache.poi.hwpf.usermodel.Range;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFParagraph;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
 import java.net.*;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
@@ -154,6 +156,34 @@ public class OSSService {
     }
 
 
+    @SneakyThrows
+    public String bidDocPut(MultipartFile file,  Long id)  {
+        // 读取DOC文件
+        ByteArrayInputStream fis = new ByteArrayInputStream(IoUtil.readBytes(file.getInputStream()));
+
+        HWPFDocument document = new HWPFDocument(fis);
+        Range range = document.getRange();
+
+        // 创建一个新的空白docx文档
+        XWPFDocument newDocument = new XWPFDocument();
+
+        // 遍历原始doc文件的段落并添加到新的docx文档中
+        for (int i = 0; i < range.numParagraphs(); i++) {
+            XWPFParagraph paragraph = newDocument.createParagraph();
+            paragraph.createRun().setText(range.getParagraph(i).text());
+        }
+
+        String dir = "open/bid/" + id + "/";
+        String fileUrl = dir + file.getOriginalFilename() + "x";
+        ossClient.putObject(bucket, fileUrl , newDocument.getDocument().newInputStream());
+        fis.reset();
+
+        String encodedString = URLEncoder.encode(fileUrl, StandardCharsets.UTF_8);
+        newDocument.close();
+
+        return "https://cxzx.smcic.net/" + encodedString;
+    }
+
 }