package com.finstone.gjj.dqd.service.imp; import com.caucho.hessian.client.HessianProxyFactory; import com.fins.html.Application; import com.fins.jdbc.DataSourceRoute; import com.fins.modules.dao.DataBaseHelper; import com.fins.modules.web.mvc.support.ResponseEntity; import com.finstone.app.common.service.LogService; import com.finstone.app.common.util.SignatureUtils; import com.finstone.app.common.util.XmlUtil; import com.finstone.gjj.common.service.imp.ImportSupportService; import com.finstone.gjj.dqd.client.WxsbAxisClient; import com.finstone.gjj.dqd.protocol.wljk.util.AES; import com.finstone.gjj.dqd.service.imp.TransService; import com.finstone.gjj.dqd.support.Constants; import com.finstone.gjj.dqd.support.DqdPropertyConstants; import com.finstone.gjj.dqd.support.ResultStatus; import com.finstone.gjj.dqd.support.ServiceException; import com.finstone.gjj.dqd.support.util.ClassUtilsEx; import com.finstone.gjj.dqd.support.util.ParamUtils; import com.finstone.gjj.dqd.support.util.XmlUtils; import com.finstone.gjj.dqd.support.util.ZipUtils; import com.finstone.jwt.support.JwtConsts.JwtServiceError; import com.tienon.util.FileFieldConv; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Random; import net.sf.ehcache.Cache; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @Service public class ResponseData { private static String DEFAULT_CHARSET = "UTF-8"; @Autowired private TransService transService; @Autowired private WxsbAxisClient wxsbAxisClient; @Autowired private ImportSupportService importSupportService; @Autowired private LogService logService; private Cache retryInvokeCache; protected Log logger = LogFactory.getLog(this.getClass()); private String GetXML_By_DB; private static final String XML_HEAD = ""; public static String getDEFAULT_CHARSET() { return DEFAULT_CHARSET; } public static void setDEFAULT_CHARSET(String default_charset) { DEFAULT_CHARSET = default_charset; } public String getReturnCode(String transCode) { String retransCode = transCode.substring(0, 2) + this.transService.getReturnTranscode(transCode.substring(2)); return retransCode; } public Map getReturnMap(Map m) { String transcode = String.valueOf(m.get("transcode")); String appid = String.valueOf(m.get("appid")); String sGndm = ""; String tranXml = XmlUtils.converter(m); if(transcode.length() == 9) { sGndm = transcode.substring(0, 3); transcode = transcode.substring(3); } ResultStatus resultStatus = null; HashMap r = new HashMap(); Properties setings = Application.getApplicationSettings(); String sXmid = setings.getProperty("zhfw.xmid").toUpperCase(); m.put("xmid", sXmid); long starttime = (new Date()).getTime(); try { DataSourceRoute.putAppId("default"); this.transService.doLog(transcode, tranXml, "", ""); resultStatus = this.transService.tranProcMds(appid, transcode, "" + sXmid + "", sGndm, "1"); } catch (ServiceException var26) { resultStatus.set(var26.getCode(), var26.getMessage()); this.logger.info("getMap业务查询异常>>>>>>>" + var26.getMessage(), var26); r.put("code", "-1"); r.put("msg", "执行方法异常:" + var26.getMessage()); } catch (Exception var27) { var27.printStackTrace(); this.logger.info("getMap业务查询异常>>>>>>>" + var27.getMessage(), var27); r.put("code", "-1"); r.put("msg", "执行方法异常:" + var27.getMessage()); } if(resultStatus.getCode().equals("0001")) { String e = this.transService.getClassName(transcode, appid, sXmid); String[] classArray = e.split("\\."); try { String e1 = this.transService.getSjy(transcode, appid, sXmid); DataSourceRoute.putAppId(e1); this.logger.info("getMap执行反射开始>>>>>>>"); r = (HashMap)ClassUtilsEx.invokeMethod(classArray[0], classArray[1], m); if(r.get("code") != null && r.get("msg") != null) { if(r.get("code").equals("0")) { r.put("code", "0001"); r.put("msg", "成功返回结果!"); } else { r.put("code", r.get("code")); r.put("msg", r.get("msg")); } } else if(r.get("code") == null) { r.put("code", "-1"); r.put("msg", "结果返回异常!"); } else { boolean code = true; try { int code1 = Integer.parseInt(r.get("code").toString()); if(code1 > 0) { r.put("code", r.get("code")); r.put("msg", "成功返回结果!"); } else if(code1 == 0) { r.put("code", "0001"); r.put("msg", "成功返回结果!"); } else if(code1 < 0) { r.put("code", r.get("code")); r.put("msg", "结果返回异常!"); } } catch (Exception var25) { r.put("code", "-1"); r.put("msg", "结果返回异常!"); } } } catch (Exception var28) { this.logger.info("getMap执行反射异常>>>>>>>" + var28.getMessage(), var28); var28.printStackTrace(); r.put("code", "-1"); r.put("msg", "反射执行方法异常:" + var28.getMessage()); } finally { DataSourceRoute.putAppId("default"); } } else { this.logger.info("getMap内部异常:>>>>>>>" + resultStatus.getText()); r.put("code", "-1"); r.put("msg", "内部异常:" + resultStatus.getText()); } r.put("transcode", transcode); r.put("appid", appid); r.put("inxml", tranXml); r.put("blobid", m.get("blobid") == null?"":m.get("blobid").toString()); this.logger.info("写入getReturnMap日志>>>>>>>transcode:" + transcode + "|fwqd:" + appid); try { this.transService.savelogs(sGndm, appid, transcode, Integer.valueOf(r.get("code").toString()).intValue(), String.valueOf(r.get("msg")), m.toString(), starttime); return r; } catch (Exception var24) { throw new ServiceException("9999", "记录操作日志错误,请联系管理员!"); } } public Map doJava(Map p) { String testM = "com.finstone.zhfw.ywjk.service.ImpExpFileService.getTemplate"; String[] classArray = testM.split("\\."); Object r = new HashMap(); try { r = (Map)ClassUtilsEx.invokeMethod("ImpExpFileService", "getTemplate", p); } catch (Exception var6) { var6.printStackTrace(); ((Map)r).put("code", "-1"); ((Map)r).put("msg", "反射执行方法异常:" + var6.getMessage()); } return (Map)r; } public String getOseqno() { StringBuffer sb = new StringBuffer(); SimpleDateFormat tempDate = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String datetime = tempDate.format(new Date()); sb.append(datetime); Random ra = new Random(); for(int j = 0; j < 3; ++j) { sb.append(ra.nextInt(10)); } return sb.toString(); } private String addZero(String str, int len) { StringBuffer s = new StringBuffer(); s.append(str); while(s.length() < len) { s.insert(0, "0"); } return s.toString(); } public String doGenPage(String xml) { boolean tmpStart = false; String limit_start = StringUtils.substringBetween(xml, "", ""); String limit_length = StringUtils.substringBetween(xml, "", ""); if(StringUtils.isNotBlank(limit_start)) { int len = Integer.valueOf(StringUtils.defaultIfEmpty(limit_length, "20")).intValue(); int tmpStart1; if(Integer.valueOf(limit_start).intValue() > 1) { tmpStart1 = (Integer.valueOf(limit_start).intValue() - 1) * len; } else { tmpStart1 = Integer.valueOf(limit_start).intValue() - 1; } xml = StringUtils.replace(xml, "" + limit_start + "", "" + (Integer.valueOf(tmpStart1).intValue() + 1) + ""); xml = StringUtils.replace(xml, "" + limit_length + "", "" + String.valueOf(tmpStart1 + len) + ""); } return xml; } public Cache getRetryInvokeCache() { return this.retryInvokeCache; } public void setRetryInvokeCache(Cache retryInvokeCache) { this.retryInvokeCache = retryInvokeCache; } public void setGetXML_By_DB(String getXML_By_DB) { this.GetXML_By_DB = getXML_By_DB; } public String invoke(String inXml) throws ServiceException, Exception { Properties setings = Application.getApplicationSettings(); String isMutiDS = setings.getProperty("isMutiDS"); return isMutiDS.toUpperCase().equals("TRUE")?ParamUtils.encode(this.doResponseMD(inXml)):ParamUtils.encode(this.doResponse(inXml)); } public Map invokeAndFile(String inXml, Map filemap) throws ServiceException, Exception { return this.doResponseMDAndFile(inXml, filemap); } private String doResponse(String paramXml) throws ServiceException, Exception { String inXml = ""; if(Constants.xmlZip.toUpperCase().equals("TRUE")) { if(Constants.ziptype.toUpperCase().equals("GZIP")) { inXml = ZipUtils.decompress(paramXml); } else { inXml = FileFieldConv.fieldBCDtoASC(paramXml, "GBK"); } } else { inXml = paramXml; } String iniseqno = ""; String bodyxml = inXml.substring(inXml.indexOf(""), inXml.indexOf("")) + ""; String transCode = inXml.substring(inXml.indexOf("") + 11, inXml.indexOf("")); iniseqno = inXml.substring(inXml.indexOf("") + 8, inXml.indexOf("")); String sGndm = inXml.indexOf("") == -1?"":inXml.substring(inXml.indexOf("") + 6, inXml.indexOf("")); String sAppid = inXml.substring(inXml.indexOf("") + 7, inXml.indexOf("")); String headsender = inXml.substring(inXml.indexOf("") + 8, inXml.indexOf("")); String headreceiver = inXml.substring(inXml.indexOf("") + 10, inXml.indexOf("")); ResultStatus resultStatus = new ResultStatus(); String strBody = ""; String retransCode = transCode; if(transCode.equals("090102")) { String isRetryInvoke1 = inXml.substring(inXml.indexOf("") + 8, inXml.indexOf("")); resultStatus = this.invoke_wxsb(isRetryInvoke1); strBody = "" + headreceiver + "" + headsender + "" + transCode + "" + resultStatus.getCode() + "" + resultStatus.getText() + "" + iniseqno + ""; strBody = "\r\n" + strBody; this.logger.info("doCall 业务查询正常结束>>>>>>>"); return strBody; } else { boolean isRetryInvoke = false; try { DataSourceRoute.putAppId("default"); String e = ""; this.transService.doLog(transCode, inXml, "", ""); e = StringUtils.replace(bodyxml, "", ""); e = StringUtils.replace(e, "", ""); e = StringUtils.replace(e, "", ""); e = StringUtils.replace(e, "", ""); e = StringUtils.replace(e, "", ""); Properties setings = Application.getApplicationSettings(); String sXmid = setings.getProperty("zhfw.xmid").toUpperCase(); e = StringUtils.replace(e, "", "" + sXmid + ""); try { resultStatus = this.transService.tranProc(sAppid, transCode, e, sGndm); } catch (ServiceException var24) { resultStatus.set(var24.getCode(), var24.getMessage()); this.logger.info("doCall业务查询(信息返回)异常>>>>>>>" + e + "<<<<<<<,异常信息栈" + var24.getMessage(), var24); } if(resultStatus.getCode().equals("0001")) { resultStatus.setText("成功返回结果!"); strBody = resultStatus.getMsg(); if(strBody != null) { String iseqno = StringUtils.substringBetween(strBody, "", ""); strBody = StringUtils.replace(strBody, "" + iseqno + "", "" + iniseqno + ""); String sender = StringUtils.substringBetween(strBody, "", ""); strBody = StringUtils.replace(strBody, "" + sender + "", "" + headreceiver + ""); String receiver = StringUtils.substringBetween(strBody, "", ""); strBody = StringUtils.replace(strBody, "" + receiver + "", "" + headsender + ""); } strBody = ParamUtils.formatXML(strBody); } else { strBody = "" + headreceiver + "" + headsender + "" + retransCode + "" + resultStatus.getCode() + "" + resultStatus.getText() + "" + iniseqno + ""; strBody = "\r\n" + strBody; } } catch (Exception var25) { throw new ServiceException("9999", "服务端出现异常,请联系开发人员" + var25.getMessage()); } finally { DataSourceRoute.putAppId("default"); this.transService.doLog(transCode, strBody, resultStatus.getCode(), resultStatus.getText()); } this.logger.info("doCall 业务查询正常结束>>>>>>>"); return strBody; } } private String doResponseMD(String paramXml) throws ServiceException, Exception { return this.doResponseMDAndFile(paramXml, (Map)null).get("xml").toString(); } private Map doResponseMDAndFile(String paramXml, Map filemap) throws ServiceException, Exception { String allxml = ""; String iniseqno = ""; Map fwqd_map = null; String bodyxml = paramXml.substring(paramXml.indexOf(""), paramXml.indexOf("")) + ""; String transCode = paramXml.substring(paramXml.indexOf("") + 11, paramXml.indexOf("")); String access_token = StringUtils.substringBetween(paramXml, "", ""); String signature = StringUtils.substringBetween(paramXml, "", ""); String ishttp = StringUtils.substringBetween(paramXml, "", ""); if(transCode != null && !"".equals(transCode)) { String sGndm; if("ZZZZZZ".equals(transCode)) { sGndm = "0000ZZZZZZ0001" + iniseqno + ""; HashMap setings1 = new HashMap(); setings1.put("xml", sGndm); setings1.put("file", new HashMap()); return setings1; } else { sGndm = ""; if(transCode.length() == 9) { sGndm = transCode.substring(0, 3); transCode = transCode.substring(3); } Properties setings = Application.getApplicationSettings(); String sXmid = setings.getProperty("zhfw.xmid").toUpperCase(); if(!this.transService.checkjkdmbf(transCode, bodyxml, sXmid)) { throw new ServiceException("0024", "对不起,服务器繁忙,请先至业务进度查询办理结果!"); } else { String inXml = StringUtils.replace(paramXml, "", ""); iniseqno = inXml.substring(inXml.indexOf("") + 8, inXml.indexOf("")); String sAppid = inXml.substring(inXml.indexOf("") + 7, inXml.indexOf("")); if(sAppid != null && !"".equals(sAppid)) { new ResponseEntity(); String fwqd_yzpt = ""; String fwqd_sfjm = ""; String fwqd_jmmy = ""; ResponseEntity responseEntity; String ip; String headsender; String headreceiver; if(!"1".equals(ishttp)) { fwqd_map = this.transService.getFwqdMapCache(sAppid); if(fwqd_map == null) { throw new ServiceException("0024", "无效的渠道号,请检查!"); } fwqd_yzpt = fwqd_map.get("yzpt") == null?"":fwqd_map.get("yzpt").toString(); fwqd_sfjm = fwqd_map.get("sfjm") == null?"":fwqd_map.get("sfjm").toString(); fwqd_jmmy = fwqd_map.get("jmmy") == null?"":fwqd_map.get("jmmy").toString(); ip = fwqd_map.get("sfqm") == null?"":fwqd_map.get("sfqm").toString(); headsender = fwqd_map.get("secret") == null?"":fwqd_map.get("secret").toString(); if("1".equals(fwqd_yzpt)) { this.logger.info("开始权限验证>>>>>>>"); this.logger.info("开始校验token>>>>>>>"); responseEntity = this.transService.checkToken(fwqd_map, access_token); if(responseEntity.getCode() != 0) { throw new ServiceException(String.valueOf(responseEntity.getCode()), responseEntity.getMsg()); } if(fwqd_sfjm.equals("1")) { this.logger.info("开始解密接收报文body>>>>>>>"); headreceiver = StringUtils.substringBetween(bodyxml, "", ""); try { bodyxml = "" + AES.decrypt(headreceiver, fwqd_jmmy) + ""; } catch (Exception var56) { this.logger.info("解密body失败>>>>>>>"); throw new ServiceException(String.valueOf(JwtServiceError.AES_ERROR_ANALYSIS.getCode()), JwtServiceError.AES_ERROR_ANALYSIS.getMsg()); } } if(!"".equals(headsender) && ip.equals("1")) { this.logger.info("验证签名信息>>>>>>>"); headreceiver = SignatureUtils.getSignature(headsender, StringUtils.substringBetween(bodyxml, "", "")); if(!headreceiver.equals(signature)) { throw new ServiceException(String.valueOf(JwtServiceError.SIGNATURE_ERROR_ANALYSIS.getCode()), JwtServiceError.SIGNATURE_ERROR_ANALYSIS.getMsg()); } } this.logger.info("权限验证结束>>>>>>>"); } } ip = inXml.indexOf("") == -1?"":inXml.substring(inXml.indexOf("") + 4, inXml.indexOf("")); headsender = inXml.indexOf("") == -1?"":inXml.substring(inXml.indexOf("") + 8, inXml.indexOf("")); headreceiver = inXml.indexOf("") == -1?"":inXml.substring(inXml.indexOf("") + 10, inXml.indexOf("")); ResultStatus resultStatus = new ResultStatus(); String strBody = ""; String retransCode = transCode; String transXml = ""; long starttime = (new Date()).getTime(); long wlstarttime = 0L; String wllsid = ""; String sProc = ""; String djmstring; try { DataSourceRoute.putAppId("default"); transXml = this.doGenPage(bodyxml); transXml = StringUtils.replace(transXml, "", ""); transXml = StringUtils.replace(transXml, "", ""); transXml = StringUtils.replace(transXml, "", ""); transXml = StringUtils.replace(transXml, "", ""); transXml = StringUtils.replace(transXml, "", "" + sXmid + ""); resultStatus.setCode("0001"); Map returnMap = DataBaseHelper.queryForMap("select fwdz from zhfw_fwqd where fwqd=?", new Object[]{sAppid}); if(returnMap.get("fwdz") != null && !ip.equals(returnMap.get("fwdz").toString())) { resultStatus.setCode("9999"); resultStatus.setText("非法接入地址!"); } String sender; String receiver; String s_sjjk_jkdm; Object wljklogMap; if(sAppid.indexOf("7") == 0 && !transCode.equals("010111") && !sAppid.equals("73") && !sAppid.equals("76")) { djmstring = StringUtils.substringBetween(transXml, "", ""); sender = StringUtils.substringBetween(transXml, "", ""); receiver = StringUtils.substringBetween(transXml, "", ""); if("".equals(djmstring) || djmstring == null) { djmstring = sender; } if(("".equals(djmstring) || djmstring == null) && receiver != null && !receiver.equals("")) { s_sjjk_jkdm = setings.getProperty("rpc.url"); String debugmap = setings.getProperty("rpc.interface"); HessianProxyFactory ywXml = new HessianProxyFactory(); ywXml.setConnectTimeout((long)Integer.parseInt(Constants.hessianConnectTimeout)); ywXml.setReadTimeout((long)Integer.parseInt(Constants.hessianReadTimeout)); wljklogMap = ywXml.create(Class.forName(debugmap), s_sjjk_jkdm); Class headXML = wljklogMap.getClass(); Method fszzbw = null; fszzbw = headXML.getMethod("querySpcodeBysqbh", new Class[]{Map.class}); HashMap xyysbw = new HashMap(); xyysbw.put("sqbh", receiver); HashMap paramsmap = new HashMap(); paramsmap.put("params", xyysbw); responseEntity = (ResponseEntity)fszzbw.invoke(wljklogMap, new Object[]{paramsmap}); djmstring = responseEntity.getData().size() == 0?"":((Map)responseEntity.getData().get(0)).get("spcode").toString(); } Map s_sjjk_jkdm1 = DataBaseHelper.queryForMap("select count(*) cnt from zhfw_user_qd where fwqd=? and spcodebm =?", new Object[]{sAppid, djmstring}); if(Integer.valueOf(s_sjjk_jkdm1.get("cnt").toString()).intValue() == 0) { resultStatus.setCode("9999"); resultStatus.setText("账号没有签约,请先签约!"); } } if(transCode.equals("******")) { try { Map djmstring1 = DataBaseHelper.queryForMap("select YHFWFZ from zhfw_fwqd where fwqd=?", new Object[]{sAppid}); if(djmstring1.get("YHFWFZ") != null && Double.valueOf(djmstring1.get("YHFWFZ").toString()).doubleValue() > 0.0D) { sender = setings.getProperty("rpc.url"); receiver = setings.getProperty("rpc.interface"); HessianProxyFactory s_sjjk_jkdm2 = new HessianProxyFactory(); s_sjjk_jkdm2.setConnectTimeout((long)Integer.parseInt(Constants.hessianConnectTimeout)); s_sjjk_jkdm2.setReadTimeout((long)Integer.parseInt(Constants.hessianReadTimeout)); Object debugmap1 = s_sjjk_jkdm2.create(Class.forName(receiver), sender); Class ywXml1 = debugmap1.getClass(); wljklogMap = null; Method wljklogMap1 = ywXml1.getMethod("getTotalTqje", new Class[]{Map.class}); HashMap headXML1 = new HashMap(); headXML1.put("fwqd", sAppid); HashMap fszzbw1 = new HashMap(); fszzbw1.put("params", headXML1); responseEntity = (ResponseEntity)wljklogMap1.invoke(debugmap1, new Object[]{fszzbw1}); Double xyysbw1 = Double.valueOf(responseEntity.getData().size() == 0?0.0D:Double.valueOf(((Map)responseEntity.getData().get(0)).get("sumje").toString()).doubleValue()); if(xyysbw1.doubleValue() >= Double.valueOf(djmstring1.get("YHFWFZ").toString()).doubleValue()) { resultStatus.setCode("9999"); resultStatus.setText("您好,今日提取金额已达最大值,请明天再试!"); } } } catch (Exception var55) { ; } } if("0001".equals(resultStatus.getCode())) { try { this.logger.info("进入数据库的XML>>>>>>>" + transXml); resultStatus = this.transService.tranProcMds(sAppid, transCode, transXml, sGndm, "1"); if(!resultStatus.getCode().equals("0001")) { throw new ServiceException(resultStatus.getCode(), resultStatus.getText()); } djmstring = resultStatus.getMsg(); sProc = StringUtils.substringBetween(djmstring, "", ""); sender = StringUtils.substringBetween(djmstring, "", ""); receiver = StringUtils.substringBetween(djmstring, "", ""); s_sjjk_jkdm = StringUtils.substringBetween(djmstring, "", ""); djmstring = djmstring.replace("" + sXmid + "", "" + sXmid + ""); if(!resultStatus.getCode().equals("0001")) { throw new ServiceException(resultStatus.getCode(), resultStatus.getText()); } if(!resultStatus.getCode().equals("0001")) { throw new ServiceException(resultStatus.getCode(), resultStatus.getText()); } Map debugmap2 = this.transService.tranDebugMds(sAppid, transCode, sXmid, djmstring); if(debugmap2.get("flag").toString().equals("1")) { resultStatus = (ResultStatus)debugmap2.get("resultStatus"); } else { this.logger.info(">>>>>>>>>>数据源为:" + sender + "进入相应数据源的XML>>>>>>>" + djmstring); DataSourceRoute.putAppId(sender); djmstring = djmstring.substring(djmstring.indexOf("") > 0?djmstring.indexOf(""):0); Map ywXml2 = XmlUtil.xml2map(inXml, false); Map wljklogMap2 = (Map)ywXml2.get("head"); String headXML2 = XmlUtil.formatXml(XmlUtil.map2xml(wljklogMap2, "head")); headXML2 = headXML2.substring(headXML2.indexOf("")); allxml = "" + headXML2 + djmstring + ""; if("7".equals(sProc)) { wlstarttime = (new Date()).getTime(); resultStatus = this.transService.tranProcMds(sAppid, receiver, allxml, sProc, "2"); String fszzbw2 = resultStatus.getOtherResult() != null && resultStatus.getOtherResult().get("fszzbw") != null?resultStatus.getOtherResult().get("fszzbw").toString():resultStatus.getText(); String xyysbw2 = resultStatus.getOtherResult() != null && resultStatus.getOtherResult().get("xyysbw") != null?resultStatus.getOtherResult().get("xyysbw").toString():resultStatus.getText(); if(resultStatus.getCode().equals("0001")) { wllsid = this.transService.saveWlJklogs(sAppid, sGndm + transCode, allxml, fszzbw2, wlstarttime, xyysbw2, "01"); } else { wllsid = this.transService.saveWlJklogs(sAppid, sGndm + transCode, allxml, fszzbw2, wlstarttime, xyysbw2, "-1"); } } else if("9".equals(sProc)) { resultStatus = this.doCallZhfwJavaYwcl(djmstring, "2", sAppid, receiver, filemap); } else { resultStatus = this.transService.tranProcMds(sAppid, receiver, djmstring, sProc, "2", filemap); } } if(!resultStatus.getCode().equals("0001")) { throw new ServiceException(resultStatus.getCode(), resultStatus.getText()); } String ywXml3 = resultStatus.getMsg(); this.logger.info("业务返回XML>>>>>>>" + ywXml3); this.logger.info("业务返回XML222222>>>>>>>" + resultStatus.getDataset()); DataSourceRoute.putAppId("default"); djmstring = StringUtils.replace(djmstring, "", "" + sXmid + ""); if("7".equals(sProc)) { if(resultStatus.getHeadMap() == null) { HashMap wljklogMap3 = new HashMap(); wljklogMap3.put("zhfw_wljklog_id", wllsid); resultStatus.setHeadMap(wljklogMap3); } else { resultStatus.getHeadMap().put("zhfw_wljklog_id", wllsid); } } resultStatus = this.transService.tranProcMds(sAppid, transCode, djmstring, ywXml3, "3", resultStatus); } catch (ServiceException var57) { resultStatus.set(var57.getCode(), var57.getMessage()); this.logger.info("doCall业务查询(信息返回)异常>>>>>>>" + transXml + "<<<<<<<,异常信息栈" + var57.getMessage(), var57); } } if(resultStatus.getCode().equals("0001")) { resultStatus.setText("成功返回结果!"); strBody = resultStatus.getMsg(); if(strBody != null) { djmstring = StringUtils.substringBetween(strBody, "", ""); strBody = StringUtils.replace(strBody, "" + djmstring + "", "" + iniseqno + ""); sender = StringUtils.substringBetween(strBody, "", ""); strBody = StringUtils.replace(strBody, "" + sender + "", "" + headreceiver + ""); receiver = StringUtils.substringBetween(strBody, "", ""); strBody = StringUtils.replace(strBody, "" + receiver + "", "" + headsender + ""); } strBody = ParamUtils.formatXML(strBody); } else { strBody = "" + headreceiver + "" + headsender + "" + retransCode + "" + resultStatus.getCode() + "" + resultStatus.getText() + "" + iniseqno + ""; strBody = "\r\n" + strBody; } } catch (Exception var58) { var58.printStackTrace(); throw new ServiceException("9999", "服务端出现异常,请联系开发人员" + var58.getMessage()); } finally { DataSourceRoute.putAppId("default"); if("7".equals(sProc)) { if(resultStatus.getCode().equals("0001")) { this.transService.updateWlJklogs(wllsid, strBody, "21"); } else { this.transService.updateWlJklogs(wllsid, strBody, "-1"); } } this.logger.info("写入doResponseMDAndFile日志>>>>>>>transcode:" + transCode + "|fwqd:" + sAppid); try { this.transService.savelogs(sGndm, sAppid, transCode, Integer.valueOf(resultStatus.getCode()).intValue(), resultStatus.getText(), allxml.equals("")?transXml:allxml, starttime); } catch (Exception var54) { throw new ServiceException("9999", "记录操作日志错误,请联系管理员!"); } } this.logger.info("doCall 业务查询正常结束>>>>>>>"); HashMap returnMap1 = new HashMap(); if(fwqd_sfjm.equals("1") && "1".equals(fwqd_yzpt) && !"1".equals(ishttp)) { this.logger.info("开始加密,报文body>>>>>>>" + strBody); djmstring = StringUtils.substringBetween(strBody, "", ""); strBody = strBody.substring(0, strBody.indexOf("")) + "" + AES.encrypt(djmstring, fwqd_jmmy) + strBody.substring(strBody.indexOf("")); this.logger.info("加密结束,返回报文加密body>>>>>>>" + strBody); } returnMap1.put("xml", strBody); returnMap1.put("file", resultStatus.getFileMap()); return returnMap1; } else { throw new ServiceException("0024", "服务渠道不能为空,请检查!"); } } } } else { throw new ServiceException("0024", "接口代码不能为空,请检查!"); } } public ResultStatus checkHmd(String gndm, String jkdm, String appid, String xmid, String xml) { ResultStatus resultstatus = new ResultStatus("0001"); try { String e = StringUtils.replace(xml, "", ""); e = StringUtils.replace(e, "", ""); Map rootmap = XmlUtil.xml2map(xml, false); Map headmap = (Map)rootmap.get("head"); Object paramslist = new ArrayList(); if(!(rootmap.get("list") == null?"":rootmap.get("list").toString().trim()).equals("")) { Map qd_zhlx = (Map)rootmap.get("list"); if(qd_zhlx.get("array") instanceof LinkedHashMap) { ((List)paramslist).add((Map)qd_zhlx.get("array")); } else if(qd_zhlx.get("array") instanceof List) { paramslist = (List)qd_zhlx.get("array"); } } String qd_zhlx1 = headmap.get("qd_zhlx") == null?"":headmap.get("qd_zhlx").toString(); if("2".equals(qd_zhlx1)) { return resultstatus; } else { resultstatus = this.checkHmdImp(headmap, appid); if(resultstatus.getCode().equals("9999")) { return resultstatus; } else { Iterator var13 = ((List)paramslist).iterator(); while(var13.hasNext()) { Map arraymap = (Map)var13.next(); resultstatus = this.checkHmdImp(arraymap, appid); if(resultstatus.getCode().equals("9999")) { return resultstatus; } } return resultstatus; } } } catch (Exception var14) { var14.printStackTrace(); resultstatus.setCode("9999"); resultstatus.setText("检查黑名单失败,请稍候"); return resultstatus; } } private ResultStatus checkHmdImp(Map headmap, String appid) { ResultStatus resultstatus = new ResultStatus("0001"); String sql = ""; String spcode = headmap.get("spcode") == null?"":headmap.get("spcode").toString(); String grzh = headmap.get("grzh") == null?"":headmap.get("grzh").toString(); String spaccount = headmap.get("spaccount") == null?"":headmap.get("spaccount").toString(); String logname = headmap.get("logname") == null?"":headmap.get("logname").toString(); sql = "select count(1) cnt from ZHFW_YHHMD where yhid =? or zjhm = ? "; Map hmdmap1 = DataBaseHelper.getJdbcTemplate().queryForMap(sql, new Object[]{logname, logname}); if(Integer.valueOf(hmdmap1.get("cnt").toString()).intValue() > 0) { resultstatus.setCode("9999"); resultstatus.setText("您已被列入黑名单,请咨询12329!"); return resultstatus; } else { String yhid = ""; String[] zh = new String[]{spcode, grzh, spaccount}; String[] sfzh = zh; int spidno = zh.length; String sfz; for(int zjhm = 0; zjhm < spidno; ++zjhm) { sfz = sfzh[zjhm]; if(!"".equals(sfz)) { yhid = sfz; break; } } if(!"".equals(yhid)) { sql = "select count(1) cnt from ZHFW_YHHMD where yhid =? and fwqd = ?"; Map var20 = DataBaseHelper.getJdbcTemplate().queryForMap(sql, new Object[]{yhid, appid}); if(Integer.valueOf(var20.get("cnt").toString()).intValue() > 0) { resultstatus.setCode("9999"); resultstatus.setText("您已被列入黑名单,请咨询12329!"); return resultstatus; } } sfz = ""; String var21 = headmap.get("zjhm") == null?"":headmap.get("zjhm").toString(); String var22 = headmap.get("spidno") == null?"":headmap.get("spidno").toString(); sfzh = new String[]{var21, var22}; String[] var19 = sfzh; int var18 = sfzh.length; for(int var17 = 0; var17 < var18; ++var17) { String hmdmap = var19[var17]; if(!"".equals(hmdmap)) { sfz = hmdmap; break; } } if(!"".equals(sfz)) { sql = "select count(1) cnt from ZHFW_YHHMD where zjhm =? and fwqd = ?"; Map var23 = DataBaseHelper.getJdbcTemplate().queryForMap(sql, new Object[]{sfz, appid}); if(Integer.valueOf(var23.get("cnt").toString()).intValue() > 0) { resultstatus.setCode("9999"); resultstatus.setText("您已被列入黑名单,请咨询12329!"); return resultstatus; } } return resultstatus; } } public ResultStatus checkywfz(String gndm, String jkdm, String appid, String xmid, String xml) { ResultStatus resultstatus = new ResultStatus("0001"); try { if(jkdm.equals("99010Q")) { return resultstatus; } else { String e = StringUtils.replace(xml, "", ""); e = StringUtils.replace(e, "", ""); Map rootmap = XmlUtil.xml2map(e, false); Map headmap = (Map)rootmap.get("head"); Object paramslist = new ArrayList(); if(!(rootmap.get("list") == null?"":rootmap.get("list").toString().trim()).equals("")) { Map sql = (Map)rootmap.get("list"); if(sql.get("array") instanceof LinkedHashMap) { ((List)paramslist).add((Map)sql.get("array")); } else if(sql.get("array") instanceof List) { paramslist = (List)sql.get("array"); } } String var34 = ""; new ArrayList(); List listmx; if("".equals(gndm)) { var34 = "select * from zhfw_ywfz where projectid = ? and fwqd=? and jkdm=? and status = \'11\'"; listmx = DataBaseHelper.getJdbcTemplate().queryForList(var34, new Object[]{xmid, appid, jkdm}); } else { var34 = "select * from zhfw_ywfz where projectid = ? and fwqd=? and jkdm=? and gndm =? and status =\'11\'"; listmx = DataBaseHelper.getJdbcTemplate().queryForList(var34, new Object[]{xmid, appid, jkdm, gndm}); } if(listmx.size() <= 0) { return resultstatus; } else { Iterator var14 = listmx.iterator(); while(var14.hasNext()) { Map map = (Map)var14.next(); String xesx = map.get("xesx") == null?"":map.get("xesx").toString(); String xexx = map.get("xexx") == null?"":map.get("xexx").toString(); String drxe = map.get("drxe") == null?"":map.get("drxe").toString(); String ywlfz = map.get("ywlfz") == null?"":map.get("ywlfz").toString(); String drfwlfz = map.get("drfwlfz") == null?"":map.get("drfwlfz").toString(); String drfwkzfw = map.get("drfwkzfw") == null?"":map.get("drfwkzfw").toString(); String nodename = map.get("nodename") == null?"":map.get("nodename").toString(); String nodeValue; String arraymap; if(!drfwlfz.equals("")) { nodeValue = ""; arraymap = StringUtils.substringBetween(xml, "", "") == null?"":StringUtils.substringBetween(xml, "", ""); String retrunmap = StringUtils.substringBetween(xml, "", "") == null?"":StringUtils.substringBetween(xml, "", ""); String nodeValue1 = StringUtils.substringBetween(xml, "", "") == null?"":StringUtils.substringBetween(xml, "", ""); String list = StringUtils.substringBetween(xml, "", "") == null?"":StringUtils.substringBetween(xml, "", ""); String accmap = StringUtils.substringBetween(xml, "", "") == null?"":StringUtils.substringBetween(xml, "", ""); nodeValue = StringUtils.substringBetween(xml, "", "") == null?"":StringUtils.substringBetween(xml, "", ""); String[] listr = new String[]{arraymap, retrunmap, accmap, nodeValue1, list, nodeValue}; String[] openid = listr; int cntmap11 = listr.length; for(int cntmap1 = 0; cntmap1 < cntmap11; ++cntmap1) { String acclist = openid[cntmap1]; if(!"".equals(acclist)) { nodeValue = acclist; break; } } if(!"".equals(nodeValue)) { int var43 = 0; Map var44; if("01".equals(drfwkzfw)) { var34 = "select count(1) cnt from zhfw_oplog where jkdm=? and userid =? and qrrq = to_char(sysdate,\'yyyymmdd\') "; var44 = DataBaseHelper.getJdbcTemplate().queryForMap(var34, new Object[]{jkdm, nodeValue}); var43 = Integer.valueOf(var44.get("cnt").toString()).intValue(); var34 = "select openid openid from zhfw_user where yhid = ?"; List var45 = DataBaseHelper.getJdbcTemplate().queryForList(var34, new Object[]{nodeValue}); if(var45.size() > 0) { String var49 = ((Map)var45.get(0)).get("openid") == null?"":((Map)var45.get(0)).get("openid").toString(); if(!"".equals(var49)) { var34 = "select count(1) cnt from zhfw_oplog where jkdm=? and userid =? and fwqd = \'04\' and qrrq = to_char(sysdate,\'yyyymmdd\')"; var44 = DataBaseHelper.getJdbcTemplate().queryForMap(var34, new Object[]{jkdm, var49}); var43 += Integer.valueOf(var44.get("cnt").toString()).intValue(); } } } if("02".equals(drfwkzfw)) { if("04".equals(appid)) { String var47 = StringUtils.substringBetween(xml, "", "") == null?"":StringUtils.substringBetween(xml, "", ""); if(!"".equals(var47)) { var34 = "select count(1) cnt from zhfw_oplog where jkdm=? and userid =? and fwqd = ? and qrrq = to_char(sysdate,\'yyyymmdd\') "; Map var48 = DataBaseHelper.getJdbcTemplate().queryForMap(var34, new Object[]{jkdm, var47, appid}); var43 = Integer.valueOf(var48.get("cnt").toString()).intValue(); } } else { var34 = "select count(1) cnt from zhfw_oplog where jkdm=? and userid =? and fwqd = ? and qrrq = to_char(sysdate,\'yyyymmdd\') "; var44 = DataBaseHelper.getJdbcTemplate().queryForMap(var34, new Object[]{jkdm, nodeValue, appid}); var43 = Integer.valueOf(var44.get("cnt").toString()).intValue(); } } if(var43 >= Integer.valueOf(drfwlfz).intValue()) { resultstatus.setCode("9999"); resultstatus.setText("该接口访问已经超过当日访问限制,请明日再试!"); return resultstatus; } } } if(!ywlfz.equals("") || !drxe.equals("")) { nodeValue = " 00 00 00 Y0199010Q20161209133350 201612091333500303 " + gndm + "" + jkdm + " "; arraymap = this.invoke(nodeValue); Map var37 = XmlUtil.xml2map(arraymap, false); Map var39 = (Map)var37.get("body"); if(var39.get("list") == null || "".equals(var39.get("list"))) { resultstatus.setCode("9999"); resultstatus.setText("该功能已配置单日交易限额或业务量阈值,但未设置业务系统检查接口,请联系管理员!"); return resultstatus; } Map var41 = (Map)var39.get("list"); Object var42 = new HashMap(); if(var41.get("acc_info") instanceof LinkedHashMap) { new ArrayList(); var42 = (Map)var41.get("acc_info"); } else if(var41.get("acc_info") instanceof List) { new ArrayList(); List var46 = (List)var41.get("acc_info"); var42 = (Map)var46.get(0); } this.logger.info("ywlfz================" + ywlfz + "====" + ((Map)var42).get("ywzl").toString()); if(!ywlfz.equals("") && Double.valueOf(((Map)var42).get("ywzl").toString()).doubleValue() > Double.valueOf(ywlfz).doubleValue()) { resultstatus.setCode("9999"); resultstatus.setText("已超过当日业务量阀值【" + Double.valueOf(ywlfz) + "】,请明天再试!"); return resultstatus; } this.logger.info("drxe================" + drxe + "====" + ((Map)var42).get("drxe").toString()); if(!drxe.equals("") && Double.valueOf(((Map)var42).get("drxe").toString()).doubleValue() > Double.valueOf(drxe).doubleValue()) { resultstatus.setCode("9999"); resultstatus.setText("已超过当日业务限额【" + Double.valueOf(drxe) + "】,请明天再试!"); return resultstatus; } } this.logger.info("xesx================" + xesx); this.logger.info("xexx================" + xexx); if(!"".equals(xesx) || !"".equals(xexx)) { this.logger.info("nodename================" + nodename + "=====" + headmap.get(nodename)); Object var35 = headmap.get(nodename); if(!"".equals(xexx) && var35 != null && Double.valueOf(var35.toString().replaceAll(",", "")).doubleValue() < Double.valueOf(xexx).doubleValue()) { resultstatus.setCode("9999"); resultstatus.setText("输入金额低于金额下限【" + Double.valueOf(xexx) + "】"); return resultstatus; } if(!"".equals(xesx) && var35 != null && Double.valueOf(var35.toString().replaceAll(",", "")).doubleValue() > Double.valueOf(xesx).doubleValue()) { resultstatus.setCode("9999"); resultstatus.setText("输入金额超过金额上限【" + Double.valueOf(xesx) + "】"); return resultstatus; } Iterator var38 = ((List)paramslist).iterator(); while(var38.hasNext()) { Map var36 = (Map)var38.next(); Object var40 = var36.get(nodename); if(!"".equals(xexx) && var40 != null && Double.valueOf(var40.toString().replaceAll(",", "")).doubleValue() < Double.valueOf(xexx).doubleValue()) { resultstatus.setCode("9999"); resultstatus.setText("输入金额低于金额下限【" + Double.valueOf(xexx) + "】"); map.put("resultstatus", resultstatus); return resultstatus; } if(!"".equals(xesx) && var40 != null && Double.valueOf(var40.toString().replaceAll(",", "")).doubleValue() > Double.valueOf(xesx).doubleValue()) { resultstatus.setCode("9999"); resultstatus.setText("输入金额超过金额上限【" + Double.valueOf(xesx) + "】"); map.put("resultstatus", resultstatus); return resultstatus; } } } } return resultstatus; } } } catch (Exception var33) { var33.printStackTrace(); resultstatus.setCode("9999"); resultstatus.setText("系统异常,请稍后!"); return resultstatus; } } public ResultStatus doCallZhfwJavaYwcl(String tranxml, String sproc, String appid, String trancode, Map filemap) { new HashMap(); new HashMap(); new ResponseEntity(); String method = ""; String sjy = ""; ResultStatus resultstatus = new ResultStatus("0", ""); try { Map map = XmlUtil.xml2map(tranxml, false); Map headmap = (Map)map.get("head"); if(headmap.get("sjjk_dyjk") == null) { method = map.get("sjjk_dyjk").toString(); } else { method = headmap.get("sjjk_dyjk").toString(); } if(headmap.get("sjjk_dyjk") == null) { sjy = map.get("sjjk_sjy").toString(); } else { sjy = headmap.get("sjjk_sjy").toString(); } String[] e = method.split("\\."); Object paramslist = new ArrayList(); if(!(map.get("list") == null?"":map.get("list").toString()).equals("")) { Map paramsmap = (Map)map.get("list"); if(paramsmap.get("array") instanceof LinkedHashMap) { ((List)paramslist).add((Map)paramsmap.get("array")); } else if(paramsmap.get("array") instanceof List) { paramslist = (List)paramsmap.get("array"); } } HashMap paramsmap1 = new HashMap(); paramsmap1.put("params", headmap); paramsmap1.put("paramslist", paramslist); paramsmap1.put("sjy", sjy); if(filemap != null) { paramsmap1.putAll(filemap); } if(headmap.get("transcode") != null) { paramsmap1.put("transcode", headmap.get("transcode").toString()); headmap.remove("transcode"); } ResponseEntity responseEntity = (ResponseEntity)ClassUtilsEx.invokeMethod(e[0], e[1], paramsmap1); resultstatus.setDataset(responseEntity.getData()); resultstatus.setMsg(responseEntity.getData() == null?"":(responseEntity.getTotal() == 0?String.valueOf(responseEntity.getData().size()):String.valueOf(responseEntity.getTotal()))); resultstatus.setText(responseEntity.getMsg()); int retcode = responseEntity.getCode(); if(retcode > -1) { resultstatus.setCode("0001"); } else { resultstatus.setCode("9999"); } resultstatus.setHeadMap(responseEntity.getHeadMap()); resultstatus.setFileMap(responseEntity.getFileMap()); } catch (Exception var16) { var16.printStackTrace(); resultstatus.setCode("-1"); resultstatus.setText("查询异常,请稍后再试!"); } return resultstatus; } private ResultStatus invoke_wxsb(String paramXml) { this.logger.info("发送社保查询报文>>>>报文内容---" + paramXml); String taskResult = null; String sMethedName = null; ResultStatus resultStatus = new ResultStatus(); sMethedName = "getInfoForGJJ"; this.wxsbAxisClient.setEndpoint(DqdPropertyConstants.getProperty("wxsb_url", "null")); this.wxsbAxisClient.setOperationName(sMethedName); StringBuffer sb = new StringBuffer(); sb.append(""); taskResult = this.wxsbAxisClient.invoke_wxsb(paramXml); this.logger.info("无锡社保查询报文收到返回信息>>>>>>" + taskResult); String responseXml = StringUtils.substringBetween(taskResult, "", ""); responseXml = "" + responseXml + ""; if(responseXml.indexOf("errmsg") > 0 && responseXml.indexOf("code") > 0) { resultStatus.setCode("9001"); resultStatus.setText(""); } else { Document retCount = XmlUtils.fromXML(taskResult, false); NodeList sRyzt = retCount.getElementsByTagName("row"); if(sRyzt.getLength() > 1) { resultStatus.setCode("9002"); resultStatus.setText(""); } else if(sRyzt.getLength() < 1) { resultStatus.setCode("9001"); resultStatus.setText("没有找到记录"); } else { Element element = (Element)sRyzt.item(0); String sRyzt1 = element.getAttribute("aac008"); if(sRyzt1.equals("退休")) { resultStatus.setCode("0001"); resultStatus.setText(sRyzt1); } else { resultStatus.setCode("9999"); resultStatus.setText(sRyzt1); } } } if(!resultStatus.equals("0001") && !resultStatus.equals("9999") && !resultStatus.equals("9002")) { this.wxsbAxisClient.setEndpoint(DqdPropertyConstants.getProperty("yxsb_url", "null")); sMethedName = "GETCBZGXX"; this.wxsbAxisClient.setOperationName(sMethedName); taskResult = this.wxsbAxisClient.invoke_yxsb(paramXml); this.logger.info("宜兴社保查询报文收到返回信息>>>>>>" + taskResult); responseXml = StringUtils.substringBetween(taskResult, "", ""); responseXml = "" + responseXml + ""; if(responseXml.indexOf("errmsg") > 0 && responseXml.indexOf("code") > 0) { resultStatus.setCode("9001"); resultStatus.setText(StringUtils.substringBetween(taskResult, "", "")); } else { int retCount1 = Integer.valueOf(StringUtils.substringBetween(taskResult, "", "")).intValue(); if(retCount1 > 1) { resultStatus.setCode("9002"); resultStatus.setText(""); } else if(retCount1 < 1) { resultStatus.setCode("9001"); resultStatus.setText("没有找到记录"); } else { String sRyzt2 = StringUtils.substringBetween(taskResult, "", ""); if(sRyzt2.equals("退休")) { resultStatus.setCode("0001"); resultStatus.setText(sRyzt2); } else { resultStatus.setCode("9999"); resultStatus.setText(sRyzt2); } } } return resultStatus; } else { return resultStatus; } } }