随笔 - 607,  文章 - 173,  评论 - 2,  阅读 - 21万
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 S1=S2 返回0,s1>s2 返回 1,s1<s2返回-1
     */
    public static int getStrCompare(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.compareTo(ds2);
    }
    
    /**
     * 返回字符串型数值字符串
     * @param s1 字符串型数值
     * @例如: s1="1.123456E4" 返回 "11234.56"
     * @return
     */
    public static String toBigDecimalString(String s1)
    {
        if(s1 == null) s1 = "0";
        if("".equals(s1.trim())) s1 = "0";
        
        BigDecimal ds1 = new BigDecimal(s1);
        
        return ds1.toPlainString();
    }
    
    /**
     * 返回字符串型数值字符串
     * @param s1 字符串型数值
     * @例如: s1= 1.123456E4  返回 "11234.56"
     * @return
     */
    public static String toBigDecimalString(double s1)
    {        
        BigDecimal ds1 = new BigDecimal(s1);
        
        return ds1.toPlainString();
    }
    
    /**
     * 返回字符串型数值字符串
     * @param s1 字符串型数值
     * @例如: s1="1.123456E4" 返回 "11234.56"
     * @i 小数点后保留位数
     * @return
     */
    public static String toBigDecimalString(String s1,int i)
    {
        if(s1 == null) s1 = "0";
        if("".equals(s1.trim())) s1 = "0";
        
        BigDecimal ds1 = new BigDecimal(s1);
                
        return ds1.setScale(i,RoundingMode.HALF_UP).toPlainString();
    }
    
    /**
     * 返回字符串型数值字符串
     * @param s1 字符串型数值
     * @例如: s1= 1.123456E4  返回 "11234.56"
     * @i 小数点后保留位数
     * @return
     */
    public static String toBigDecimalString(double s1,int i)
    {        
        BigDecimal ds1 = new BigDecimal(s1);
        
        return ds1.setScale(i,RoundingMode.HALF_UP).toPlainString();
    }
    
}
复制代码

 

2.3  打印日志
f=6.90000001
jianF=-2.10000003
chengF=10.8000000029999998
chuF=0.333333
chuF2=0.33
chuF4=0.3333

 

posted on   菜鸟乙  阅读(355)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示