Przeglądaj źródła

档案-四性检测
3-1 文件类型判断

LHB 4 dni temu
rodzic
commit
29714c3426

+ 19 - 5
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveExaminingReportImpl.java

@@ -21,6 +21,7 @@ import org.springblade.archive.service.IArchiveExaminingReportDetailService;
 import org.springblade.archive.service.IArchiveExaminingReportService;
 import org.springblade.archive.socket.WebSocketServer;
 import org.springblade.archive.utils.FileUtils;
+import org.springblade.archive.utils.RemoteFileExtension;
 import org.springblade.archive.utils.RemoteFileMD5Calculator;
 import org.springblade.archive.vo.ArchiveExaminingSocketVo;
 import org.springblade.archive.vo.ArchiveExaminingVo;
@@ -41,7 +42,6 @@ import org.springframework.stereotype.Service;
 
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.security.NoSuchAlgorithmException;
 import java.util.*;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -154,7 +154,12 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
             //根据组件id查询文件数据
             files = archiveFileClient.getAllArchiveFileByArchiveIds(strings);
         }
-
+        //文件类型范围
+        List<String> strings = new ArrayList<>();
+        strings.add("pdf");
+        strings.add("dwg");
+        strings.add("jpg");
+        strings.add("png");
         //不合格对象
         List<Map<String, String>> mapList = new ArrayList<>();
         //1-1 电签验证
@@ -162,6 +167,8 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
         //1-2 一致性检测
         int consistency = 0;
 
+        //3-1 文件格式
+        int fileType = 0;
         //3-2 文件是否能够访问
         int fileIsAccess = 0;
         //检测中
@@ -181,8 +188,6 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
                 }
                 //真实性
                 if (StringUtils.isNotBlank(vo.getAuthenticity()) && "1".equals(vo.getAuthenticity())) {
-                    //获取pdf
-                    //加密pdf
                     //获取文件数字摘要
                     RemoteFileMD5Calculator.MD5Result remoteFileMD5FromHeaders = RemoteFileMD5Calculator.getRemoteFileMD5FromHeaders(file.getPdfFileUrl());
                     String md5Hash = remoteFileMD5FromHeaders.getMd5Hash();
@@ -277,8 +282,17 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
                 if (StringUtils.isNotBlank(vo.getUsability()) && "1".equals(vo.getUsability())) {
                     Thread.sleep(5000L);
                     if(vo.getAuthenticityList().contains("1")){
+                        //获取文件后缀,后缀为
+                        String fileExtensionFromUrl = RemoteFileExtension.getFileExtensionFromUrl(file.getPdfFileUrl());
+                        if(StringUtils.isEmpty(fileExtensionFromUrl) || !strings.contains(fileExtensionFromUrl)){
+                            Map<String, String> map = new HashMap<>();
+                            map.put("examiningItem", ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对电子文件格式检测");
+                            map.put("unqualifiedObject", file.getFileName());
+                            mapList.add(map);
+                            fileType++;
+                        }
                         detailService.save(new ArchiveExaminingReportDetail(vo.getProjectId(), id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
-                                ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对电子文件格式检测", 0, "无", 0));
+                                ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对电子文件格式检测", fileType, fileType == 0 ? "无" : "详见附件", fileType == 0 ? 0 : 1));
                     }
                     //3-2 放在最开始
                     if(vo.getAuthenticityList().contains("3")){

+ 33 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/RemoteFileExtension.java

@@ -0,0 +1,33 @@
+package org.springblade.archive.utils;
+
+import java.net.URL;
+import java.nio.file.Paths;
+
+/**
+ * @author LHB
+ */
+public class RemoteFileExtension {
+    public static String getFileExtensionFromUrl(String fileUrl) {
+        try {
+            URL url = new URL(fileUrl);
+            String path = url.getPath();
+
+            // 处理可能包含查询参数的情况
+            int questionMarkIndex = path.indexOf('?');
+            if (questionMarkIndex != -1) {
+                path = path.substring(0, questionMarkIndex);
+            }
+
+            // 使用 Paths 获取文件名并提取后缀
+            String fileName = Paths.get(path).getFileName().toString();
+
+            int lastDotIndex = fileName.lastIndexOf('.');
+            if (lastDotIndex > 0 && lastDotIndex < fileName.length() - 1) {
+                return fileName.substring(lastDotIndex + 1).toLowerCase();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+}