Ver código fonte

add file version

zero 7 meses atrás
pai
commit
ac5b00da37

+ 43 - 0
src/main/java/com/example/fms/common/utils/FileUtils.java

@@ -487,5 +487,48 @@ public class FileUtils {
         return rePath;
     }
 
+    public static MultipartFile convertBytesToMultipartFile(byte[] fileData, String fileName) throws IOException {
+        InputStream inputStream = new ByteArrayInputStream(fileData);
+        MultipartFile multipartFile = new MockMultipartFile("file", fileName, "application/octet-stream", inputStream);
+        return multipartFile;
+    }
+
+    public static File getFileByBytes(byte[] bytes, String prefix, String suffix) {
+        BufferedOutputStream bos = null;
+        FileOutputStream fos = null;
+        File file = null;
+        try {
+
+            file = File.createTempFile(prefix, suffix);
+
+            //输出流
+            fos = new FileOutputStream(file);
+
+            //缓冲流
+            bos = new BufferedOutputStream(fos);
+
+            //将字节数组写出
+            bos.write(bytes);
+            return file;
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (bos != null) {
+                try {
+                    bos.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (fos != null) {
+                try {
+                    fos.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            return file;
+        }
+    }
 }
 

+ 30 - 15
src/main/java/com/example/fms/service/FileVersionService.java

@@ -79,7 +79,16 @@ public class FileVersionService {
             if (ObjectUtils.isNotEmpty(params.get("changesurl"))) {
                 changesUrl = params.get("changesurl").toString();
             }
+            String fileType = "";
+            if (ObjectUtils.isNotEmpty(params.get("filetype"))) {
+                fileType = params.get("filetype").toString();
+            }
             if (status == 6 && StringUtils.isNotEmpty(url)) {
+                FileVersion fileVersion = fileVersionMapper.queryFileVersionByGuid(guid);
+                if (ObjectUtils.isEmpty(fileVersion)) {
+                    this.addFirstFileVersion(guid, 1, fileName, fileType, user);
+                    previousVersion = "1";
+                }
                 MultipartFile multipartFile = FileUtils.urlToMultipartFile(url, fileName);
                 String replaceFile = fileMangerService.replaceFile(multipartFile, guid, 6);
                 if (StringUtils.isEmpty(replaceFile)) {
@@ -118,7 +127,7 @@ public class FileVersionService {
                 if (StringUtils.equals(previousVersion, "undefined")) {
                     previousVersion = "";
                 }
-                this.addFileVersion(params, guid, fileName, user, previousVersion, url, changesUrl);
+                this.addFileVersion(params, guid, fileName, user, previousVersion, url, changesUrl,fileType);
             }
         }
         if (flag) {
@@ -128,13 +137,27 @@ public class FileVersionService {
         }
     }
 
+    public void addFirstFileVersion(String guid, Integer version, String fileName, String fileType, String user) throws IOException {
+        byte[] bytes = fileMangerService.downloadFile(guid);
+        MultipartFile multipartFile = FileUtils.convertBytesToMultipartFile(bytes, fileName);
+        List<String> list = fileMangerService.uploadFile(Collections.singletonList(multipartFile), 6);
+        FileVersion fileVersion1 = new FileVersion();
+        fileVersion1.setFileName(fileName);
+        fileVersion1.setFileType(fileType);
+        fileVersion1.setFileKey(RandomUtil.generateInvitationCode());
+        if (!CollectionUtils.isEmpty(list)) {
+            String newGuid = list.get(0);
+            fileVersion1.setUrl(newGuid);
+        }
+        fileVersion1.setVersion(version);
+        fileVersion1.setOriginalFile(guid);
+        fileVersion1.setUser(user);
+        fileVersion1.insert();
+    }
+
     public void addFileVersion(Map<String, Object> params, String guid, String fileName,
                                String user, String previousVersion, String url,
-                               String changesUrl) throws IOException {
-        String fileType = "";
-        if (ObjectUtils.isNotEmpty(params.get("filetype"))) {
-            fileType = params.get("filetype").toString();
-        }
+                               String changesUrl,String fileType) throws IOException {
         String changes = "";
         String serverVersion = "";
         String history = "";
@@ -156,15 +179,7 @@ public class FileVersionService {
             version = fileVersion.getVersion();
             originalFile = fileVersion.getOriginalFile();
         } else {
-            FileVersion fileVersion1 = new FileVersion();
-            fileVersion1.setFileName(fileName);
-            fileVersion1.setFileType(fileType);
-            fileVersion1.setFileKey(RandomUtil.generateInvitationCode());
-            fileVersion1.setUrl(guid);
-            fileVersion1.setVersion(version);
-            fileVersion1.setOriginalFile(guid);
-            fileVersion1.setUser(user);
-            fileVersion1.insert();
+            this.addFirstFileVersion(guid, version, fileName, fileType, user);
             previousVersion = "1";
         }
         version += 1;