講怎么對接之前先讓我吐槽一下,對接金蝶要安裝金蝶系統,我自己安裝了一次沒安裝成功,金蝶公司的給我安裝了七次也沒有成功,最后發給我一個鏡像,里面有安裝好的金蝶系統才勉強可以,后面的就是這種坑了,對你愛理不理的!對接文檔三張截圖對接去吧!有些參數不清楚問一下結果對方也不清楚,有這么不負責任的公司嗎!我這塊需要java對接結果人給了份C#的代碼尼瑪坑啊!后來人又發了個用CXF生成的!搞了好久!后來問對方,結果對接的資料什么的全是百度出來的!媽的就這樣付什么對接費。全是坑!不扯了!先給大家講一下對接吧!其實連通金蝶不難!
金蝶系統安裝好之后:
1,、在本地安裝一下apache-cxf,我會在我的GitHub上上傳一下大家可以去下載或去CSDN上下載,這個解壓一下然后和JDK一樣配置一下環境變量。
2、到cxf的bin目錄下執行下面的命令:wsdl2java -d D:\\demo -client
http://127.0.0.1/KDWEBSERVICE/VoucherData.asmx?wsdl 我這塊是將生成的代碼放大D盤的demo目錄下, 后面就是你要生成的方法的訪問路徑,路徑的話,只要你安裝好金蝶系統,然后訪問http://127.0.0.1/KDWEBSERVICE/這個路徑就可以查看他的方法了。
3、代碼生成好之后我們可以先去數據庫里面查一下賬套的ID,賬套表:t_ad_kdAccount_gl 憑證表:t_voucher ,代碼中會生成兩個方法一個查詢一個添加,我們可以先試下查詢的方法是否能查詢出來,能查詢出來說明方法是通過的!
部分代碼:
System.out.println("Invoking query...");
int _query_iAisID = 2;//賬套ID
java.lang.String _query_strUser = "Administrator";//用戶名
java.lang.String _query_strPassword = "";
int _query_iPerCount = 10;
java.lang.String _query_strFilter = "";
java.lang.String _query_strTimeStampVal = "";
javax.xml.ws.Holder<java.lang.String> _query_strTimeStamp = new javax.xml.ws.Holder<java.lang.String>(_query_strTimeStampVal);
javax.xml.ws.Holder<com.kingdee.voucherdata.ArrayOfVoucher> _query_queryResult = new javax.xml.ws.Holder<com.kingdee.voucherdata.ArrayOfVoucher>();
javax.xml.ws.Holder<java.lang.String> _query_strMaxTimeStamp = new javax.xml.ws.Holder<java.lang.String>();
javax.xml.ws.Holder<java.lang.String> _query_strError = new javax.xml.ws.Holder<java.lang.String>();
port.query(_query_iAisID, _query_strUser, _query_strPassword, _query_iPerCount, _query_strFilter, _query_strTimeStamp, _query_queryResult, _query_strMaxTimeStamp, _query_strError);
4、這塊我單獨測試是放在生成的項目里面測試的,整合到我們項目里的時候出現了一點問題,jar包沖突結果沖突解決了之后因為項目里面的一個jar包把調用的一個方法給重寫了,項目的jar我又不敢亂刪,然后我想了一個別的方法,我搭建了一個springboot的小項目,然后我自己的項目調用這個項目,這個項目再調用金蝶的項目,完全可以!
代碼和CXF會發布在GitHub上大家可以去下載!