Przeglądaj źródła

档案统计-档案总存储

qianxb 2 lat temu
rodzic
commit
3fb65f135e

+ 40 - 0
blade-common/src/main/java/org/springblade/common/utils/FileUtils.java

@@ -9,6 +9,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.net.URL;
 import java.net.URLConnection;
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -58,4 +59,43 @@ public class FileUtils  {
         return  reData;
     }
 
+    //获取OSS文件总大小
+    public static String getOssFileSizeCount(List<String> fileList){
+        Long count = 0L;
+        if(fileList!=null){
+            for(String fileUrl:fileList){
+                try {
+                    URLConnection  openConnection = new URL(fileUrl).openConnection();
+                    count += openConnection.getContentLength();
+
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return formatSize(count);
+    }
+
+    /**
+     * 根据字节返回文件大小
+     */
+    private static String formatSize(long fileS) {
+        DecimalFormat df = new DecimalFormat("#.00");
+        String fileSizeString = "";
+        String wrongSize = "0B";
+        if (fileS == 0) {
+            return wrongSize;
+        }
+        if (fileS < 1024) {
+            fileSizeString = df.format((double) fileS) + "B";
+        } else if (fileS < 1048576) {
+            fileSizeString = df.format((double) fileS / 1024) + "KB";
+        } else if (fileS < 1073741824) {
+            fileSizeString = df.format((double) fileS / 1048576) + "MB";
+        } else {
+            fileSizeString = df.format((double) fileS / 1073741824) + "GB";
+        }
+        return fileSizeString;
+    }
+
 }

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -70,4 +70,7 @@ public interface ArchiveFileClient {
 
     @PostMapping(API_PREFIX + "/getAllArchiveFileByContractType")
     List<Map<String,Object>> getAllArchiveFileByContractType(@RequestBody Long projectId);
+
+    @PostMapping(API_PREFIX + "/getAllArchiveFileSize")
+    String getAllArchiveFileSize(@RequestBody Long projectId);
 }

+ 11 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -276,4 +276,15 @@ public class ArchiveFileController extends BladeController {
         List<Map<String, Object>> mapList = archiveFileClient.getAllArchiveFileByContractType(projectId);
         return R.data(mapList);
     }
+
+    /**
+     * 档案统计-档案总存储
+     */
+    @GetMapping("/allArchiveFileSize")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "档案统计-档案总存储")
+    public R allArchiveFileSize(Long projectId) {
+        String fileSize = archiveFileClient.getAllArchiveFileSize(projectId);
+        return R.data(fileSize);
+    }
 }

+ 20 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -12,6 +12,8 @@ import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.business.mapper.ArchiveFileMapper;
 import org.springblade.business.service.IArchiveFileService;
 import org.springblade.business.vo.ArchiveFileVO;
+import org.springblade.common.utils.FileUtils;
+import org.springblade.common.vo.FileSize;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.feign.ContractClient;
 import org.springframework.web.bind.annotation.RestController;
@@ -161,4 +163,22 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
         mapList.add(map3);
         return mapList;
     }
+
+    @Override
+    public String getAllArchiveFileSize(Long projectId) {
+        //获取所有文件的url
+        List<ArchiveFile> archiveFileList = fileMapper.getAllArchiveFileUrl(projectId);
+        List<String> list = new ArrayList<>();
+        for (ArchiveFile file : archiveFileList) {
+            if (StringUtils.isNotBlank(file.getFileUrl())){
+                list.add(file.getFileUrl());
+            }
+            if (StringUtils.isNotBlank(file.getPdfFileUrl())){
+                list.add(file.getPdfFileUrl());
+            }
+        }
+        //从阿里云返回文件大小
+        String sizeCount = FileUtils.getOssFileSizeCount(list);
+        return sizeCount;
+    }
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java

@@ -70,4 +70,6 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 	public List<ArchiveFile> getListByProjectId(@Param("projectId") Long projectId);
 
 	List<ArchiveFileVO> getAllArchiveFileByContractType(@Param("projectId")Long projectId);
+
+	List<ArchiveFile> getAllArchiveFileUrl(@Param("projectId")Long projectId);
 }

+ 6 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -281,4 +281,10 @@
         FROM u_archive_file uaf inner join m_archive_tree_contract matc on uaf.node_id =matc.id
         WHERE  uaf.project_id = #{projectId};
     </select>
+    <select id="getAllArchiveFileUrl" resultType="org.springblade.business.entity.ArchiveFile">
+        SELECT uaf.file_url ,uaf.pdf_file_url
+        FROM u_archive_file uaf
+        WHERE  uaf.project_id = #{projectId};
+    </select>
+
 </mapper>