| 
					
				 | 
			
			
				@@ -0,0 +1,155 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package nc.pub.filesystem.newui; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.awt.event.ActionEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.File; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.AbstractAction; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.swing.Action; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.httpclient.HttpException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.framework.common.NCLocator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.framework.common.RuntimeEnv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.logging.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.funcnode.ui.action.AbstractNCAction; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.itf.pu.service.IInvoiceOCRMaintain; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.itf.th.IThOcrService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.ui.ml.NCLangRes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.ui.pub.beans.MessageDialog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.ui.pub.bill.BillCardPanel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.pub.BusinessException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class ThOCRAction extends AbstractNCAction{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * OCR识别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static final long serialVersionUID = -5178574564280732585L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static final String upurl="https://up.mypiaojia.com/api/invoiceApi/file/uploadFileSpilit"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static final String inverurl="https://api.mypiaojia.com/api/invoiceApi/invoice/ocr"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static final String appId="773676128773832704"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static final Long   cid=773676128725336064l; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static final String secret="6726dea9883f4f6bb2725ac8750d01de"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private static final String useid="2108"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private ThFileContentPanel parentpanel ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public ThOCRAction(ThFileContentPanel para){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		parentpanel = para; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.putValue(AbstractAction.NAME,"OCR识别"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.putValue(Action.SHORT_DESCRIPTION, "OCR识别"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void actionPerformed(ActionEvent actionevent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		MessageDialog.showHintDlg(parentpanel, "提示","OCR识别!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vdef17 =(String) parentpanel.editor_.getBillCardPanel().getHeadItem("vdef17").getValueObject();//附件id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String filepath =  RuntimeEnv.getInstance().getNCHome() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			      +File.separator +"uploadfile" + File.separator+ vdef17; // 文件保存的路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<String> filewjlis=getFileNames(filepath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		IThOcrService  ocrservice=(IThOcrService) NCLocator.getInstance().lookup(IThOcrService.class.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//		IInvoiceOCRMaintain iInvoiceOCRMaintain = (IInvoiceOCRMaintain) NCLocator.getInstance().lookup(IInvoiceOCRMaintain.class.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//获取token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String token=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 token=ocrservice.getToken(appId,cid,secret,useid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (HttpException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//		Logger.error(e.getMessage(), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			MessageDialog.showErrorDlg(parentpanel, NCLangRes.getInstance().getStrByID("pc", "FileManageUI-000000")/*错误*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					,"获取token:\n"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			MessageDialog.showErrorDlg(parentpanel, NCLangRes.getInstance().getStrByID("pc", "FileManageUI-000000")/*错误*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					,"获取token:\n"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (BusinessException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			MessageDialog.showErrorDlg(parentpanel, NCLangRes.getInstance().getStrByID("pc", "FileManageUI-000000")/*错误*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					,"获取token:\n"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		MessageDialog.showHintDlg(parentpanel, "提示","token:"+token); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StringBuffer sb=new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StringBuffer sb2=new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StringBuffer sb3=new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for(int i=0;i<filewjlis.size();i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			File file=new File(filepath+File.separator+filewjlis.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//发票上传 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String idjson=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				idjson=ocrservice.uploadInvoice(upurl,token, file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				MessageDialog.showErrorDlg(parentpanel, NCLangRes.getInstance().getStrByID("pc", "FileManageUI-000000")/*错误*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						,"发票上传:\n"+e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sb.append(idjson).append("\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//发票识别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String ocrinvoicejson=ocrservice.ocrIdentification(inverurl, token,idjson); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sb2.append(ocrinvoicejson).append("\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//			JSONObject scanjb = iInvoiceOCRMaintain.startInvoiceOCR(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//			sb3.append(scanjb.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//识别数据保存数据库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		MessageDialog.showHintDlg(parentpanel, "提示","发票上传json:\n"+sb.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		MessageDialog.showHintDlg(parentpanel, "提示","ocr识别json:\n"+sb2.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//	MessageDialog.showHintDlg(parentpanel, "提示","ocr识别YY:\n"+sb3.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 得到文件名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |