1 工具类 发送接口传值
1.1 发送接口工具类:(BEINS)
package com.xxx.app.als.json; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; import org.apache.log4j.Logger; import com.xxx.bjrcb.oti.util.LoggerInfo; public class ClientToJson { private static String ip; private static int port; private ClientToJson(){}; /** * 客户端发送JSON字符串 * @param ip * @param port * @param str 发送报文 * @return */ public static String send(String ip,String port,String str){ Logger logger = LoggerInfo.getInstance().getLogger(); Socket socket; String sReturn = null; try { int por = Integer.parseInt(port); //创建客户端Socket对象 socket = new Socket(ip, por); //socket = new Socket("193.158.168.38", 8888); // 封装通道内的流 DataOutputStream out = new DataOutputStream(socket.getOutputStream()); String outStrLength = "00000000" + str.getBytes("utf-8").length; String outStr = outStrLength.substring(outStrLength.length()-8) + str; System.out.println("【发送报文】:"+outStr); logger.info("【发送报文】:"+outStr); out.write(outStr.getBytes("utf-8")); out.flush(); socket.shutdownOutput(); // 读取反馈 InputStream is = socket.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8")); String reply = null; while(!((reply=reader.readLine())==null)){ sReturn = reply; } /*byte[] bys = new byte[1024]; int len2 = is.read(bys); sReturn = new String(bys, 0, len2,"utf-8");*/ System.out.println("【返回报文】:"+sReturn); logger.info("【返回报文】:"+sReturn); sReturn = sReturn.substring(8,sReturn.length()); // 释放资源 out.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } return sReturn; } public static byte[] int2bytes(int num) { byte[] b = new byte[4]; for (int i = 0; i < 4; i++) { b[i] = (byte) (num >>> (24 - i * 8)); } return b; } public static int toInt(byte[] head2) { int dataLen = 0; int[] tmpLen = new int[4]; for (int i = 0; i < 4; i++) { tmpLen[i] = head2[i]; if (tmpLen[i] < 0) tmpLen[i] += 256; } dataLen = ((tmpLen[0] * 256 + tmpLen[1]) * 256 + tmpLen[2]) * 256 + tmpLen[3]; return dataLen; } public static String getIp() { return ip; } public static void setIp(String ip) { ClientToJson.ip = ip; } public static int getPort() { return port; } public static void setPort(int port) { ClientToJson.port = port; } }
1.2 调用:
package com.xxx.bjrcb.oti.client.exchange.logichandler; import java.util.HashMap; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.xxx.app.als.bizobject.customer.Customer; import com.xxx.app.als.bizobject.customer.IndCustomer; import com.xxx.app.als.json.ClientTools; import com.xxx.bjrcb.oti.client.bean.BusinessCode; import com.xxx.bjrcb.oti.client.bean.ErrInfo; import com.xxx.bjrcb.oti.client.exchange.dbhandler.DBHandlerECIFCore; import com.xxx.bjrcb.oti.util.PropertiesUtil; import com.xxx.ecif.interfacestress.CommonManager; import com.csii.pe.service.comm.CommunicationException; /** * 信贷与Ecif交易接口 * @author Administrator */ public class LogicHandlerECIFCore extends AbstractLogicHandler{ private DBHandlerECIFCore dbHandler =new DBHandlerECIFCore(); public LogicHandlerECIFCore(){ super(); this.ip=PropertiesUtil.getValue("EcifCredit.mainframe.connect.address.ip"); this.port=PropertiesUtil.getValue("EcifCredit.mainframe.connect.address.port"); } /** * 初始化Ecif交易系统参数 注意这里的柜员号什么的,都需要修改 * @param sTempMap * @return HashMap */ /*private HashMap initHashMap(String _HostTransactionCode,HashMap sSendMap){ sSendMap.put("TellerId", PropertiesUtil.getValue("TellerId400"));//交易柜员号 sSendMap.put("Password", PropertiesUtil.getValue("Password400")); sSendMap.put("_HostTransactionCode", _HostTransactionCode); sSendMap.put("DeptId", PropertiesUtil.getValue("DeptId400"));//机构号 return sSendMap; }*/ /**对私客户识别 * * @param customerID * @return */ public String ecifDiscernIndInfo(Customer customer){ try { logger.info("**************************************************************************************************************************************"); logger.info("交易名称:【Ecif对私客户识别】"); logger.info("交易码:【"+BusinessCode.ECIFDiscernIndInfo+"】"); String gatewayIP = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.ip"); String gatewayPORT = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.port"); String serverName = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.name"); if(super.checkSerialNo(customer.getCertType())!=ErrInfo.SUCCESS)return returnMsg; //证件类型为空校验 if(super.checkSerialNo(customer.getCertID())!=ErrInfo.SUCCESS)return returnMsg; //证件编号为空校验 if(super.checkSerialNo(customer.getCustomerName())!=ErrInfo.SUCCESS)return returnMsg; //客户名称为空校验 //组装json报文 JSONObject reqHeadler = ClientTools.getRequeset(); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRITrnCode", BusinessCode.ECIFDiscernIndInfo); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvCode", "ECIF100001"); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvSysName", serverName); JSONObject object = (JSONObject) reqHeadler.get("BizInfo"); object.put("queryType", "1"); //识别类型 object.put("AcctNo", ""); //账号 object.put("personalName", customer.getCustomerName()); //客户法定名称 object.put("identType", CommonManager.getCodeTranEcif("CertType", customer.getCertType())); //证件种类 object.put("identNo", customer.getCertID()); //证件号码 object.put("cdIdenMobile", ""); //电话号码 System.out.println(reqHeadler.toJSONString()); String sRecValue = super.transportSubmitJson(gatewayIP, gatewayPORT, reqHeadler.toJSONString());//发送交易并接收返回数据 JSONObject reValue = JSON.parseObject(sRecValue); JSONObject sCmnRsInfo = (JSONObject)reValue.get("CmnRsInfo"); if(sCmnRsInfo.get("RSIRsCode").toString().trim().equals(ErrInfo.SUCCESS_JSON)){ String sRSIRsMsg = sCmnRsInfo.get("RSIRsMsg").toString(); //1 如果是客户不存在,说明无记录 if("客户不存在".equals(sRSIRsMsg)){ returnMsg = "0"; returnMsg = "SUCCESS"+"@"+"0"; }else{ //2 如果为1到多条,返回ecif号 /*JSONObject jBizInfo = (JSONObject)reValue.get("BizInfo"); String scustNo = ""; //客户编号 String sMCiCustomer = jBizInfo.get("MCiCustomer").toString(); if(sMCiCustomer.indexOf("[")==0){//如果是多条,第一个位置为[ 否则,为{ }else{ sMCiCustomer = "["+sMCiCustomer+"]"; } JSONArray array = JSONArray.parseArray(sMCiCustomer);//把客户列表转换成集合 // jBizInfo.get("MCiCustomer").get(1); //全行统一客户编号 for (int i = 0; i < array.size(); i++) { JSONObject jobj = (JSONObject)array.get(i); if(i == 0){ scustNo = jobj.getString("custNo"); }else{ scustNo = scustNo+"||"+jobj.getString("custNo"); } }*/ // if(!"".equals(scustNo)){ returnMsg = "SUCCESS"+"@"+"1"; // } } return returnMsg; }else{ logger.info("对私客户识别交易失败!主机返回错误信息:"+sCmnRsInfo.get("RSIStatus")+"@"+sCmnRsInfo.get("RSIRsCode")+"@"+sCmnRsInfo.get("RSIRsMsg")); return returnMsg=ErrInfo.TransErr; } } catch (CommunicationException e) { logger.error("【"+BusinessCode.ECIFDiscernIndInfo+"】交易发送执行异常!",e); e.printStackTrace(); this.returnMsg = ErrInfo.TransErr; } catch(Exception e){ logger.error("【"+BusinessCode.ECIFDiscernIndInfo+"】交易异常!",e); e.printStackTrace(); this.returnMsg = ErrInfo.Err; } return returnMsg; } /** * Ecif 对私客户创建 * @param customerID * @return */ @SuppressWarnings("unchecked") public String ecifCreditIndInfo(Customer customer){ try { logger.info("**************************************************************************************************************************************"); logger.info("交易名称:【Ecif对私客户创建(联机)】"); logger.info("交易码:【"+BusinessCode.ECIFCreditIndInfo+"】"); String gatewayIP = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.ip"); String gatewayPORT = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.port"); String serverName = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.name"); if(super.checkSerialNo(customer.getCertType())!=ErrInfo.SUCCESS)return returnMsg; //证件类型为空校验 if(super.checkSerialNo(customer.getCertID())!=ErrInfo.SUCCESS)return returnMsg; //证件编号为空校验 if(super.checkSerialNo(customer.getCustomerName())!=ErrInfo.SUCCESS)return returnMsg; //客户名称为空校验 //组装json报文 JSONObject reqHeadler = ClientTools.getRequeset(); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRITrnCode", BusinessCode.ECIFCreditIndInfo); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvCode", "ECIF100005"); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvSysName", serverName); IndCustomer indCustomer=(IndCustomer) customer; JSONObject object = (JSONObject) reqHeadler.get("BizInfo"); object.put("hdls", ""); //后督流水号 object.put("beforeDt", ""); //前置日期 object.put("beforeTm", ""); //前置时间 object.put("tellerEmp", ""); //最近一次维护员工编号 object.put("custName", customer.getCustomerName()); //客户法定名称 object.put("openEmpNum", ""); //客户创建人员编号 object.put("plmsFlag", ""); //个贷业务标志 object.put("cmisFlag", "1"); //对公信贷业务标志 object.put("perCustType", ""); //客户基础分类 object.put("pinyinName", ""); //拼音名 object.put("enName", ""); //英文名 object.put("personTitle", ""); //称谓 object.put("usedName", ""); //曾用名 object.put("aliasName", ""); //别名 object.put("birthday", indCustomer.getBirthDay().replaceAll("/", "-")); //出生日期 object.put("birthNationCode", ""); //出生地 object.put("household", ""); //户籍性质 object.put("hshldRgstRgon", ""); //户籍所在城市 object.put("cdIdenMobile", ""); //身份识别手机号 object.put("gender", CommonManager.getCodeTranEcif("Sex", indCustomer.getSex())); //性别 object.put("citizenship", nullToString(CommonManager.getCodeTranEcif("CountryCode", indCustomer.getCountry()))); //国籍 object.put("nationality", nullToString(CommonManager.getCodeTranEcif("NationalityAll", indCustomer.getNationality())));//民族 object.put("marriage", ""); //婚姻状况 object.put("highestSchooling", ""); //最高学历 object.put("residence", ""); //居住状况 object.put("careerType", ""); //职业 //查出证件信息列表(创建时只有一条),并将其插入到json串中 HashMap mapCert = new HashMap(); mapCert.put("identType", nullToString(CommonManager.getCodeTranEcif("CertType",customer.getCertType()))); //证件种类 mapCert.put("identNo", customer.getCertID()); //证件号码 mapCert.put("identOrg", indCustomer.getCertIDPutOrg()); //证件发放机关 mapCert.put("identEffectiveDate", indCustomer.getCertIDPutDate().replaceAll("/", "-")); //证件发放日期 mapCert.put("identExpiredDate", indCustomer.getCertIDDate().replaceAll("/", "-")); //证件到期日期 mapCert.put("openAcctIdent", "1"); //有效开户证件标志 //查出联系方式列表 /*HashMap sSendMap5 = new HashMap(); sSendMap5.put("contmethType", "21"); //联系方式 手机号码 sSendMap5.put("contmethSecType", "01"); //联系方式类型小码 sSendMap5.put("contmethInfo", ""); //联系方式内容 sSendMap5.put("validFlag", "1"); //是否有效 */ object.put("MCiPerIdentityVerify", ""); //对私客户身份核实核查表 object.put("MCiPerJobresume", ""); //客户工作信息 // object.put("MCiPerContmeth", JSONObject.toJSON(nullToString(sSendMap5))); //对私客户联系信息列表 object.put("MCiPerContmeth", ""); //对私客户联系信息列表 object.put("MCiPerIdentifier", JSONObject.toJSON(nullToString(mapCert))); //对私证件信息列表 object.put("MCiAddress", ""); //地址信息列表 object.put("MCiCustrel", ""); //客户间关系信息列表 object.put("MCiAgentinfo", ""); //代理人信息 System.out.println(reqHeadler.toJSONString()); String sRecValue = super.transportSubmitJson(gatewayIP, gatewayPORT, reqHeadler.toJSONString());//发送交易并接收返回数据 JSONObject reValue = JSON.parseObject(sRecValue); JSONObject sCmnRsInfo = (JSONObject)reValue.get("CmnRsInfo"); if(sCmnRsInfo.get("RSIRsCode").toString().trim().equals(ErrInfo.SUCCESS_JSON)){ String scustNo = ((JSONObject)reValue.get("BizInfo")).get("custNo").toString(); return returnMsg="SUCCESS"+"@"+scustNo; }else{ logger.info("Ecif对私客户创建(联机)交易失败!主机返回错误信息:"+sCmnRsInfo.get("RSIStatus")+"@"+sCmnRsInfo.get("RSIRsCode")+"@"+sCmnRsInfo.get("RSIRsMsg")); return returnMsg=ErrInfo.TransErr; } }catch (CommunicationException e) { logger.error("【"+BusinessCode.ECIFCreditIndInfo+"】交易发送执行异常!",e); e.printStackTrace(); this.returnMsg = ErrInfo.TransErr; } catch(Exception e){ logger.error("【"+BusinessCode.ECIFCreditIndInfo+"】交易异常!",e); e.printStackTrace(); this.returnMsg = ErrInfo.Err; } return returnMsg; } /** * ECIF 对私客户基本信息修改 * @return String[custNo@] */ public String ecifUpdateIndInfo(String customerID,String mfCustomerID){ try { logger.info("**************************************************************************************************************************************"); logger.info("交易名称:【对私客户基本信息修改】"); logger.info("交易码:【"+BusinessCode.ECIFUpdateIndInfo+"】"); String gatewayIP = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.ip"); String gatewayPORT = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.port"); String serverName = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.name"); if(super.checkSerialNo(customerID)!=ErrInfo.SUCCESS)return returnMsg; //客户编号为空校验 if(super.checkSerialNo(mfCustomerID)!=ErrInfo.SUCCESS)return returnMsg; //编号为空校验 //组装json报文 JSONObject reqHeadler = ClientTools.getRequeset(); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRITrnCode", BusinessCode.ECIFUpdateIndInfo); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvCode", "ECIF100007"); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvSysName", serverName); sSendMap = dbHandler.ecifUpdateIndInfo(customerID, super.getConnection()); JSONObject object = (JSONObject) reqHeadler.get("BizInfo"); object.put("hdls", ""); //后督流水号 object.put("beforeDt", ""); //前置日期 object.put("beforeTm", ""); //前置时间 object.put("tellerEmp", ""); //最近一次维护员工编号 object.put("custId", ""); //9位客户编号 object.put("custNo", mfCustomerID); //客户编号 object.put("creditTm", ""); //与我行建立信贷关系日期 object.put("countTm", ""); //在我行首次开立账户日期 object.put("blognCorp", ""); //客户所属法人 object.put("referrerNo", ""); //客户推荐人员员工编号 object.put("plmsFlag", ""); //个贷业务标志 object.put("cmisFlag", "1"); //对公信贷业务标志 object.put("inssFlag", ""); //国际业务标志 object.put("remarks", ""); //备注 object.put("perCustType", ""); //客户基础分类 object.put("pinyinName", ""); //拼音名 object.put("enName", nullToString(sSendMap.get("enName"))); //英文名 object.put("personTitle", ""); //称谓 object.put("usedName", nullToString(sSendMap.get("usedName"))); //曾用名 object.put("aliasName", ""); //别名 object.put("household", ""); //户籍性质 object.put("hshldRgstRgon", ""); //户籍所在城市 object.put("hshldRgstPlace", ""); //户籍所在地 object.put("health", ""); //健康状况 object.put("religiousBelief", ""); //宗教信仰 object.put("graduateSchool", nullToString(sSendMap.get("graduateSchool"))); //毕业学校 object.put("major", ""); //所学专业 object.put("graduationDate", nullToString(sSendMap.get("graduationDate"))); //毕业年份 object.put("cdIdenMobile", ""); //身份识别手机号 object.put("ccbsMobile", ""); //信用卡手机号 object.put("plmsMobile", ""); //个贷催收手机号 object.put("marriage", nullToString(sSendMap.get("marriage"))); //婚姻状况 object.put("residence", nullToString(sSendMap.get("residence"))); //居住状况 object.put("politicalFace",nullToString(sSendMap.get("politicalFace"))); //政治面貌 object.put("highestSchooling", nullToString(sSendMap.get("highestSchooling"))); //最高学历 object.put("highestDegree", nullToString(sSendMap.get("highestDegree"))); //最高学位 object.put("careerType", nullToString(sSendMap.get("careerType"))); //职业 object.put("MCiPerTaxDeclaration", JSONObject.toJSON(nullToString(sSendMap.get("MCiPerTaxDeclaration")))); //税收居民信息 object.put("MCiPerIdentityVerify", JSONObject.toJSON(nullToString(sSendMap.get("MCiPerIdentityVerify")))); //对私客户身份核实核查表 object.put("MCiPerJobresume", JSONObject.toJSON(nullToString(sSendMap.get("MCiPerJobresume")))); //客户工作信息 object.put("MCiAddress", JSONObject.toJSON(nullToString(sSendMap.get("MCiAddress")))); //地址信息列表 object.put("MCiPerContmeth", JSONObject.toJSON(nullToString(sSendMap.get("MCiPerContmeth")))); //对私客户联系信息列表 object.put("MCiPerIdentifier", JSONObject.toJSON(nullToString(sSendMap.get("MCiPerIdentifier")))); //对私证件信息列表 object.put("MCiAgentinfo", JSONObject.toJSON(nullToString(sSendMap.get("MCiAgentinfo")))); //代理人信息 System.out.println(reqHeadler.toJSONString()); String sRecValue = super.transportSubmitJson(gatewayIP, gatewayPORT, reqHeadler.toJSONString()); //发送交易并接收返回数据 JSONObject reValue = JSON.parseObject(sRecValue); JSONObject sCmnRsInfo = (JSONObject)reValue.get("CmnRsInfo"); if(sCmnRsInfo.get("RSIRsCode").toString().trim().equals(ErrInfo.SUCCESS_JSON)){ String scustNo = ((JSONObject)reValue.get("BizInfo")).get("custNo").toString(); return returnMsg="SUCCESS"+"@"+scustNo; }else{ logger.info("对私客户基本信息修改失败!主机返回错误信息:"+sCmnRsInfo.get("RSIStatus")+"@"+sCmnRsInfo.get("RSIRsCode")+"@"+sCmnRsInfo.get("RSIRsMsg")); return returnMsg=ErrInfo.TransErr+"@"+sCmnRsInfo.get("RSIRsMsg"); } }catch (CommunicationException e) { logger.error("【"+BusinessCode.ECIFUpdateIndInfo+"】交易发送执行异常!",e); e.printStackTrace(); this.returnMsg = ErrInfo.TransErr; } catch(Exception e){ logger.error("【"+BusinessCode.ECIFUpdateIndInfo+"】交易异常!",e); e.printStackTrace(); this.returnMsg = ErrInfo.Err; } return returnMsg; } /** * ECIF 对私客户基本信息查询 * @param * @return String */ public String ecifSelectIndInfo(String sMFCustomerID){ try { logger.info("**************************************************************************************************************************************"); if(super.checkSerialNo(sMFCustomerID)!=ErrInfo.SUCCESS)return returnMsg;//ECIF号为空校验 logger.info("交易名称:\t\t【对私客户基本信息查询】"); logger.info("交易码:\t\t【"+BusinessCode.ECIFSelectIndInfo+"】"); logger.info("交易ECIF客户号:\t\t【"+sMFCustomerID+"】"); String gatewayIP = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.ip"); String gatewayPORT = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.port"); String serverName = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.name"); //组装json报文 JSONObject reqHeadler = ClientTools.getRequeset(); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRITrnCode", BusinessCode.ECIFSelectIndInfo); //交易码 ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvCode", "ECIF100006"); //服务码 ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvSysName", serverName); //服务方简称 //为报文公共信息中交易码赋值 JSONObject object = (JSONObject) reqHeadler.get("BizInfo"); object.put("custNo", sMFCustomerID);//客户编号 object.put("custId", "");//9位客户编号 String sRecValue = super.transportSubmitJson(gatewayIP, gatewayPORT, reqHeadler.toString());//发送交易并接收返回数据 JSONObject reValue = JSON.parseObject(sRecValue); JSONObject sCmnRsInfo = (JSONObject)reValue.get("CmnRsInfo"); JSONObject sBizInfo = (JSONObject)reValue.get("BizInfo"); //发送成功 if(sCmnRsInfo.get("RSIRsCode").toString().trim().equals(ErrInfo.SUCCESS_JSON)){ JSONObject jReturn = new JSONObject(); String sMCiOrgIdentifier = sBizInfo.get("MCiPerIdentifier").toString(); //获取对私证件信息列表 if(sMCiOrgIdentifier.indexOf("[")==-1){ //如果单条证件,加中括号可以解析 sMCiOrgIdentifier = "["+sMCiOrgIdentifier+"]"; } JSONArray array = JSONArray.parseArray(sMCiOrgIdentifier); //把对私证件信息列表转换成集合 for (int i = 0; i < array.size(); i++) { JSONObject jobj = (JSONObject)array.get(i); if("1".equals(jobj.getString("openAcctIdent"))){//如果是开户证件 jReturn.put("identType", nullToString(jobj.getString("identType"))); //证件类型 jReturn.put("identNo", nullToString(jobj.getString("identNo"))); //证件号码 jReturn.put("identCustName", nullToString(jobj.getString("identCustName"))); //客户名称 jReturn.put("identOrg", nullToString(jobj.getString("identOrg"))); //证件发放机关 jReturn.put("identEffectiveDate", nullToString(jobj.getString("identEffectiveDate")));//证件发放日期 jReturn.put("identExpiredDate", nullToString(jobj.getString("identExpiredDate"))); //证件到期日期 } } /*Object oMCiOrgIdentifier = sBizInfo.get("MCiPerIdentifier");//取出证件列表 if(oMCiOrgIdentifier instanceof JSONObject){ //单个证件 JSONObject jo = new JSONObject(); jo = (JSONObject)sBizInfo.get("MCiPerIdentifier"); if("1".equals(jo.getString("openAcctIdent"))){ jReturn.put("identType", nullToString(jo.getString("identType"))); //证件类型 jReturn.put("identNo", nullToString(jo.getString("identNo"))); //证件号码 jReturn.put("identCustName", nullToString(jo.getString("identCustName"))); //客户名称 jReturn.put("identOrg", nullToString(jo.getString("identOrg"))); //证件发放机关 jReturn.put("identEffectiveDate", nullToString(jo.getString("identEffectiveDate")));//证件发放日期 jReturn.put("identExpiredDate", nullToString(jo.getString("identExpiredDate"))); //证件到期日期 } }else if(oMCiOrgIdentifier instanceof JSONArray){ //多个证件列表 String sMCiOrgIdentifier = sBizInfo.get("MCiPerIdentifier").toString(); JSONArray array = JSONArray.parseArray(sMCiOrgIdentifier); //把对私证件信息列表转换成集合 for (int i = 0; i < array.size(); i++) { JSONObject jobj = (JSONObject)array.get(i); if("1".equals(jobj.getString("openAcctIdent"))){//如果是开户证件 jReturn.put("identType", nullToString(jobj.getString("identType"))); //证件类型 jReturn.put("identNo", nullToString(jobj.getString("identNo"))); //证件号码 jReturn.put("identCustName", nullToString(jobj.getString("identCustName"))); //客户名称 jReturn.put("identOrg", nullToString(jobj.getString("identOrg"))); //证件发放机关 jReturn.put("identEffectiveDate", nullToString(jobj.getString("identEffectiveDate")));//证件发放日期 jReturn.put("identExpiredDate", nullToString(jobj.getString("identExpiredDate"))); //证件到期日期 } } }else{ jReturn.put("identType", ""); //证件类型 jReturn.put("identNo", ""); //证件号码 jReturn.put("identCustName", ""); //客户名称 jReturn.put("identOrg", ""); //证件发放机关 jReturn.put("identEffectiveDate", ""); //证件发放日期 jReturn.put("identExpiredDate", ""); //证件到期日期 }*/ jReturn.put("nationality", nullToString(sBizInfo.getString("nationality"))); //民族 jReturn.put("birthday", nullToString(sBizInfo.getString("birthday"))); //出生日期 jReturn.put("gender", nullToString(sBizInfo.getString("gender"))); //性别 return returnMsg="SUCCESS"+"@"+jReturn.toString(); }else{ logger.info("信贷对公客户基本信息查询信息失败!主机返回错误信息:"+sCmnRsInfo.get("RSIStatus")+"@"+sCmnRsInfo.get("RSIRsCode")+"@"+sCmnRsInfo.get("RSIRsMsg")); return returnMsg=ErrInfo.TransErr+"@"+sCmnRsInfo.get("RSIRsMsg"); } } catch (CommunicationException e) { this.returnMsg = ErrInfo.TransErr; logger.error("【"+BusinessCode.ECIFSelectIndInfo+"】交易发送执行异常!",e); e.printStackTrace(); } catch(Exception e){ this.returnMsg = ErrInfo.Err; logger.error("【"+BusinessCode.ECIFSelectIndInfo+"】交易异常!",e); e.printStackTrace(); } return returnMsg; } /** * ECIF 对私客户关联方信息修改 * @param customerId * @return */ public String ecifUpdateRelative(String customerID,String mfCustomerID){ try { logger.info("**************************************************************************************************************************************"); logger.info("交易名称:【对私客户关联方信息修改】"); logger.info("交易码:【"+BusinessCode.ECIFUpdateRelative+"】"); String gatewayIP = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.ip"); String gatewayPORT = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.address.port"); String serverName = PropertiesUtil.getValue("gateway.electronbill.mainframe.connect.name"); if(super.checkSerialNo(customerID)!=ErrInfo.SUCCESS)return returnMsg;//客户编号为空校验 if(super.checkSerialNo(mfCustomerID)!=ErrInfo.SUCCESS)return returnMsg;//ecif编号为空校验 //组装json报文 JSONObject reqHeadler = ClientTools.getRequeset(); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRITrnCode", BusinessCode.ECIFUpdateRelative); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvCode", "ECIF100022"); ((JSONObject)reqHeadler.get("MsgRtrInfo")).put("MRISrvSysName", serverName); sSendMap = dbHandler.ecifUpdateRelative(customerID,mfCustomerID,super.getConnection()); JSONObject object = (JSONObject) reqHeadler.get("BizInfo"); object.put("hdls", ""); //后督流水号 object.put("beforeDt", ""); //前置日期 object.put("beforeTm", ""); //前置时间 object.put("tellerEmp", ""); //最近一次维护员工编号 object.put("custId", ""); //9位客户编号 object.put("custNo", nullToString(sSendMap.get("custNo"))); //客户编号 object.put("MCiCustrel", JSONObject.toJSON(nullToString(sSendMap.get("MCiCustrel")))); //关联方信息列表 System.out.println(reqHeadler.toJSONString()); String sRecValue = super.transportSubmitJson(gatewayIP, gatewayPORT, reqHeadler.toJSONString());//发送交易并接收返回数据 JSONObject reValue = JSON.parseObject(sRecValue); JSONObject sCmnRsInfo = (JSONObject)reValue.get("CmnRsInfo"); if(sCmnRsInfo.get("RSIRsCode").toString().trim().equals(ErrInfo.SUCCESS_JSON)){ String scustNo = ((JSONObject)reValue.get("BizInfo")).get("custNo").toString(); return returnMsg="SUCCESS"+"@"+scustNo; }else{ logger.info("对私客户关联方信息修改失败!主机返回错误信息:"+sCmnRsInfo.get("RSIStatus")+"@"+sCmnRsInfo.get("RSIRsCode")+"@"+sCmnRsInfo.get("RSIRsMsg")); return returnMsg=ErrInfo.TransErr+"@"+sCmnRsInfo.get("RSIRsMsg"); } }catch (CommunicationException e) { logger.error("【"+BusinessCode.ECIFUpdateRelative+"】交易发送执行异常!",e); e.printStackTrace(); this.returnMsg = ErrInfo.TransErr; } catch(Exception e){ logger.error("【"+BusinessCode.ECIFUpdateRelative+"】交易异常!",e); e.printStackTrace(); this.returnMsg = ErrInfo.Err; } return returnMsg; } /** * null转换为空字符串"" * @param obj * @return */ private Object nullToString(Object obj) { if(obj==null){ return ""; }else{ return obj; } } }
2 工具类 四则运算
2.1 工具使用
package com.imooc.test;
import java.math.RoundingMode;
public class Test {
private static String a = "2.39999999";
private static String b = "4.50000002";
static String c = "1";
static String d = "3.0";
static String e = "5.0";
@SuppressWarnings("static-access")
public static void main(String[] args) {
StringTool sTool = new StringTool();
//加法
String f = "";
f = sTool.getStrSum(a, b);
System.out.println("f="+f);
//减法
String jianF = "";
jianF = sTool.getStrDif(a,b);
System.out.println("jianF="+jianF);
//乘法
String chengF = "";
chengF = sTool.getStrMul(a,b);
System.out.println("chengF="+chengF);
//除法
String chuF = "";
chuF = sTool.getStrDvi(c, d);
System.out.println("chuF="+chuF);
//除法 保留2位小数
String chuF2 = "";
chuF2 = sTool.getStrDvi(c, d,2,RoundingMode.HALF_UP);
System.out.println("chuF2="+chuF2);
//除法 保留4位小数
String chuF4 = "";
chuF4 = sTool.getStrDvi(c, d,4,RoundingMode.HALF_UP);
System.out.println("chuF4="+chuF4);
}
}
2.2 四则运算工具
package com.imooc.test;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Map;
/**
* @author syang
* @date 2011-6-29
* @describe 字符串处理工具
*/
public class StringTool {
/**
* 预处理字串
* @param pool
* @param str
* @return
* @throws Exception
*/
public static String pretreat(Map<String,Object> pool,String str) throws Exception{
if(str == null) return str;
String sReturn = macroReplace(pool,str.trim(),"#{","}");
sReturn = macroReplace(pool,sReturn,"${","}");
return sReturn;
}
/**
* 宏替换
* @param vpAttributes
* @param sSource
* @param sBeginIdentifier
* @param sEndIdentifier
* @return
* @throws Exception
*/
public static String macroReplace(Map<String,Object> vpAttributes, String sSource, String sBeginIdentifier, String sEndIdentifier)throws Exception{
if(sSource == null) return null;
if(vpAttributes == null || vpAttributes.size() == 0) return sSource;
int iPosBegin = 0,iPosEnd = 0;
String sAttributeID = "",sAttributeValue = "";
Object oTmp = null;
String sReturn = sSource;
try{
while((iPosBegin = sReturn.indexOf(sBeginIdentifier, iPosBegin)) >= 0){
iPosEnd = sReturn.indexOf(sEndIdentifier, iPosBegin);
sAttributeID = sReturn.substring(iPosBegin + sBeginIdentifier.length(), iPosEnd);
oTmp = vpAttributes.get(sAttributeID);
if(oTmp == null){
iPosBegin = iPosEnd;
}else{
sAttributeValue = (String)oTmp;
sReturn = sReturn.substring(0, iPosBegin) + sAttributeValue + sReturn.substring(iPosEnd + sEndIdentifier.length());
}
}
}catch(Exception ex){
throw new Exception("\u5B8F\u66FF\u6362\u9519\u8BEF:" + ex.toString());
}
return sReturn;
}
/**
* 获取字符串数值之和 +
* @param s1
* @param s2
* @return s1+s2
*/
public static String getStrSum(String s1,String s2){
if(s1 == null) s1 = "0";
if(s2 == null) s2 = "0";
if("".equals(s1.trim())) s1 = "0";
if("".equals(s2.trim())) s2 = "0";
BigDecimal ds1 = new BigDecimal(s1);
BigDecimal ds2 = new BigDecimal(s2);
return ds1.add(ds2).toPlainString();
}
/**
* 获取字符串数值之差 -
* @param s1
* @param s2
* @return s1-s2
*/
public static String getStrDif(String s1,String s2){
if(s1 == null) s1 = "0";
if(s2 == null) s2 = "0";
if("".equals(s1.trim())) s1 = "0";
if("".equals(s2.trim())) s2 = "0";
BigDecimal ds1 = new BigDecimal(s1);
BigDecimal ds2 = new BigDecimal(s2);
return ds1.subtract(ds2).toPlainString();
}
/**
* 获取字符串数值之积 *
* @param s1
* @param s2
* @return s1乘以s2
*/
public static String getStrMul(String s1,String s2){
if(s1 == null) s1 = "0";
if(s2 == null) s2 = "0";
if("".equals(s1.trim())) s1 = "0";
if("".equals(s2.trim())) s2 = "0";
BigDecimal ds1 = new BigDecimal(s1);
BigDecimal ds2 = new BigDecimal(s2);
return ds1.multiply(ds2).toPlainString();
}
/**
* 获取字符串数值之商
* @param s1
* @param s2
* @param i i 保留小数点位数
* @param rm rm 舍入模式
* @return s1 除以s2,保留小数点后i位,m舍入模式
*/
public static String getStrDvi(String s1,String s2,int i,RoundingMode rm){
if(s1 == null) s1 = "0";
if(s2 == null) s2 = "0";
if("".equals(s1.trim())) s1 = "0";
if("".equals(s2.trim())) s2 = "0";
BigDecimal ds1 = new BigDecimal(s1);
BigDecimal ds2 = new BigDecimal(s2);
return ds1.divide(ds2,i,rm).toPlainString();
}
/**
* 获取字符串数值之商
* @param s1
* @param s2
* @return s1 除以s2,保留小数点后6位,四舍五入
*/
public static String getStrDvi(String s1,String s2){
if(s1 == null) s1 = "0";
if(s2 == null) s2 = "0";
if("".equals(s1.trim())) s1 = "0";
if("".equals(s2.trim())) s2 = "0";
BigDecimal ds1 = new BigDecimal(s1);
BigDecimal ds2 = new BigDecimal(s2);
return ds1.divide(ds2,6,RoundingMode.HALF_UP).toPlainString();
}
/**
* 比较两个字符串数据大小
* @param s1
* @param s2
* @return