| 
					
				 | 
			
			
				@@ -1,10 +1,12 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package nc.impl.th; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.BufferedOutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.BufferedReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.ByteArrayOutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.DataOutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.File; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.FileInputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.FileNotFoundException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.InputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.InputStreamReader; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -13,10 +15,25 @@ import java.net.HttpURLConnection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.net.URL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.UUID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.FileOutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.dao.BaseDAO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.dao.DAOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.framework.common.InvocationInfoProxy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.framework.common.NCLocator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.framework.common.RuntimeEnv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.itf.uap.IUAPQueryBS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.jdbc.framework.processor.ArrayListProcessor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.jdbc.framework.processor.BeanListProcessor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.log.NcLog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.ui.pub.beans.MessageDialog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.bd.defdoc.DefdocVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.pub.BusinessException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import nc.bs.framework.common.NCLocator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.pub.filesystem.IFileSystemService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import nc.itf.uap.IVOPersistence; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.codec.digest.DigestUtils; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -28,11 +45,12 @@ import org.apache.commons.httpclient.methods.StringRequestEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.itf.bd.defdoc.IDefdocService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import nc.itf.th.IThOcrService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import nc.pub.toolkits.Toolkits; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import nc.th.redistoken.RedisTokenManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import nc.vo.pub.BusinessException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.pub.filesystem.NCFileNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import nc.vo.th.ocr.OCRInvoiceVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import net.sf.json.JSONString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -54,7 +72,7 @@ public class ThOcrServiceImpl implements IThOcrService{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * 获取token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public String getToken(String appId,Long cid,String secret,String userid) throws HttpException, IOException, BusinessException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		NcLog.info("=======获取token开始======="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//redis中获取用户token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		String userToken = RedisTokenManager.getToken(userid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//token为空 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -64,8 +82,8 @@ public class ThOcrServiceImpl implements IThOcrService{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			//保存到redis,设置失效时间36000秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			RedisTokenManager.setTokenTTL(userid,36000, userToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		NcLog.info("=======token======="+userToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		NcLog.info("=======获取token结束======="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 return userToken; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -75,7 +93,10 @@ public class ThOcrServiceImpl implements IThOcrService{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * 上传发票 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * @throws Exception  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public String uploadInvoice(String url,String token,File file) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public String uploadInvoice(String url,String token,String vdef17,String invoicename) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		NcLog.info("=======上传发票开始======="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		File file=new File(RuntimeEnv.getInstance().getNCHome() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			      +File.separator +"uploadfile" + File.separator+ vdef17+File.separator+invoicename); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		String resmsg=httpFilePost(url,token,file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		String id=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if(null!=resmsg&&resmsg.indexOf("uploading")!=-1){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -101,6 +122,7 @@ public class ThOcrServiceImpl implements IThOcrService{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public String ocrIdentification(String pathUrl, String token,String data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// TODO 自动生成的方法存根 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 NcLog.info("=======发票OCR识别开始======="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 JSONObject json = JSONObject.parseObject(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 JSONObject jsonobject = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          jsonobject.put("image_index", json.getJSONObject("data").getString("id")); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -153,7 +175,7 @@ public class ThOcrServiceImpl implements IThOcrService{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 String token=json.getString("data"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 String status=json.getString("status"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 //保存token返回值到日志文件里 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 NcLog.info("token:"+token); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 if(null!=status){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			 throw new BusinessException(responseMsg); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -189,7 +211,8 @@ public class ThOcrServiceImpl implements IThOcrService{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          stringBuilder.append("Content-Type: " + HttpURLConnection.guessContentTypeFromName(file.getName()) + LINEND); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          stringBuilder.append("Content-Transfer-Encoding: binary"+ LINEND); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          stringBuilder.append(LINEND); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         outStream.write(stringBuilder.toString().getBytes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ //        outStream.write(stringBuilder.toString().getBytes()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         outStream.writeUTF(stringBuilder.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     	 InputStream is = new FileInputStream(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     	 byte[] buffer = new byte[1024]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     	 int len = 0; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -204,7 +227,8 @@ public class ThOcrServiceImpl implements IThOcrService{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          fileInputStream.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          String response = readStream(httpURLConnection.getInputStream()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          outStream.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         httpURLConnection.disconnect();     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         httpURLConnection.disconnect();  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         NcLog.info("发票上传返回json:"+response); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 return response; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -314,7 +338,322 @@ public class ThOcrServiceImpl implements IThOcrService{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	        NcLog.info("发票OCR识别返回json:"+result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 *  发票保存到文件夹里 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 *  vdef17     发票主键 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 *  fileName 发票名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 *  file     选中的发票 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @throws IOException  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			public String saveUploadFile(String vdef17,String fileName,byte[] bytes) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		/*		NcLog.info("=====发票保存开始====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String filepath =  RuntimeEnv.getInstance().getNCHome() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					      +File.separator +"uploadfile" + File.separator+ vdef17; // 文件保存的路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("文件保存的路径:"+filepath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("原文件路径:"+file.getPath()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				File folder = new File(filepath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(!folder.exists() && !folder.isDirectory()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					folder.mkdirs(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String newFileName = filepath + File.separator + fileName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("文件保存新路径:"+newFileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				FileOutputStream outputStream = new FileOutputStream(newFileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("=====FileOutputStream====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				FileInputStream fis = new FileInputStream(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        byte[] buffer = new byte[1024]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        int len; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        NcLog.info("=====读取发票信息开始====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        while ((len = fis.read(buffer)) != -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		            outputStream.write(buffer, 0, len); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        NcLog.info("=====读取发票信息结束====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        outputStream.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        fis.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        NcLog.info("=====发票保存结束=====");*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//	byte[] bs = Base64.decode(file.trim()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("=====发票保存开始====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//	NcLog.info("=====bytes:"+bytes.length+"====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String filepath =  RuntimeEnv.getInstance().getNCHome() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					      +File.separator +"uploadfile" + File.separator+ vdef17; // 文件保存的文件夹 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String newFileName = filepath + File.separator + fileName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("文件保存新路径:"+newFileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String savefilepath=SaveTempFile(filepath,newFileName,bytes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//				Upload(vdef17,savefilepath,newFileName,InvocationInfoProxy.getInstance().getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return savefilepath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * 保存文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @param filepath  文件夹路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @param fileName  文件名路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @param bs  文件流 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @return  返回文件保存的路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @throws Exception  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			public String SaveTempFile(String filepath,String fileName,byte[] bytes) throws Exception  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				FileOutputStream fos = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				BufferedOutputStream bos=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					File folder = new File(filepath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(!folder.exists() && !folder.isDirectory()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						folder.mkdirs(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					fos = new FileOutputStream(fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					bos = new BufferedOutputStream(fos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					bos.write(bytes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} catch (FileNotFoundException e1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// TODO 自动生成的 catch 块 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					e1.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("保存发票FileNotFoundException异常:"+e1.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new Exception("保存发票FileNotFoundException异常:"+e1.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// TODO 自动生成的 catch 块 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("保存发票IOException异常:"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new Exception("保存发票IOException异常:"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (bos != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							bos.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							NcLog.info("关闭bos流异常:"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							throw new Exception("关闭bos流异常:"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (fos != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							fos.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							NcLog.info("关闭fos流异常:"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							throw new Exception("关闭fos流异常:"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				       return filepath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * NC文件上传 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @param parentPath 单据主键pk_jkbx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @param newFile 文件路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @param filename 文件名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @param user_code 创建人 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @return 0表示上传成功,-1表示失败 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @throws BusinessException  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @throws IOException  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			public int Upload(String parentPath, String filepath, String filename,String user_code) throws BusinessException, IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("============防止重复上传相同名称的附件开始============"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				QueryFile(parentPath, filename); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("============防止重复上传相同名称的附件结束============"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				File file = new File(filepath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("文件路径file:"+file.getPath()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Long fileLen = file.length(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String creator = user_code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NCFileNode node = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				InputStream fileinput = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					fileinput = new FileInputStream(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("FileInputStream:"+fileinput); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					IFileSystemService service = (IFileSystemService) NCLocator 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							.getInstance().lookup(IFileSystemService.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("接口service开始:"+service); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					node = service.createNewFileNodeWithStream(parentPath, filename, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							creator, fileinput, fileLen); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("接口service结束:"+node); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} catch (FileNotFoundException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("FileNotFoundException保存失败:"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new FileNotFoundException(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("IOException保存失败:"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new IOException(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} catch (BusinessException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("BusinessException保存失败:"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BusinessException(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						fileinput.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (node == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("-1表示失败:"+"【"+-1+"】"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				NcLog.info("0表示上传成功:"+"【"+0+"】"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * 防止重复上传相同名称的附件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @param parentPath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 *            单据主键 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @param filename 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 *            文件名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @throws BusinessException  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			public void QueryFile(String parentPath, String filename) throws BusinessException  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					String path = parentPath + "/" + filename; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					IUAPQueryBS iuap= (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					String sql = "select filepath from sm_pub_filesystem where filepath = '" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							+ path + "'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					@SuppressWarnings("unchecked") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					List<Object[]> filelist = (List<Object[]>) iuap.executeQuery(sql, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							new ArrayListProcessor()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (filelist != null && filelist.size() > 0) {// 如果有附件,则先删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						IFileSystemService service = (IFileSystemService) NCLocator 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								.getInstance().lookup(IFileSystemService.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						String[] arg = new String[] { path }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						service.deleteNCFileNodes(arg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} catch (DAOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("=====DAOException防止重复上传相同名称的附件====="+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new DAOException(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} catch (BusinessException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					NcLog.info("=====BusinessException防止重复上传相同名称的附件====="+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BusinessException(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * 获取home路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			public String getNCHomePath() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return RuntimeEnv.getInstance().getNCHome(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * 删除home里对应的发票 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			public Boolean deleteFile(String filepath)  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 NcLog.info("=====删除home里对应的发票开始====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//删除home发票文件夹里的对应发票 add by ZTH 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String deletefilepath =  RuntimeEnv.getInstance().getNCHome() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					      +File.separator +"uploadfile" + File.separator+ filepath; // 文件保存的路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 File file = new File(deletefilepath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 Boolean bo= file.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 NcLog.info("=====删除home里对应的发票结束====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 return bo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * 由于删除太慢,改成自定义档案数据停用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * @throws BusinessException  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			public DefdocVO[] enablestateDate(String filepath,String[] filname) throws BusinessException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 NcLog.info("=====改成自定义档案数据停用开始====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 DefdocVO[] deletevos=QryDefdocvoInfo(filname[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 IDefdocService idefservice = NCLocator.getInstance().lookup(IDefdocService.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 DefdocVO defvo =deletevos[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 defvo.setAttributeValue("enablestate", 3);//停用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 DefdocVO[] defdocVOs= idefservice.updateDefdocs(InvocationInfoProxy.getInstance().getGroupId(),deletevos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 NcLog.info("=====改成自定义档案数据停用结束====="); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 return defdocVOs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			private DefdocVO[]  QryDefdocvoInfo(String name){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    	String sql = "select * from  bd_defdoc where  nvl(dr, 0) = 0 and pk_defdoclist=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    			+ "(select pk_defdoclist from bd_defdoclist where code='OCRTHNC' and nvl(dr,0)=0) and memo='" + name + "' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    	ArrayList<Object> arrayvos=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    	try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    		IUAPQueryBS iuap= (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					arrayvos=(ArrayList<Object>) iuap.executeQuery(sql, new BeanListProcessor(DefdocVO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} catch (BusinessException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// TODO 自动生成的 catch 块 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    	if (arrayvos==null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  			return new DefdocVO[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  		}else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  			return arrayvos.toArray(new DefdocVO[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 * 获取"+vdef17+"文件夹下所有发票名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			public List<String> getInvoiceInfo(String vdef17) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String filepath =  RuntimeEnv.getInstance().getNCHome() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					      +File.separator +"uploadfile" + File.separator+ vdef17; // 文件保存的路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				List<String> filewjlis=getFileNames(filepath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return filewjlis; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     * 得到文件名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     * @param path 路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     * @return {@link List}<{@link String}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    private  List<String> getFileNames(String path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        File file = new File(path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        if (!file.exists()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        List<String> fileNames = new ArrayList<String>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        return getFileNames(file, fileNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     * 得到文件名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     * @param file      文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     * @param fileNames 文件名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     * @return {@link List}<{@link String}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    private  List<String> getFileNames(File file, List<String> fileNames) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        File[] files = file.listFiles(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        for (File f : files) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		            if (f.isDirectory()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		                getFileNames(f, fileNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		                fileNames.add(f.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		        return fileNames; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |