| 
														
															@@ -2,6 +2,8 @@ package nckd.base.helper; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import kd.bos.dataentity.entity.DynamicObject; 
														 | 
														
														 | 
														
															 import kd.bos.dataentity.entity.DynamicObject; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import kd.bos.fileservice.FileServiceFactory; 
														 | 
														
														 | 
														
															 import kd.bos.fileservice.FileServiceFactory; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import kd.bos.logging.Log; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import kd.bos.logging.LogFactory; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import kd.bos.orm.query.QCP; 
														 | 
														
														 | 
														
															 import kd.bos.orm.query.QCP; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import kd.bos.orm.query.QFilter; 
														 | 
														
														 | 
														
															 import kd.bos.orm.query.QFilter; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import kd.bos.servicehelper.AttachmentDto; 
														 | 
														
														 | 
														
															 import kd.bos.servicehelper.AttachmentDto; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -25,6 +27,7 @@ import java.util.Map; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 public class FileSECUtils { 
														 | 
														
														 | 
														
															 public class FileSECUtils { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private static final Log logger = LogFactory.getLog(FileSECUtils.class); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public static InputStream getFileTest() { 
														 | 
														
														 | 
														
															     public static InputStream getFileTest() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -53,8 +56,6 @@ public class FileSECUtils { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return null; 
														 | 
														
														 | 
														
															         return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     /** 
														 | 
														
														 | 
														
															     /** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      * 检查文件是否加密的REST接口调用方法 
														 | 
														
														 | 
														
															      * 检查文件是否加密的REST接口调用方法 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      * 该方法会从配置中获取检查URL,构造请求并发送文件流进行检测。 
														 | 
														
														 | 
														
															      * 该方法会从配置中获取检查URL,构造请求并发送文件流进行检测。 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -63,7 +64,7 @@ public class FileSECUtils { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      *   0: 文件是明文(未加密状态) 
														 | 
														
														 | 
														
															      *   0: 文件是明文(未加密状态) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      *  -1: 发生错误或未找到配置信息 
														 | 
														
														 | 
														
															      *  -1: 发生错误或未找到配置信息 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      */ 
														 | 
														
														 | 
														
															      */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    public static int checkFileIsEncryptionRest(){ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    public static int checkFileIsEncryptionRest(InputStream inputStream){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         Map<String, String> mapentity = CommonHelperUtils.getCommonParams("SEC"); 
														 | 
														
														 | 
														
															         Map<String, String> mapentity = CommonHelperUtils.getCommonParams("SEC"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if(mapentity == null){ 
														 | 
														
														 | 
														
															         if(mapentity == null){ 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -76,8 +77,8 @@ public class FileSECUtils { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             HttpPost post = new HttpPost(url); 
														 | 
														
														 | 
														
															             HttpPost post = new HttpPost(url); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             post.addHeader("method~name", "checkFileIsEncryptionRest");//文件加密 
														 | 
														
														 | 
														
															             post.addHeader("method~name", "checkFileIsEncryptionRest");//文件加密 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            String filePath = "C:\\Users\\Administrator\\Desktop\\test.txt"; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            InputStream inputStream = new FileInputStream(filePath); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            //String filePath = "C:\\Users\\Administrator\\Desktop\\test.txt"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            //InputStream inputStream = new FileInputStream(filePath); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             AbstractHttpEntity entity = new InputStreamEntity(inputStream); 
														 | 
														
														 | 
														
															             AbstractHttpEntity entity = new InputStreamEntity(inputStream); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             post.setEntity(entity); 
														 | 
														
														 | 
														
															             post.setEntity(entity); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -100,14 +101,111 @@ public class FileSECUtils { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } catch (IOException e) { 
														 | 
														
														 | 
														
															         } catch (IOException e) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             e.printStackTrace(); 
														 | 
														
														 | 
														
															             e.printStackTrace(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            System.out.println("ERR content1: " + e.getMessage()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            logger.info("SEC附件 ERR content1: " + e.getMessage()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } catch (Exception e1){ 
														 | 
														
														 | 
														
															         } catch (Exception e1){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             e1.printStackTrace(); 
														 | 
														
														 | 
														
															             e1.printStackTrace(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            System.out.println("ERR content2: " + e1.getMessage()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            logger.info("SEC附件 ERR content2: " + e1.getMessage()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return -1; 
														 | 
														
														 | 
														
															         return -1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    public static InputStream encodeFileForSEC(InputStream inputStream){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        Map<String, String> mapentity = CommonHelperUtils.getCommonParams("SEC"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(mapentity == null){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        String url = mapentity.get("url"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        try { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            String filePath = "C:\\Users\\turbo_i49t4d3\\Downloads\\副本经理人周会数据.xlsx"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            File file = new File(filePath); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            CloseableHttpClient httpclient = null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            HttpPost post = new HttpPost(url); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            post.addHeader("method~name", "fileEncryptionRest"); //文件加密 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            post.addHeader("data~fileOffset", "0"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            post.addHeader("data~counSize", file.length()+""); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            post.addHeader("data~secLevel", "10"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            //String filePath = "C:\\Users\\Administrator\\Desktop\\test.txt"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            InputStream inputStream1 = new FileInputStream(filePath); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            AbstractHttpEntity entity = new InputStreamEntity(inputStream1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            post.setEntity(entity); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            httpclient = buildSSLCloseableHttpClient(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            CloseableHttpResponse response = httpclient.execute(post); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            String result = response.getFirstHeader("data~returnFlag").getValue(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            // 获取响应状态码 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if("0".equals(result)){//1表示秘文 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                InputStream ins = response.getEntity().getContent(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                logger.info("SEC附件加密成功: " + result); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return ins; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            }else{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                logger.debug("SEC附件加密失败: " + result); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } catch (IOException e) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            e.printStackTrace(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            logger.info("SEC附件加密 ERR content1: " + e.getMessage()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } catch (Exception e1){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            e1.printStackTrace(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            logger.info("SEC附件加密 ERR content2: " + e1.getMessage()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    public static InputStream decodeFileForSEC(InputStream inputStream){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        Map<String, String> mapentity = CommonHelperUtils.getCommonParams("SEC"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(mapentity == null){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        String url = mapentity.get("url"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        try { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            String filePath = "C:\\Users\\turbo_i49t4d3\\Downloads\\PMS项目预算编制维度-01.xlsx"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            File file = new File(filePath); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            CloseableHttpClient httpclient = null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            HttpPost post = new HttpPost(url); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            post.addHeader("method~name", "fileDecryptionRest"); //文件解密 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            post.addHeader("data~fileOffset", "0"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            post.addHeader("data~counSize", file.length()+""); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            InputStream inputStream1 = new FileInputStream(filePath); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            AbstractHttpEntity entity = new InputStreamEntity(inputStream1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            post.setEntity(entity); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            httpclient = buildSSLCloseableHttpClient(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            CloseableHttpResponse response = httpclient.execute(post); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            String result = response.getFirstHeader("data~returnFlag").getValue(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            // 获取响应状态码 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if("0".equals(result)){//1表示秘文 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                InputStream ins = response.getEntity().getContent(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                logger.info("SEC附件解密成功: " + result); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return ins; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            }else{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                logger.info("SEC附件解密失败: " + result); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } catch (IOException e) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            e.printStackTrace(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            logger.info("SEC附件解密 ERR content1: " + e.getMessage()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } catch (Exception e1){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            e1.printStackTrace(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            logger.info("SEC附件解密 ERR content2: " + e1.getMessage()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     private static CloseableHttpClient buildSSLCloseableHttpClient() throws Exception { 
														 | 
														
														 | 
														
															     private static CloseableHttpClient buildSSLCloseableHttpClient() throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { 
														 | 
														
														 | 
														
															         SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             @Override 
														 | 
														
														 | 
														
															             @Override 
														 |