Jelajahi Sumber

档案-四性检测
1-1 获取文件数字摘要开发

LHB 5 hari lalu
induk
melakukan
52499a2359

+ 25 - 15
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveExaminingReportImpl.java

@@ -97,9 +97,13 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
     }
 
     public static void main(String[] args) {
+        String s = "https://xinan1.zos.ctyun.cn/blade-oss-chongqing/upload/20250827/ab9cc223fb73cf6267654fd7b63e1a31.pdf";
         //检查文件数据摘要
-        RemoteFileMD5Calculator.MD5Result md5Result = RemoteFileMD5Calculator.calculateRemoteFileMD5("https://xinan1.zos.ctyun.cn/blade-oss-chongqing/upload/20250827/ab9cc223fb73cf6267654fd7b63e1a31.pdf");
+        RemoteFileMD5Calculator.MD5Result md5Result = RemoteFileMD5Calculator.calculateRemoteFileMD5(s);
         System.out.println(md5Result);
+        System.out.println("---------------");
+        RemoteFileMD5Calculator.MD5Result remoteFileMD5FromHeaders = RemoteFileMD5Calculator.getRemoteFileMD5FromHeaders(s);
+        System.out.println(remoteFileMD5FromHeaders.getMd5Hash());
     }
     /**
      * 四性检测
@@ -153,8 +157,11 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
 
         //不合格对象
         List<Map<String, String>> mapList = new ArrayList<>();
-        //电签验证
+        //1-1 电签验证
         int unqualifiedCount = 0;
+        //1-2 一致性检测
+        int consistency = 0;
+
         //3-2 文件是否能够访问
         int fileIsAccess = 0;
         //检测中
@@ -176,11 +183,14 @@ 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();
                     if(vo.getAuthenticityList().contains("1")){
                         //检测项目下所有工序资料PDF签章有效性
                         CertBeanVO cb = eVisaClient.onlineCheckSeal(file.getPdfFileUrl());
-                        if (cb == null) {
+                        //数字摘要判断和电签
+                        if (cb == null || !file.getFileName().equals(md5Hash)) {
                             Map<String, String> map = new HashMap<>();
                             map.put("examiningItem", ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对固化信息有效性检测");
                             map.put("unqualifiedObject", file.getFileName());
@@ -191,8 +201,15 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
                                 ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对固化信息有效性检测", unqualifiedCount, unqualifiedCount == 0 ? "无" : "详见附件", unqualifiedCount == 0 ? 0 : 1));
                     }
                     if(vo.getAuthenticityList().contains("2")){
+                        if (!file.getFileName().equals(md5Hash)) {
+                            Map<String, String> map = new HashMap<>();
+                            map.put("examiningItem", ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对固化信息有效性检测");
+                            map.put("unqualifiedObject", file.getFileName());
+                            mapList.add(map);
+                            consistency++;
+                        }
                         detailService.save(new ArchiveExaminingReportDetail(vo.getProjectId(), id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
-                                ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对电子文件内容一致性检测", 0, "无", 0));
+                                ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对电子文件内容一致性检测", consistency, consistency == 0 ? "无" : "详见附件", consistency == 0 ? 0 : 1));
                     }
                     if(vo.getAuthenticityList().contains("3")){
 
@@ -205,27 +222,20 @@ public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExamining
                                 ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对设定值域的元数据项值域符合度检测", 0, "无", 0));
                     }
                     if(vo.getAuthenticityList().contains("6")){
-
+                        detailService.save(new ArchiveExaminingReportDetail(vo.getProjectId(), id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
+                                ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对元数据项数据重复性检测", 0, "无", 0));
                     }
                     if(vo.getAuthenticityList().contains("7")){
 
                     }
                     if(vo.getAuthenticityList().contains("8")){
                         detailService.save(new ArchiveExaminingReportDetail(vo.getProjectId(), id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
-                                ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对元数据项数据重复性检测", 0, "无", 0));
-
+                                ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对信息包一致性检测", 0, "无", 0));
                     }
                     if(vo.getAuthenticityList().contains("9")){
 
                     }
                     if(vo.getAuthenticityList().contains("10")){
-                        detailService.save(new ArchiveExaminingReportDetail(vo.getProjectId(), id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
-                                ArchiveConstant.ARCHIVE_EXAMINING_STANDARD + "对信息包一致性检测", 0, "无", 0));
-                    }
-                    if(vo.getAuthenticityList().contains("11")){
-
-                    }
-                    if(vo.getAuthenticityList().contains("12")){
 
                     }
                     report.setReportDetailStatus(1);

+ 3 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/RemoteFileMD5Calculator.java

@@ -1,5 +1,7 @@
 package org.springblade.archive.utils;
 
+import lombok.Data;
+
 import java.io.*;
 import java.net.HttpURLConnection;
 import java.net.URL;
@@ -270,6 +272,7 @@ public class RemoteFileMD5Calculator {
     /**
      * MD5计算结果封装
      */
+    @Data
     public static class MD5Result {
         public final String md5Hash;
         public final boolean success;