PayBillToolUtil.java 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091
  1. package fi.cas.opplugin;
  2. import com.google.gson.Gson;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.bos.json.JSONUtils;
  5. import com.kingdee.bos.json.Kson;
  6. import json.JSON;
  7. import kd.bos.dataentity.entity.DynamicObject;
  8. import kd.bos.dataentity.entity.DynamicObjectCollection;
  9. import kd.bos.entity.EntityMetadataCache;
  10. import kd.bos.logging.Log;
  11. import kd.bos.logging.LogFactory;
  12. import kd.bos.orm.query.QFilter;
  13. import kd.bos.servicehelper.BusinessDataServiceHelper;
  14. import java.io.*;
  15. import java.math.RoundingMode;
  16. import java.net.Socket;
  17. import java.sql.Timestamp;
  18. import java.util.Calendar;
  19. import java.util.Date;
  20. import java.util.HashMap;
  21. import java.util.Map;
  22. import kd.bos.servicehelper.operation.OperationServiceHelper;
  23. import kd.bos.servicehelper.operation.SaveServiceHelper;
  24. import org.json.JSONArray;
  25. import org.w3c.dom.Document;
  26. import org.w3c.dom.Element;
  27. import org.json.JSONObject;
  28. import org.json.XML;
  29. import javax.xml.parsers.DocumentBuilder;
  30. import javax.xml.parsers.DocumentBuilderFactory;
  31. import javax.xml.transform.OutputKeys;
  32. import javax.xml.transform.Transformer;
  33. import javax.xml.transform.TransformerFactory;
  34. import javax.xml.transform.dom.DOMSource;
  35. import javax.xml.transform.stream.StreamResult;
  36. public class PayBillToolUtil {
  37. public static final String ENTITY_NAME = "cas_paybill";
  38. public static final String AGENT_ENTITY_NAME = "cas_agentpaybill";
  39. protected static final Log log = LogFactory.getLog(PayBillToolUtil.class);
  40. public static final String CHANNELCODE_PILIANG="JF";
  41. /**
  42. * 对账接口
  43. * @return
  44. */
  45. public static String payDayCheckRequest(String begindzrq,String enddzrq) {
  46. try {
  47. DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  48. DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  49. Document doc = dBuilder.newDocument();
  50. Element rootElement = doc.createElement("Message");
  51. doc.appendChild(rootElement);
  52. Element body = doc.createElement("Body");
  53. rootElement.appendChild(body);
  54. createElement(doc, body, "transcode", "BTSMO013");
  55. createElement(doc, body, "channelcode", "JF");//发起渠道
  56. createElement(doc, body, "checkstadate", begindzrq);//对账开始日期
  57. createElement(doc, body, "checkenddate", enddzrq);//对账结束日期
  58. TransformerFactory transformerFactory = TransformerFactory.newInstance();
  59. Transformer transformer = transformerFactory.newTransformer();
  60. // 指定编码格式为GBK
  61. transformer.setOutputProperty(OutputKeys.ENCODING, "GBK");
  62. transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  63. DOMSource source = new DOMSource(doc);
  64. StringWriter writer = new StringWriter();
  65. StreamResult result = new StreamResult(writer);
  66. transformer.transform(source, result);
  67. return writer.toString();
  68. } catch (Exception e) {
  69. e.printStackTrace();
  70. return null;
  71. }
  72. }
  73. /**
  74. * 代发单表头支付信息查询
  75. * @param agentpayBillEntity
  76. * @return
  77. */
  78. public static String createSingleAgentPaymentRequest_5(DynamicObject agentpayBillEntity) {
  79. try {
  80. DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  81. DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  82. Document doc = dBuilder.newDocument();
  83. Element rootElement = doc.createElement("Message");
  84. doc.appendChild(rootElement);
  85. //agentPaymentXMLHead(agentpayBillEntity,doc,rootElement,"ACHRMSGQ");
  86. Element body = doc.createElement("BodyInfo");
  87. rootElement.appendChild(body);
  88. agentPaymentXMLBody_Msg(agentpayBillEntity,doc,body);
  89. TransformerFactory transformerFactory = TransformerFactory.newInstance();
  90. Transformer transformer = transformerFactory.newTransformer();
  91. // 指定编码格式为GBK
  92. transformer.setOutputProperty(OutputKeys.ENCODING, "GBK");
  93. transformer.setOutputProperty(OutputKeys.INDENT, "yes");
  94. DOMSource source = new DOMSource(doc);
  95. StringWriter writer = new StringWriter();
  96. StreamResult result = new StreamResult(writer);
  97. transformer.transform(source, result);
  98. return writer.toString();
  99. } catch (Exception e) {
  100. e.printStackTrace();
  101. return null;
  102. }
  103. }
  104. /**
  105. * 代发单付款请求拼接
  106. * @return
  107. */
  108. public static String createSingleAgentPaymentRequest_1(DynamicObject info) {
  109. try {
  110. JSONObject param = new JSONObject();
  111. headJson(param);
  112. JSONObject data = new JSONObject();
  113. //单据状态
  114. if("C".equals(info.get("billstatus"))){
  115. data.put("FBillStatus","12");
  116. }
  117. //EAS付款单据号
  118. String bbh=info.get("nckd_bbh")+"";//版本号
  119. data.put("ERP_INS_ID",info.getPkValue()+"-"+bbh);
  120. //EAS付款单据号
  121. data.put("ERP_PAYNO",info.get("billno")+"-"+bbh);
  122. //录入人
  123. data.put("CREATOR",info.get("creator.name").toString());
  124. //录入时间
  125. data.put("CREATE_TIME",TypeUtils.date2String(new Date(((Timestamp)info.get("modifytime")).getTime()),TypeUtils.DEFAULT_DATE_FORMAT) );
  126. //摘要
  127. data.put("REMARK",info.get("description")+"-"+info.get("billno"));
  128. data.put("IS_TRANSFER","0");
  129. //付款单位--->公司编号
  130. if(info.get("org")!=null){//付款单位--->公司编号
  131. String companyNumber = TypeUtils.nullToString(info.get("org.number"));
  132. data.put("PAY_CLT_NO",companyNumber);
  133. }
  134. DynamicObject payeracctbankEntity = BusinessDataServiceHelper.loadSingleFromCache(info.getDynamicObject("payeracctbank").getPkValue(), "am_accountbank");
  135. String payeracc = payeracctbankEntity.getString("bankaccountnumber");
  136. String payername = payeracctbankEntity.getString("acctname");
  137. //付款方账号 ---> 付款账户基础资料银行账号
  138. data.put("PAY_ACNT_NO",payeracc);
  139. //付款银行 ---> 金融机构行号编码
  140. data.put("PAY_CNAPS",payeracctbankEntity.get("bank.number")+"");
  141. data.put("PAY_DATE",TypeUtils.date2String(new Date(),TypeUtils.DEFAULT_DATE_FORMAT));//付款日期
  142. //付款金额
  143. data.put("AMOUNT",info.getBigDecimal("payamount").setScale(2, RoundingMode.DOWN).toString());
  144. //币别
  145. if("CNY".equals(info.get("currency.number"))){
  146. data.put("CURRENCY","BB01");
  147. }
  148. //对公
  149. if(!info.getBoolean("ispersonpay")){
  150. data.put("IS_PERSON","0");
  151. }else{
  152. data.put("IS_PERSON","1");
  153. }
  154. //加急
  155. if(info.getBoolean("urgentflag")){
  156. data.put("URGENT_FLAG","1");
  157. }else{
  158. data.put("URGENT_FLAG","0");
  159. }
  160. //用途
  161. data.put("PURPOSE","用途:"+info.get("nckd_usage"));
  162. //费用类型
  163. data.put("BUSS_TYPE",JSONObject.NULL);
  164. //付款类型,工资 997
  165. if("997".equals(info.get("paymenttype.number"))){
  166. data.put("PAY_FLAG",2);
  167. }else{
  168. data.put("PAY_FLAG","1");
  169. }
  170. //明细条数
  171. data.put("PAY_NUM",info.getString("count"));
  172. //明细数据
  173. JSONArray OP_ACNT_LIST = new JSONArray();
  174. // 获取分录数据
  175. DynamicObjectCollection entryList = info.getDynamicObjectCollection("entry");
  176. for (int i = 0; i <entryList.size() ; i++) {
  177. DynamicObject entry = entryList.get(i);
  178. JSONObject entrydata = new JSONObject();
  179. //明细id
  180. entrydata.put("ERP_PVT_ID", entry.getPkValue()+"");
  181. //收款方账号
  182. entrydata.put("RECE_ACC_NO", entry.get("payeeacctbank")+"");
  183. //收款方户名
  184. entrydata.put("RECE_ACC_NAME", entry.get("payeename")+"");
  185. //收款行行号
  186. entrydata.put("RECE_CNAPS",entry.get("payeebanknumber")+"");
  187. //付款金额,待补充
  188. entrydata.put("AMOUNT", entry.getBigDecimal("e_amount").setScale(2, RoundingMode.DOWN).toString());
  189. //明细用途
  190. entrydata.put("PURPOSE","用途:"+info.get("nckd_usage"));
  191. OP_ACNT_LIST.put(entrydata);
  192. }
  193. data.put("OP_ACNT_LIST",OP_ACNT_LIST);
  194. //无用字段
  195. data.put("CLT_NO",JSONObject.NULL);
  196. data.put("PAY_ACNT_NAME",JSONObject.NULL);
  197. data.put("PAY_BANK",JSONObject.NULL);
  198. data.put("CASHAMOUNT",JSONObject.NULL);
  199. data.put("BILLAMOUNT",JSONObject.NULL);
  200. data.put("RECE_ACC_NO",JSONObject.NULL);
  201. data.put("RECE_ACC_NAME",JSONObject.NULL);
  202. data.put("RECE_OPBANK_NAME",JSONObject.NULL);
  203. data.put("RECE_OPBANK_NAME",JSONObject.NULL);
  204. data.put("RECE_BANK_NO",JSONObject.NULL);
  205. data.put("RECE_CNAPS",JSONObject.NULL);
  206. data.put("REG_NO",JSONObject.NULL);
  207. data.put("TERM",JSONObject.NULL);
  208. param.put("data",data);
  209. param.put("txDateTime",Utils.getData(new Date(), "yyyyMMddHHmmss"));
  210. param.put("batchNo",TypeUtils.nullToString(info.get("billno"))+"-"+TypeUtils.nullToString(info.get("nckd_bbh"))+"-"+Utils.getData(new Date(), "yyyyMMddHHmmss"));
  211. param.put("code","NSTC-T003");
  212. return param.toString();
  213. } catch (Exception e) {
  214. e.printStackTrace();
  215. return null;
  216. }
  217. }
  218. public static void agentPaymentXMLBody_Msg(DynamicObject agentpayBillEntity,Document doc,Element body) {
  219. DynamicObject payeracctbankEntity = BusinessDataServiceHelper.loadSingleFromCache(agentpayBillEntity.getDynamicObject("payeracctbank").getPkValue(), "am_accountbank");
  220. String payeracc = payeracctbankEntity.getString("bankaccountnumber");
  221. String payername = payeracctbankEntity.getString("acctname");
  222. String jgh = payeracctbankEntity.getString("nckd_jgh");
  223. if("".equals(jgh)){
  224. jgh = "791100";
  225. }
  226. String filename=agentpayBillEntity.getString("nckd_filename");
  227. if("".equals(filename)){
  228. filename = agentpayBillEntity.getString("billNo");
  229. }
  230. filename=jgh+filename;//机构号
  231. createElement(doc, body, "FileName",filename );//文件名称
  232. createElement(doc, body, "FileType","01" );//文件类型
  233. //付款账号
  234. createElement(doc, body, "OutRichNbr", payeracc);//出款户口号
  235. createElement(doc, body, "HrSignNbr", agentpayBillEntity.getString("billno"));//人力流水号
  236. createElement(doc, body, "CcyNbr", "156");//币种,写死人名币
  237. createElement(doc, body, "CcyType", "0");//币种,写死人名币
  238. createElement(doc, body, "TotalNum", agentpayBillEntity.getString("count"));//汇总笔数
  239. createElement(doc, body, "TotalAmt", agentpayBillEntity.getBigDecimal("payamount").setScale(2, RoundingMode.DOWN).toString());//汇总金额
  240. createElement(doc, body, "FeeFlag", "0");//收费标志
  241. createElement(doc, body, "RichNbr", payeracc);
  242. createElement(doc, body, "FundType", "7");
  243. createElement(doc, body, "RichName", payername);
  244. createElement(doc, body, "QryBrnNbr", jgh);
  245. }
  246. public static void agentPaymentXMLBody_Entry(DynamicObject agentpayBillEntity,Document doc,Element body) {
  247. // 获取分录数据
  248. DynamicObjectCollection entryList = agentpayBillEntity.getDynamicObjectCollection("entry");
  249. for (int i = 0; i <entryList.size() ; i++) {
  250. DynamicObject entry = entryList.get(i);
  251. Element achrapaydtl_i = doc.createElement("achrpaydtl_i"); // 每条数据用一个achrapaydtl_i元素包裹
  252. body.appendChild(achrapaydtl_i);
  253. createElement(doc, achrapaydtl_i, "IdenNbr", entry.getString("nckd_zjh"));//证件号
  254. createElement(doc, achrapaydtl_i, "InRichNbr", entry.getString("payeeacctbank"));//收款户口号
  255. createElement(doc, achrapaydtl_i, "PayAmt", entry.getBigDecimal("entryunmatchamount").setScale(2, RoundingMode.DOWN).toString());//支付金额
  256. createElement(doc, achrapaydtl_i, "CurContentSeq", i+1+"");//展示条数
  257. createElement(doc, achrapaydtl_i, "RowCnt", "10000");//展示条数
  258. }
  259. }
  260. public static void agentPaymentXMLBody_Entry_chongfa(DynamicObject agentpayBillEntity,Document doc,Element body) {
  261. // 获取分录数据
  262. DynamicObjectCollection entryList = agentpayBillEntity.getDynamicObjectCollection("entry");
  263. for (int i = 0; i <entryList.size() ; i++) {
  264. DynamicObject entry = entryList.get(i);
  265. if("true".equals(entry.get("e_issuccess")+"")){
  266. continue;
  267. }
  268. Element achrapaydtl_i = doc.createElement("achrpaydtl_i"); // 每条数据用一个achrapaydtl_i元素包裹
  269. body.appendChild(achrapaydtl_i);
  270. createElement(doc, achrapaydtl_i, "IdenNbr", entry.getString("nckd_zjh"));//证件号
  271. createElement(doc, achrapaydtl_i, "InRichNbr", entry.getString("payeeacctbank"));//收款户口号
  272. createElement(doc, achrapaydtl_i, "PayAmt", entry.getBigDecimal("entryunmatchamount").setScale(2, RoundingMode.DOWN).toString());//支付金额
  273. createElement(doc, achrapaydtl_i, "CurContentSeq", i+1+"");//展示条数
  274. createElement(doc, achrapaydtl_i, "RowCnt", "10000");//展示条数
  275. }
  276. }
  277. public static void agentPaymentXMLBody_EntryQuery(DynamicObject agentpayBillEntity,String filename,Document doc,Element body,String CurContentSeq) {
  278. createElement(doc, body, "IdenNbr", "");//证件号
  279. createElement(doc, body, "InRichNbr","");//收款户口号
  280. createElement(doc, body, "PayAmt", "");//支付金额
  281. createElement(doc, body, "QryFileName",filename );//文件名称
  282. if(CurContentSeq==null||"".equals(CurContentSeq)){
  283. }else{
  284. createElement(doc, body, "CurContentSeq",CurContentSeq);//xuhao
  285. }
  286. createElement(doc, body, "RowCnt", "100");//展示条数
  287. createElement(doc, body, "GoHead","Y" );//文件名称
  288. }
  289. /***
  290. * 拼接json对象
  291. */
  292. public static JSONObject getServiceBean_youhua( DynamicObject info) {
  293. JSONObject data = new JSONObject();
  294. //单据状态
  295. if("C".equals(info.get("billstatus"))){
  296. data.put("FBillStatus","12");
  297. }
  298. //录入人
  299. data.put("CREATOR",info.get("creator.name").toString());
  300. //录入时间
  301. data.put("CREATE_TIME",TypeUtils.date2String(new Date(((Timestamp)info.get("modifytime")).getTime()),TypeUtils.DEFAULT_DATE_FORMAT) );
  302. //摘要
  303. data.put("REMARK",info.get("description")+"-"+info.get("billno"));
  304. String entrance = info.get("entrance")+"";//是否资金调度,待补充
  305. if("SYN".equals(entrance)||"SPAN".equals(entrance)){
  306. data.put("IS_TRANSFER","1");
  307. }else{
  308. data.put("IS_TRANSFER","0");
  309. }
  310. data.put("IS_TRANSFER","0");
  311. String bbh=info.get("nckd_bbh")+"";//版本号
  312. data.put("ERP_INS_ID",info.getPkValue()+"-"+bbh);
  313. //EAS付款单据号
  314. data.put("ERP_PAYNO",info.get("billno")+"-"+bbh);
  315. //付款日期
  316. data.put("PAY_DATE",TypeUtils.date2String(new Date(),TypeUtils.DEFAULT_DATE_FORMAT));
  317. //对公
  318. if(!info.getBoolean("ispersonpay")){
  319. data.put("IS_PERSON","0");
  320. }else{
  321. data.put("IS_PERSON","1");
  322. }
  323. //加急
  324. if(info.get("priority")!=null){
  325. if("prior".equals(info.get("priority"))){//优先
  326. data.put("URGENT_FLAG","1");
  327. }else{
  328. data.put("URGENT_FLAG","0");
  329. }
  330. }
  331. data.put("PURPOSE","用途:"+info.get("nckd_usage"));
  332. //费用类型,取分录第一条费用项目编码
  333. DynamicObjectCollection entrycoll = info.getDynamicObjectCollection("entry");
  334. if(entrycoll.size()>0){
  335. if(entrycoll.get(0).get("e_expenseitem.number")==null){
  336. data.put("BUSS_TYPE","");
  337. }else{
  338. data.put("BUSS_TYPE",entrycoll.get(0).get("e_expenseitem.number")+"");
  339. }
  340. }
  341. DynamicObject skyhinfo = BusinessDataServiceHelper.loadSingleFromCache(info.getDynamicObject("payeebank").getPkValue(), "bd_bebank");
  342. //收款方开户行 名称
  343. data.put("RECE_OPBANK_NAME",skyhinfo.get("name").toString());//收款方开户行 名称
  344. //收款方开户行 CNAPS号 ,行号
  345. data.put("RECE_CNAPS",skyhinfo.get("number")+"");
  346. //收款方户名
  347. data.put("RECE_ACC_NAME",info.get("recaccbankname")+"");
  348. //收款方账号
  349. data.put("RECE_ACC_NO",info.get("payeebanknum")+"");
  350. //付款单位--->公司编号
  351. if(info.get("org")!=null){//付款单位--->公司编号
  352. String companyNumber = TypeUtils.nullToString(info.get("org.number"));
  353. data.put("PAY_CLT_NO",companyNumber);
  354. }
  355. //付款账号
  356. DynamicObject payeracctbankEntity = BusinessDataServiceHelper.loadSingle(info.getDynamicObject("payeracctbank").getPkValue(), "am_accountbank");
  357. String payeracc = payeracctbankEntity.getString("bankaccountnumber");
  358. String payername = payeracctbankEntity.getString("acctname");
  359. //付款方账号 ---> 付款账户基础资料银行账号
  360. data.put("PAY_ACNT_NO",payeracc);
  361. //付款银行 ---> 金融机构行号编码,是不是就是金融机构编码
  362. data.put("PAY_CNAPS",payeracctbankEntity.get("bank.number")+"");
  363. data.put("AMOUNT",info.getBigDecimal("actpayamt").setScale(2, RoundingMode.DOWN));
  364. //币别
  365. if("CNY".equals(info.get("currency.number"))){
  366. data.put("CURRENCY","BB01");
  367. }
  368. //无用字段
  369. data.put("CLT_NO",JSONObject.NULL);
  370. data.put("PAY_ACNT_NAME",JSONObject.NULL);
  371. data.put("PAY_BANK",JSONObject.NULL);
  372. data.put("CASHAMOUNT",JSONObject.NULL);
  373. data.put("BILLAMOUNT",JSONObject.NULL);
  374. data.put("RECE_BANK_NO",JSONObject.NULL);
  375. data.put("REG_NO",JSONObject.NULL);
  376. data.put("TERM",JSONObject.NULL);
  377. data.put("PAY_FLAG",JSONObject.NULL);
  378. data.put("PAY_NUM","0");
  379. data.put("OP_ACNT_LIST",JSONObject.NULL);
  380. //应付票据逻辑,不需要付息方式了
  381. // if ("012".equals(info.get("settletype.number"))) { // 012 应付票据(银行承兑汇票)
  382. // DynamicObject payInterest =info.getDynamicObject("payInterest");
  383. // if (payInterest != null) {
  384. // paymentBill.setPAY_INTEREST(payInterest.get("number")+"");
  385. // }
  386. // }
  387. return data;
  388. }
  389. public static String createSinglePaymentRequest(DynamicObject payBillEntity,String JKNO) {
  390. try {
  391. JSONObject param = new JSONObject();
  392. headJson(param);
  393. JSONObject datainfo=getServiceBean_youhua( payBillEntity);
  394. param.put("data",datainfo);
  395. param.put("txDateTime",Utils.getData(new Date(), "yyyyMMddHHmmss"));
  396. param.put("batchNo",TypeUtils.nullToString(payBillEntity.get("billno"))+"-"+TypeUtils.nullToString(payBillEntity.get("nckd_bbh"))+"-"+Utils.getData(new Date(), "yyyyMMddHHmmss"));
  397. param.put("code",JKNO);
  398. String text = param.toString();
  399. return text;
  400. } catch (Exception e) {
  401. e.printStackTrace();
  402. return null;
  403. }
  404. }
  405. public static void headJson(JSONObject param){
  406. param.put("nodeId","client.001");
  407. param.put("channelId","EAS");
  408. param.put("clientId","001");
  409. param.put("clientName","金蝶");
  410. }
  411. private static void createElement(Document doc, Element parent, String name, String value) {
  412. Element element = doc.createElement(name);
  413. element.appendChild(doc.createTextNode(value));
  414. parent.appendChild(element);
  415. }
  416. /**
  417. * 代发单支付
  418. * @params billEntities
  419. * @returns 返回报错信息
  420. *
  421. */
  422. public static String agentpayBillForCBSSync(DynamicObject[] billEntities) {
  423. StringBuffer errMsg = new StringBuffer();
  424. //获取接口链接等信息
  425. DynamicObject jkpzxx = BusinessDataServiceHelper.loadSingle("nckd_jkpzxx",new QFilter[]{new QFilter("number","=","paytoJHX")});
  426. String url = jkpzxx.getString("nckd_servername");
  427. for (DynamicObject dataEntity : billEntities) {
  428. boolean isSuccess = false;//是否成功标识
  429. boolean isZFQZ = true;
  430. Map<String, String> qzObject = new HashMap<>();
  431. DynamicObject payBillEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), AGENT_ENTITY_NAME);
  432. /**
  433. * 判断是否可以走前置支付
  434. * 1、代发单为审核状态
  435. * 2、支付状态为未支付
  436. */
  437. String billNum = payBillEntity.getString("billno");
  438. String billstatusString = payBillEntity.getString("billstatus");
  439. String paystatus = payBillEntity.getString("nckd_paystatus");
  440. int bbh = payBillEntity.getInt("nckd_bbh");
  441. int fkcs = payBillEntity.getInt("nckd_fkcs");
  442. if (!"C".equals(billstatusString)) {
  443. errMsg.append("单据号:").append(billNum).append(",代发单为审核状态,才能提交~\r\n");
  444. isZFQZ = false;
  445. }
  446. if (!"1".equals(paystatus) && !"".equals(paystatus)) {
  447. errMsg.append("单据号:").append(billNum).append(",代发单为未支付,才能提交~\r\n");
  448. isZFQZ = false;
  449. }
  450. if(bbh>=1 && bbh!=fkcs){
  451. errMsg.append("单据号:").append(billNum).append(",代发单未调整,请调整数据,或点击重付~\r\n");
  452. isZFQZ = false;
  453. }
  454. if(payBillEntity.getDynamicObject("payeracctbank")==null) {
  455. errMsg.append("单据号:").append(billNum).append(",付款账户为空~\r\n");
  456. isZFQZ = false;
  457. }
  458. /***
  459. * 审批时校验,如果资金银企行号包含,则提交九恒星,否则不提交。待补充
  460. */
  461. //构建支付数据导入请求xml
  462. String qjjson = createSingleAgentPaymentRequest_1(payBillEntity);
  463. if(qjjson==null){
  464. isZFQZ = false;
  465. errMsg.append("单据号:").append(billNum).append("无法拼出正确的json请求~\r\n");
  466. }
  467. if(!isZFQZ){
  468. continue;
  469. }
  470. log.info("单据号:"+billNum+"传入参数"+qjjson);
  471. if("".equals(url)){
  472. url="http://172.16.150.71:7081/FDLKF_OUTER/webservice/TxServiceGateway";
  473. }
  474. JSONObject cbsReturnJson =httpjhxService(url,qjjson);
  475. log.info("单据号:"+billNum+"返回参数"+cbsReturnJson.toString());
  476. //存入日志表
  477. saveAgentlog(payBillEntity,qjjson,cbsReturnJson.toString(),"1");
  478. if(cbsReturnJson==null){
  479. isSuccess = false;
  480. errMsg.append("单据号:").append(billNum).append(",推送资金系统失败,");
  481. errMsg.append("错误号:").append("XXXXXXX");
  482. errMsg.append(",错误原因:").append("接口无法连通,未获取到返回结果");
  483. errMsg.append("\r\n");
  484. }else if(!"000000".equals(cbsReturnJson.get("resultCode"))){
  485. isSuccess = false;
  486. cbsReturnJson.get("resultCode");
  487. String resultMsg = cbsReturnJson.get("resultMsg")+"";
  488. if(resultMsg.indexOf("单据是非驳回状态")>=0||resultMsg.indexOf("付款指令重复")>=0){//指令重复,说明已经传过去了,改状态为支付中,查询结果
  489. isSuccess = true;
  490. errMsg.append("单据号:").append(billNum).append("付款指令重复,说明已推送到资金系统!");
  491. payBillEntity.set("nckd_fkcs", fkcs+1);//付款次数+1
  492. payBillEntity.set("nckd_sbyy","指令重复,已推送到资金系统");//返回信息
  493. payBillEntity.set("nckd_paystatus",2);//支付中
  494. }else{ //如果不是驳回或重发,失败
  495. errMsg.append("单据号:").append(billNum).append(",推送资金系统失败,");
  496. errMsg.append("错误号:").append(cbsReturnJson.get("resultCode"));
  497. errMsg.append(",错误原因:").append(resultMsg);
  498. errMsg.append("\r\n");
  499. payBillEntity.set("nckd_fkcs", fkcs+1);//付款次数+1
  500. payBillEntity.set("nckd_paystatus",4);//传输失败
  501. payBillEntity.set("nckd_sbyy",cbsReturnJson.get("resultMsg")+"");//错误信息
  502. SaveServiceHelper.update(new DynamicObject[]{payBillEntity});
  503. }
  504. }else if("000000".equals(cbsReturnJson.get("resultCode"))){//已受理,改为支付中
  505. String resultMsg = cbsReturnJson.get("resultMsg")+"";
  506. if("SUCCESS".equals(resultMsg)){
  507. isSuccess = true;
  508. errMsg.append("单据号:").append(billNum).append(",推送资金系统成功!");
  509. payBillEntity.set("nckd_fkcs", fkcs+1);//付款次数+1
  510. payBillEntity.set("nckd_sbyy","传输成功");//返回信息
  511. payBillEntity.set("nckd_paystatus",2);//支付中
  512. }
  513. }
  514. if (isSuccess) {
  515. SaveServiceHelper.update(new DynamicObject[]{payBillEntity});
  516. }
  517. }
  518. return errMsg.toString();
  519. }
  520. /**
  521. * 支付单同步
  522. * @params billEntities
  523. * @returns 返回报错信息
  524. *
  525. */
  526. public static String payBillForCBSSync(DynamicObject[] billEntities) {
  527. StringBuffer errMsg = new StringBuffer();
  528. //获取接口链接等信息
  529. DynamicObject jkpzxx = BusinessDataServiceHelper.loadSingle("nckd_jkpzxx",new QFilter[]{new QFilter("number","=","paytoJHX")});
  530. String url = jkpzxx.get("nckd_servername")+"";
  531. for (DynamicObject dataEntity : billEntities) {
  532. boolean isSuccess = false;
  533. boolean isZFQZ = true;
  534. DynamicObject payBillEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), ENTITY_NAME);
  535. /**
  536. * 判断是否可以走前置支付
  537. * 1、付款单为审核状态
  538. * 2、支付状态为未支付
  539. * 3、版本号>=1时,必须等于付款次数
  540. */
  541. String billNum = payBillEntity.getString("billno");
  542. String billstatusString = payBillEntity.getString("billstatus");
  543. String paystatus = payBillEntity.getString("nckd_paystatus");
  544. int bbh = payBillEntity.getInt("nckd_bbh");
  545. int fkcs = payBillEntity.getInt("nckd_fkcs");
  546. //查询流水,如果存在流水,则不能支付
  547. String billno = payBillEntity.get("billno")+"";
  548. // QFilter orgFilter = new QFilter("nckd_reserve80", "like", "%"+billno+"%");
  549. // DynamicObject fkclinfo = BusinessDataServiceHelper.loadSingle("bei_transdetail","",new QFilter[]{orgFilter});
  550. if (!"C".equals(billstatusString)) {
  551. errMsg.append("单据号:").append(billNum).append(",付款单为审核状态,才能提交~\r\n");
  552. isZFQZ = false;
  553. }
  554. if (!"1".equals(paystatus) && !"".equals(paystatus)) {
  555. errMsg.append("单据号:").append(billNum).append(",付款单为未支付,才能提交~\r\n");
  556. isZFQZ = false;
  557. }
  558. if(bbh>=1 && bbh!=fkcs){
  559. errMsg.append("单据号:").append(billNum).append(",付款单未调整,请调整数据,或点击重付~\r\n");
  560. isZFQZ = false;
  561. }
  562. if(payBillEntity.getDynamicObject("payeracctbank")==null) {
  563. errMsg.append("单据号:").append(billNum).append(",付款账户为空~\r\n");
  564. isZFQZ = false;
  565. }
  566. if(payBillEntity.getDynamicObject("payeebank")==null) {
  567. errMsg.append("单据号:").append(billNum).append(",收款账户为空~\r\n");
  568. isZFQZ = false;
  569. }
  570. //流水判断 待补充
  571. // if(fkclinfo!=null && isZFQZ) {
  572. // errMsg.append("单据号:").append(billNum).append(",已存在支付流水,为防止重复付款,无法提交。请联系运维核查数据\r\n");
  573. // isZFQZ = false;
  574. // }
  575. //是否资金调度逻辑,用新增入口
  576. boolean IS_TRANSFER=false;//判断是否资金调度
  577. String entrance = payBillEntity.get("entrance")+"";
  578. if("SYN".equals(entrance)||"SPAN".equals(entrance)){
  579. IS_TRANSFER = true;
  580. }
  581. // if(IS_TRANSFER){
  582. // isZFQZ = false;
  583. // errMsg.append("单据号:").append(billNum).append(",跨主体调拨或者同名转账~\r\n");
  584. // }
  585. /***
  586. * 根据付款单结算方式,结算方式类似承兑的调用资金的票据接口,结算方式为其他的调用资金的对外付款接口
  587. */
  588. String JKNO="";
  589. String settletype = payBillEntity.get("settletype.number")+"";
  590. if(settletype!=null&&!"".equals(settletype)){
  591. if(settletype.equals("BILL")){//票据
  592. JKNO="NSTC-T002";
  593. }else{
  594. JKNO="NSTC-T001";
  595. }
  596. }else{
  597. isZFQZ = false;
  598. errMsg.append("单据号:").append(billNum).append(",结算方式为空~\r\n");
  599. }
  600. //付款单审批时校验未上线银行基础数据资料表,待补充
  601. /***
  602. * 审批时校验,如果资金银企行号包含,则提交九恒星,否则不提交。
  603. */
  604. String qjjson="";
  605. if(isZFQZ) {
  606. //构建请求对象
  607. qjjson = createSinglePaymentRequest(payBillEntity, JKNO);
  608. if (qjjson == null) {
  609. isZFQZ = false;
  610. errMsg.append("单据号:").append(billNum).append(",无法拼出正确的json请求~\r\n");
  611. }
  612. }
  613. if(!isZFQZ){
  614. continue;
  615. }
  616. //qjjson = "{\"code\":\"NSTC-T001\",\"batchNo\":\"PV-202504-000041-0-20250427106427\",\"nodeId\":\"client.001\",\"channelId\":\"EAS\",\"clientId\":\"001\",\"clientName\":\"金蝶\",\"txDateTime\":\"20250425175615\",\"data\":{\"ERP_INS_ID\":\""+billNum+"-"+bbh+"\",\"PAY_CLT_NO\":\"A004\",\"CLT_NO\":null,\"PAY_ACNT_NO\":\"824581178610001\",\"PAY_ACNT_NAME\":null,\"PAY_BANK\":null,\"PAY_CNAPS\":\"308421022063\",\"PAY_DATE\":\"2025-04-25\",\"AMOUNT\":3234,\"CASHAMOUNT\":null,\"BILLAMOUNT\":null,\"CURRENCY\":\"BB01\",\"BUSS_TYPE\":null,\"RECE_ACC_NO\":\"1\",\"RECE_ACC_NAME\":\"1\",\"RECE_OPBANK_NAME\":\"非税缴款\",\"RECE_BANK_NO\":null,\"RECE_CNAPS\":\"001100000001\",\"REG_NO\":null,\"IS_PERSON\":\"0\",\"URGENT_FLAG\":\"0\",\"PURPOSE\":\"用途\",\"REMARK\":\"缴款码(XXX)\",\"CREATOR\":\"张清全\",\"CREATE_TIME\":\"2025-04-25\",\"ERP_PAYNO\":\"PV-202504-000041-0\",\"TERM\":null,\"IS_TRANSFER\":\"0\",\"PAY_FLAG\":null,\"FBillStatus\":12,\"PAY_NUM\":0,\"OP_ACNT_LIST\":null}}";
  617. log.info("单据号:"+billNum+"传入参数"+qjjson);
  618. if("".equals(url)){
  619. url="http://172.16.150.71:7081/FDLKF_OUTER/webservice/TxServiceGateway";
  620. }
  621. JSONObject cbsReturnJson =httpjhxService(url,qjjson);
  622. log.info("单据号:"+billNum+"返回参数"+cbsReturnJson.toString());
  623. //存入日志表
  624. savelog(payBillEntity,qjjson,cbsReturnJson.toString());
  625. if(cbsReturnJson==null){
  626. isSuccess = false;
  627. errMsg.append("单据号:").append(billNum).append(",推送资金系统失败,");
  628. errMsg.append("错误号:").append("XXXXXXX");
  629. errMsg.append(",错误原因:").append("接口无法连通,未获取到返回结果");
  630. errMsg.append("\r\n");
  631. }else if(!"000000".equals(cbsReturnJson.get("resultCode"))){
  632. isSuccess = false;
  633. cbsReturnJson.get("resultCode");
  634. String resultMsg = cbsReturnJson.get("resultMsg")+"";
  635. if(resultMsg.indexOf("单据是非驳回状态")>=0||resultMsg.indexOf("付款指令重复")>=0){//指令重复,说明已经传过去了,改状态为支付中,查询结果
  636. isSuccess = true;
  637. errMsg.append("单据号:").append(billNum).append("付款指令重复,说明已推送到资金系统!");
  638. payBillEntity.set("nckd_fkcs", fkcs+1);//付款次数+1
  639. payBillEntity.set("nckd_sbyy","指令重复,已推送到资金系统");//返回信息
  640. payBillEntity.set("nckd_paystatus",2);//支付中
  641. }else{ //如果不是驳回或重发,失败
  642. errMsg.append("单据号:").append(billNum).append(",推送资金系统失败,");
  643. errMsg.append("错误号:").append(cbsReturnJson.get("resultCode"));
  644. errMsg.append(",错误原因:").append(resultMsg);
  645. errMsg.append("\r\n");
  646. payBillEntity.set("nckd_fkcs", fkcs+1);//付款次数+1
  647. payBillEntity.set("nckd_paystatus",4);//传输失败
  648. payBillEntity.set("nckd_sbyy",cbsReturnJson.get("resultMsg")+"");//错误信息
  649. SaveServiceHelper.update(new DynamicObject[]{payBillEntity});
  650. }
  651. }else if("000000".equals(cbsReturnJson.get("resultCode"))){//已受理,改为支付中
  652. String resultMsg = cbsReturnJson.get("resultMsg")+"";
  653. if("SUCCESS".equals(resultMsg)){
  654. isSuccess = true;
  655. errMsg.append("单据号:").append(billNum).append(",推送资金系统成功!");
  656. payBillEntity.set("nckd_fkcs", fkcs+1);//付款次数+1
  657. payBillEntity.set("nckd_sbyy","传输成功");//返回信息
  658. payBillEntity.set("nckd_paystatus",2);//支付中
  659. }
  660. }
  661. if (isSuccess) {
  662. SaveServiceHelper.update(new DynamicObject[]{payBillEntity});
  663. }
  664. }
  665. return errMsg.toString();
  666. }
  667. public static void saveAgentlog(DynamicObject payBillEntity,String qqbw,String fhbw,String type){
  668. try {
  669. DynamicObject logInfo = new DynamicObject( EntityMetadataCache.getDataEntityType("nckd_dfjkdyrz"));
  670. String channelserno = payBillEntity.getString("billno");
  671. logInfo.set("number",channelserno);
  672. if("1".equals(type)){
  673. logInfo.set("name",payBillEntity.get("billno")+"支付数据传输日志");
  674. }else if("6".equals(type)){
  675. logInfo.set("name",payBillEntity.get("billno")+"代发单支付信息查询日志");
  676. }
  677. logInfo.set("nckd_jklx",type);
  678. logInfo.set("status","A");
  679. logInfo.set("enable","1");
  680. Calendar currentdate = Calendar.getInstance();
  681. logInfo.set("nckd_redate",currentdate.getTime());
  682. logInfo.set("nckd_billno",payBillEntity.get("billno"));
  683. logInfo.set("nckd_payid",payBillEntity.getPkValue()+"");
  684. logInfo.set("nckd_qqbw_tag",qqbw);
  685. logInfo.set("nckd_fhbw_tag",fhbw);
  686. logInfo.set("nckd_redate",new Date());
  687. logInfo.set("nckd_djlx","2");
  688. OperationServiceHelper.executeOperate("save","nckd_zfjkdyrz",new DynamicObject[]{logInfo});
  689. }catch (Exception e){
  690. log.info("保存日志报错"+e.getMessage());
  691. }
  692. }
  693. public static void savePayDayChecklog(String qqbw,String fhbw){
  694. try {
  695. DynamicObject logInfo = new DynamicObject( EntityMetadataCache.getDataEntityType("nckd_paydaycheck"));
  696. Calendar currentdate = Calendar.getInstance();
  697. String enddzrq = TypeUtils.date2String(currentdate.getTime(),"yyyy-MM-dd HH:mm:ss");
  698. logInfo.set("number",enddzrq);
  699. logInfo.set("name",enddzrq+"付款日结查询日志");
  700. logInfo.set("status","A");
  701. logInfo.set("enable","1");
  702. logInfo.set("nckd_qqbw_tag",qqbw);
  703. logInfo.set("nckd_fhbw_tag",fhbw);
  704. OperationServiceHelper.executeOperate("save","nckd_paydaycheck",new DynamicObject[]{logInfo});
  705. }catch (Exception e){
  706. log.info("保存日志报错"+e.getMessage());
  707. }
  708. }
  709. public static void savelog(DynamicObject payBillEntity,String qqbw,String fhbw){
  710. try {
  711. DynamicObject logInfo = new DynamicObject( EntityMetadataCache.getDataEntityType("nckd_zfjkdyrz"));
  712. String channelserno = payBillEntity.get("billno")+"-"+payBillEntity.getInt("nckd_bbh");
  713. logInfo.set("number",channelserno);
  714. logInfo.set("name",payBillEntity.get("billno")+"付款日志");
  715. logInfo.set("status","A");
  716. logInfo.set("enable","1");
  717. Calendar currentdate = Calendar.getInstance();
  718. logInfo.set("nckd_redate",currentdate.getTime());
  719. logInfo.set("nckd_billno",payBillEntity.get("billno"));
  720. logInfo.set("nckd_payid",payBillEntity.getPkValue()+"");
  721. logInfo.set("nckd_qqbw_tag",qqbw);
  722. logInfo.set("nckd_fhbw_tag",fhbw);
  723. logInfo.set("nckd_redate",new Date());
  724. logInfo.set("nckd_djlx","1");
  725. OperationServiceHelper.executeOperate("save","nckd_zfjkdyrz",new DynamicObject[]{logInfo});
  726. }catch (Exception e){
  727. log.info("保存日志报错"+e.getMessage());
  728. }
  729. }
  730. public static void saveupdatelog(DynamicObject payBillEntity,String qqbw,String fhbw){
  731. try {
  732. DynamicObject logInfo = new DynamicObject( EntityMetadataCache.getDataEntityType("nckd_zfcxjkrz"));
  733. String channelserno = payBillEntity.get("billno")+"-"+payBillEntity.getInt("nckd_bbh");
  734. logInfo.set("number",channelserno);
  735. logInfo.set("name",payBillEntity.get("billno")+"查询状态日志");
  736. logInfo.set("status","A");
  737. logInfo.set("enable","1");
  738. Calendar currentdate = Calendar.getInstance();
  739. logInfo.set("nckd_redate",currentdate.getTime());
  740. logInfo.set("nckd_billno",payBillEntity.get("billno"));
  741. logInfo.set("nckd_payid",payBillEntity.getPkValue()+"");
  742. logInfo.set("nckd_qqbw_tag",qqbw);
  743. logInfo.set("nckd_fhbw_tag",fhbw);
  744. logInfo.set("nckd_redate",new Date());
  745. logInfo.set("nckd_djlx","1");
  746. OperationServiceHelper.executeOperate("save","nckd_zfcxjkrz",new DynamicObject[]{logInfo});
  747. }catch (Exception e){
  748. log.info("保存日志报错"+e.getMessage());
  749. }
  750. }
  751. public static JSONObject httpjhxService(String url,String qjjson){
  752. String result ="";
  753. try {
  754. Date d1 = new Date();
  755. TxServiceGatewayProxy txServiceGatewayProxy=new TxServiceGatewayProxy("",url);
  756. result = txServiceGatewayProxy.send(qjjson);
  757. Date d2 = new Date();
  758. long diffs = Math.abs(d2.getTime()-d1.getTime())/1000;
  759. JSONObject jsonObject=new JSONObject(result);
  760. if(jsonObject!=null){
  761. if("{}".equals(jsonObject.toString())||"".equals(result)){
  762. if(diffs>60){//超时
  763. jsonObject.put("resultCode","JFXXXXC");
  764. jsonObject.put("resultMsg","超时");
  765. }
  766. }
  767. jsonObject.put("请求时间",TypeUtils.date2String(d1,TypeUtils.DEFAULT_TIMESTAMP_FORMAT));
  768. jsonObject.put("返回时间",TypeUtils.date2String(d2,TypeUtils.DEFAULT_TIMESTAMP_FORMAT));
  769. jsonObject.put("响应时长",diffs+"");
  770. }
  771. return jsonObject;
  772. } catch (IOException e) {
  773. e.printStackTrace();
  774. log.info(e.getMessage());
  775. }
  776. return null;
  777. }
  778. public static JSONObject JHXServiceQuery(String url,String bodyjson){
  779. try {
  780. Date d1 = new Date();
  781. TxServiceGatewayProxy txServiceGatewayProxy=new TxServiceGatewayProxy("",url);
  782. String result=txServiceGatewayProxy.send(bodyjson);
  783. Date d2 = new Date();
  784. long diffs = Math.abs(d2.getTime()-d1.getTime())/1000;
  785. JSONObject jsonObject =new JSONObject(result);
  786. if(jsonObject!=null||"".equals(result)||result==null){
  787. if("{}".equals(jsonObject.toString())){
  788. if(diffs>60){//超时
  789. jsonObject.put("resultCode","JFXXXXC");
  790. jsonObject.put("resultMsg","超时");
  791. }
  792. }
  793. jsonObject.put("请求时间",TypeUtils.date2String(d1,TypeUtils.DEFAULT_TIMESTAMP_FORMAT));
  794. jsonObject.put("返回时间",TypeUtils.date2String(d2,TypeUtils.DEFAULT_TIMESTAMP_FORMAT));
  795. jsonObject.put("响应时长",diffs+"");
  796. }
  797. return jsonObject;
  798. } catch (IOException e) {
  799. e.printStackTrace();
  800. log.info(e.getMessage());
  801. }
  802. return null;
  803. }
  804. public static JSONObject socketServiceAgent(String serverName,String port,String xmlData,String transcode){
  805. try {
  806. Date d1 = new Date();
  807. Socket client = new Socket(serverName,TypeUtils.nullToInt(port));
  808. int messageLength = xmlData.getBytes("GBK").length;
  809. String header = String.format("%08d", messageLength);
  810. String fullMessage = header + xmlData;
  811. OutputStream outToServer = client.getOutputStream();
  812. PrintWriter out = new PrintWriter(new OutputStreamWriter(outToServer, "GBK"), true);
  813. out.println(fullMessage);
  814. InputStream inFromServer = client.getInputStream();
  815. BufferedReader in = new BufferedReader(new InputStreamReader(inFromServer, "GBK"));
  816. StringBuilder responseBuilder = new StringBuilder();
  817. String line;
  818. while ((line = in.readLine()) != null) {
  819. responseBuilder.append(line);
  820. }
  821. String responseJson = responseBuilder.toString();
  822. if(responseJson.indexOf("<?xml")>0){
  823. int index = responseJson.indexOf("<?xml");
  824. responseJson = responseJson.substring(index);
  825. }
  826. Date d2 = new Date();
  827. long diffs = Math.abs(d2.getTime()-d1.getTime())/1000;
  828. JSONObject jsonObject = XML.toJSONObject(responseJson);
  829. if(jsonObject!=null){
  830. if("{}".equals(jsonObject.toString())){
  831. if(diffs>50){//超时
  832. JSONObject Message = new JSONObject();
  833. JSONObject HeadInfo = new JSONObject();
  834. HeadInfo.put("errorcode","JFXXXXC");
  835. HeadInfo.put("errormsg","超时");
  836. Message.put("HeadInfo",HeadInfo);
  837. jsonObject.put("Message",Message);
  838. }
  839. }
  840. jsonObject.put("请求时间",TypeUtils.date2String(d1,TypeUtils.DEFAULT_TIMESTAMP_FORMAT));
  841. jsonObject.put("返回时间",TypeUtils.date2String(d2,TypeUtils.DEFAULT_TIMESTAMP_FORMAT));
  842. jsonObject.put("响应时长",diffs+"");
  843. }
  844. client.close();
  845. return jsonObject;
  846. } catch (IOException e) {
  847. e.printStackTrace();
  848. log.info(e.getMessage());
  849. }
  850. return null;
  851. }
  852. }