package com.tenwa.sdk.controller; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.BizObjectManager; import com.amarsoft.are.jbo.BizObjectQuery; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.tenwa.flow.action.comm.BaseFlowStartAction; import com.tenwa.sdk.VO.SDKCheckCallBackVO; import com.tenwa.sdk.VO.SDKCheckCallDetail; import com.tenwa.sdk.VO.SDKCheckInfoVO; import com.tenwa.sdk.VO.SDKDcPayReqxVO; import com.tenwa.sdk.VO.SDKInfoVO; import com.tenwa.sdk.VO.SDKNtstLinFxVo; import com.tenwa.sdk.VO.SDKPayCallBackVO; import com.tenwa.sdk.VO.SDKPayCallDetail; import com.tenwa.sdk.VO.SDKPayRqxVO; import com.tenwa.sdk.VO.SDKToCheckVO; import com.tenwa.sdk.VO.SDKToPayVO; import com.tenwa.sdk.utils.HttpRequest; import com.tenwa.sdk.utils.XMLStream; import com.thoughtworks.xstream.XStream; import jbo.app.tenwa.calc.LC_FUND_INCOME_TEMP; import jbo.com.tenwa.entity.comm.own.OWN_ACCOUNT; import jbo.com.tenwa.entity.comm.own.OWN_INFO; import jbo.com.tenwa.lease.comm.LC_FUND_INCOME_CALLBACK_DETAIL; import jbo.com.tenwa.lease.comm.LC_FUND_INCOME_CALLBACK_INFO; import jbo.com.tenwa.lease.comm.LC_FUND_INCOME_CALLBACK_LOG; import jbo.com.tenwa.lease.comm.LC_FUND_INCOME_PAY_DETAIL; import jbo.com.tenwa.lease.comm.LC_FUND_INCOME_PAY_INFO; import jbo.com.tenwa.lease.comm.LC_FUND_INCOME_PAY_LOG; import jbo.sys.CODE_LIBRARY; import net.sf.json.JSONObject; public class PayController extends BaseFlowStartAction { private String ids; //获取选择的fund_income_id 值 例如('a,b,c,d,e....') private String FLOWUNID ; //流程号 private String bank_id ; //本方银行账户ID public String getFLOWUNID() { return FLOWUNID; } public void setFLOWUNID(String fLOWUNID) { FLOWUNID = fLOWUNID; } public String getIds() { return ids; } public void setIds(String ids) { this.ids = ids; } public String getBank_id() { return bank_id; } public void setBank_id(String bank_id) { this.bank_id = bank_id; } /* * 开发文档URL[https://u.ebank.cmbchina.com/CmbBank_GenShell/UI/Help/DCBank2/API.aspx?03ZFJS/09NTSTLINF] * 具体参数说明 点击VO类进行查看 */ @SuppressWarnings("unchecked") public String to_check(JBOTransaction tx) throws Exception { Map map = new HashMap(); map.put("code", "0") ; map.put("msg", "") ; if(FLOWUNID==null || "".equals(FLOWUNID)) { map.put("code", "1") ; map.put("msg", "流程编号不能为空,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } BizObjectManager accountManager = JBOFactory.getBizObjectManager(OWN_ACCOUNT.CLASS_NAME); BizObjectManager infoManager = JBOFactory.getBizObjectManager(OWN_INFO.CLASS_NAME); BizObject accountBo = accountManager.createQuery("select * from o where o.id=:id").setParameter("id", bank_id).getSingleResult(false); if(accountBo==null) { map.put("code", "1") ; map.put("msg", "本方账户不存在,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } BizObject infoBo = infoManager.createQuery("select * from o where o.own_number=:own_number").setParameter("own_number", accountBo.getAttribute("own_id").toString()).getSingleResult(false); if(infoBo==null) { map.put("code", "1") ; map.put("msg", "账户信息不存在,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } String LGNNAM = infoBo.getAttribute("OWN_NAME").toString(); String FUNNAM = "NTSTLINF"; int DATTYP = 2; SDKToCheckVO toCheckVO = new SDKToCheckVO(); SDKCheckInfoVO checkInfo = new SDKCheckInfoVO(); checkInfo.setDATTYP(DATTYP); checkInfo.setFUNNAM(FUNNAM); checkInfo.setLGNNAM(LGNNAM); toCheckVO.setINFO(checkInfo); BizObjectManager check_list_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_TEMP.CLASS_NAME); String sql = "select * from o where ( BANK_REQNBR is not null and BANK_REQNBR<>'' ) and FLOWUNID=:FLOWUNID "; BizObjectQuery check_list_boo = check_list_bom.createQuery(sql); check_list_boo.setParameter("FLOWUNID", FLOWUNID) ; List check_list_bo = check_list_boo.getResultList(false); if(check_list_bo!=null && check_list_bo.size()>0) { List ntstLinFxList = new ArrayList(); SDKNtstLinFxVo ntstLinFxOne = null ; for(BizObject check_list_one : check_list_bo) { ntstLinFxOne = new SDKNtstLinFxVo(); String ONE_REQNBR = check_list_one.getAttribute("BANK_REQNBR").toString(); ntstLinFxOne.setREQNBR(ONE_REQNBR); ntstLinFxList.add(ntstLinFxOne); } toCheckVO.setNtstLinFxList(ntstLinFxList); XStream xStream = new XMLStream(); xStream.alias("NTSTLINFX", SDKNtstLinFxVo.class); xStream.alias("CMBSDKPGK", SDKToCheckVO.class); String xmlStr = xStream.toXML(toCheckVO); xmlStr = xmlStr.replace("", "").replace("", "").replace("", ""); // System.out.println(xmlStr); HttpRequest request = new HttpRequest(); String data = xmlStr; SDKCheckCallBackVO result = request.sendCheckRequest(data); if(result==null) { map.put("code", "1") ; map.put("msg", "请求出错") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } if(result.getInfo().getSTATUS()==1) { List callback_list = result.getDetails(); if(callback_list!=null && callback_list.size()>0) { BizObjectManager callback_detail_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_DETAIL.CLASS_NAME) ; tx.join(callback_detail_bom); BizObjectQuery callback_detail_boo = callback_detail_bom.createQuery("select * from o where REQNBR=:REQNBR and YURREF=:YURREF and FLOWUNID=:FLOWUNID"); BizObject callback_detail_bo = null ; for(SDKCheckCallDetail callback_detail : callback_list) { callback_detail_boo.setParameter("REQNBR",callback_detail.getREQNBR()) ; callback_detail_boo.setParameter("YURREF",callback_detail.getYURREF()) ; callback_detail_boo.setParameter("FLOWUNID",FLOWUNID) ; callback_detail_bo = callback_detail_boo.getSingleResult(true); callback_detail_bo.setAttributeValue("REQSTS",callback_detail.getREQSTS()); callback_detail_bo.setAttributeValue("RTNFLG",callback_detail.getRTNFLG()); callback_detail_bo.setAttributeValue("RTNNAR",callback_detail.getRTNNAR()); callback_detail_bo.setAttributeValue("INPUTUSERID","admin"); this.initTabeUserInfo(callback_detail_bo); callback_detail_bom.saveObject(callback_detail_bo); } map.put("code", "0") ; map.put("msg", "查询结果刷新成功") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); }else { map.put("code", "1") ; map.put("msg", "没有找到相关数据,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } }else { map.put("code", "1") ; map.put("msg", result.getInfo().getERRMSG()) ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } }else { map.put("code", "1") ; map.put("msg", "暂无支付申请发起数据,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } } /* * 开发文档URL[https://u.ebank.cmbchina.com/CmbBank_GenShell/UI/Help/DCBank2/API.aspx] * 具体参数说明 点击VO类进行查看 */ @SuppressWarnings({ "unused", "unchecked" }) public synchronized String to_pay(JBOTransaction tx) throws Exception { Map map = new HashMap(); map.put("code", "0") ; map.put("msg", "") ; if(FLOWUNID==null || "".equals(FLOWUNID)) { map.put("code", "1") ; map.put("msg", "流程编号不能为空,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } List income_ids = java.util.Arrays.asList(ids.split("@")); if(income_ids==null || income_ids.size()<=0) { map.put("code", "1") ; map.put("msg", "尚未选择数据,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } BizObjectManager accountManager = JBOFactory.getBizObjectManager(OWN_ACCOUNT.CLASS_NAME); BizObjectManager infoManager = JBOFactory.getBizObjectManager(OWN_INFO.CLASS_NAME); BizObject accountBo = accountManager.createQuery("select * from o where o.id=:id").setParameter("id", bank_id).getSingleResult(false); if(accountBo==null) { map.put("code", "1") ; map.put("msg", "本方账户不存在,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } BizObject infoBo = infoManager.createQuery("select * from o where o.own_number=:own_number").setParameter("own_number", accountBo.getAttribute("own_id").toString()).getSingleResult(false); if(infoBo==null) { map.put("code", "1") ; map.put("msg", "账户信息不存在,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } String LGNNAM = infoBo.getAttribute("OWN_NAME").toString(); String FUNNAM = "DCPAYREQ"; int DATTYP = 2; String BUSMOD = "00001"; //默认参数 请按照实际情况谨慎修改 String BUSCOD = "N02030"; //默认参数 请按照实际情况谨慎修改 String DBTBBK = accountBo.getAttribute("branch_code").toString(); String DBTACC = accountBo.getAttribute("acc_number").toString(); String STLCHN = "F"; //默认参数 String CCYNBR = "10"; //默认参数 String TRSTYP = "100001"; //默认参数 String RCVCHK = "1"; //默认参数 /* * 获取常用代码并将codeno存为主键 方便下面代码调用 开始 */ BizObjectManager code_library = JBOFactory.getBizObjectManager(CODE_LIBRARY.CLASS_NAME); List bank_code_list = code_library.createQuery("select codeno,itemno,itemname from o where codeno in ('bank_reqsts','bank_rtnflg','FeeType')").getResultList(false); Map bank_reqsts = new HashMap(); Map bank_rtnflg = new HashMap(); Map fee_type = new HashMap(); for(BizObject code_bo:bank_code_list) { String itemno = code_bo.getAttribute("itemno").toString(); String itemname = code_bo.getAttribute("itemname").toString(); String codeno = code_bo.getAttribute("codeno").toString(); if("bank_reqsts".equals(codeno)) { bank_reqsts.put(itemno, itemname); }else if("bank_rtnflg".equals(codeno)) { bank_rtnflg.put(itemno, itemname); }else { fee_type.put(itemno, itemname); } } String[] bank_reqsts_array = {"AUT","NTE","WCF","BNK","FIN","ACK","APD","OPR"}; String[] bank_rtnflg_array = {"S","F","B","R","D","C","M","V","U","T"}; List bank_reqsts_list = Arrays.asList(bank_reqsts_array); List bank_rtnflg_list = Arrays.asList(bank_rtnflg_array); /* * 获取常用代码并将codeno存为主键 方便下面代码调用 结束 */ SDKToPayVO sDKToPayVO = new SDKToPayVO(); SDKInfoVO sDKInfoVO = new SDKInfoVO(); SDKPayRqxVO sDKPayRqxVO = new SDKPayRqxVO(); List sDKDcPayReqxVOList = new ArrayList(); sDKInfoVO.setLGNNAM(LGNNAM); sDKInfoVO.setFUNNAM(FUNNAM); sDKInfoVO.setDATTYP(DATTYP); sDKPayRqxVO.setBUSCOD(BUSCOD); sDKPayRqxVO.setBUSMOD(BUSMOD); BizObjectManager pay_info_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_PAY_INFO.CLASS_NAME); BizObject pay_info_bo = pay_info_bom.newObject(); /* * PAY_ID 为整个付款发起、回调、查询结果 的关联的ID */ String PAY_ID = UUID.randomUUID().toString().replaceAll("-", "") ; pay_info_bo.setAttributeValue("ID", PAY_ID); pay_info_bo.setAttributeValue("FLOWUNID", FLOWUNID); pay_info_bo.setAttributeValue("INFO_FUNNAM", FUNNAM); pay_info_bo.setAttributeValue("INFO_DATTYP", DATTYP); pay_info_bo.setAttributeValue("INFO_LGNNAM", LGNNAM); pay_info_bo.setAttributeValue("SDKPAYRQX_BUSCOD", BUSCOD); pay_info_bo.setAttributeValue("SDKPAYRQX_BUSMOD", BUSMOD); this.initTabeUserInfo(pay_info_bo); BizObjectManager pay_log_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_PAY_LOG.CLASS_NAME); BizObject pay_log_bo = pay_log_bom.newObject(); pay_log_bo.setAttributeValue("ID", UUID.randomUUID().toString().replaceAll("-", "")); pay_log_bo.setAttributeValue("PAY_ID", PAY_ID); pay_log_bo.setAttributeValue("FLOWUNID", FLOWUNID); this.initTabeUserInfo(pay_log_bo); List pay_detail_list = null;// 声明 发起详情list BizObjectManager bankBo = JBOFactory.getBizObjectManager(LC_FUND_INCOME_TEMP.CLASS_NAME); BizObject infoOne = null ; SDKDcPayReqxVO pay_detail = null ; SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); BizObjectManager pay_detail_bom = null ; String error_msg_tips = ""; String error_null_tips = ""; int index = 1 ; if (income_ids != null && income_ids.size() > 0) { if(income_ids.size() >=30){ map.put("code", "1") ; map.put("msg", "单次处理不能超过30条,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } pay_detail_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_PAY_DETAIL.CLASS_NAME); BizObject pay_detail_bo = null; BizObjectManager call_back_detail_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_DETAIL.CLASS_NAME); BizObject call_back_detail_bo = null ; tx.join(call_back_detail_bom); pay_detail_list = new ArrayList(); for (String income_id : income_ids) { String date = df.format(new Date()); pay_detail = new SDKDcPayReqxVO(); infoOne = bankBo.createQuery("select o.PROJECT_ID,o.FEE_TYPE,o.PLAN_ID,o.PAY_TYPE,o.BANK_SQRNBR,o.BANK_PAY_ID,o.BANK_REQNBR,o.FACT_MONEY,o.memo,o.CONTRACT_ID,o.PAYMENT_NUMBER,o.PLAN_LIST,FLOWUNID,contract_info.CONTRACT_NO,distributor.acc_number,distributor.open_bank,distributor.account,distributor.district,distributor.provinceInfo from o left join jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO contract_info on o.CONTRACT_ID = contract_info.id left join jbo.app.tenwa.customer.DISTRIBUTOR_ACCOUNT distributor on contract_info.distributor_id = distributor.distributor_id and distributor.is_main='Y' where o.id=:id and o.PAY_TYPE = 'pay_type_out' ").setParameter("id", income_id).getSingleResult(false); if(infoOne==null) { map.put("code", "1") ; map.put("msg", "第["+index+"]笔数据不存在,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } String PROJECT_ID = infoOne.getAttribute("PROJECT_ID").toString(); String CONTRACT_ID = infoOne.getAttribute("CONTRACT_ID").toString(); String PAYMENT_NUMBER = infoOne.getAttribute("PAYMENT_NUMBER").toString(); String PLAN_LIST = infoOne.getAttribute("PLAN_LIST").toString(); String FLOWUNID = this.FLOWUNID ; String FEE_TYPE = infoOne.getAttribute("FEE_TYPE").toString(); String PLAN_ID = infoOne.getAttribute("PLAN_ID").toString(); String PAY_TYPE = infoOne.getAttribute("PAY_TYPE").toString(); String CONTRACT_NO = infoOne.getAttribute("CONTRACT_NO").toString(); String CRTACC = infoOne.getAttribute("acc_number").toString(); String BANK_NAME = infoOne.getAttribute("open_bank").toString(); String CRTNAM = infoOne.getAttribute("account").toString(); String CRTPVC = infoOne.getAttribute("provinceInfo").toString(); String CRTCTY = infoOne.getAttribute("district").toString(); String NUSAGE = infoOne.getAttribute("memo").toString(); String BANK_YURREF = infoOne.getAttribute("BANK_YURREF").toString(); String BANK_SQRNBR = infoOne.getAttribute("BANK_SQRNBR").toString(); String BANK_PAY_ID = infoOne.getAttribute("BANK_PAY_ID").toString(); String BANK_REQNBR = infoOne.getAttribute("BANK_REQNBR").toString(); /* * 检查 当前付款信息 是否存在 开始 */ if(BANK_PAY_ID!=null && BANK_PAY_ID!="" && !"".equals(BANK_PAY_ID)) { String temp_sql = "select * from o where CONTRACT_ID=:CONTRACT_ID and PAYMENT_NUMBER=:PAYMENT_NUMBER and PLAN_LIST=:PLAN_LIST and FLOWUNID=:FLOWUNID and PAY_TYPE=:PAY_TYPE and FEE_TYPE =:FEE_TYPE and PLAN_ID=:PLAN_ID " ; if(BANK_YURREF!=null && BANK_YURREF!="" && !"".equals(BANK_YURREF)) temp_sql = temp_sql + " and YURREF=:BANK_YURREF"; if(BANK_SQRNBR!=null && BANK_SQRNBR!="" && !"".equals(BANK_SQRNBR)) temp_sql = temp_sql + " and SQRNBR=:BANK_SQRNBR"; if(BANK_PAY_ID!=null && BANK_PAY_ID!="" && !"".equals(BANK_PAY_ID)) temp_sql = temp_sql + " and PAY_ID=:BANK_PAY_ID"; if(BANK_REQNBR!=null && BANK_REQNBR!="" && !"".equals(BANK_REQNBR)) temp_sql = temp_sql + " and REQNBR=:BANK_REQNBR"; BizObjectQuery call_back_detail_boo= call_back_detail_bom.createQuery(temp_sql); call_back_detail_boo.setParameter("CONTRACT_ID",CONTRACT_ID) ; call_back_detail_boo.setParameter("PAYMENT_NUMBER",PAYMENT_NUMBER) ; call_back_detail_boo.setParameter("PLAN_LIST",PLAN_LIST) ; call_back_detail_boo.setParameter("FLOWUNID",FLOWUNID) ; call_back_detail_boo.setParameter("PAY_TYPE",PAY_TYPE) ; call_back_detail_boo.setParameter("FEE_TYPE",FEE_TYPE) ; call_back_detail_boo.setParameter("PLAN_ID",PLAN_ID) ; if(BANK_YURREF!=null && BANK_YURREF!="" && !"".equals(BANK_YURREF)) call_back_detail_boo.setParameter("BANK_YURREF",BANK_YURREF) ; if(BANK_SQRNBR!=null && BANK_SQRNBR!="" && !"".equals(BANK_SQRNBR)) call_back_detail_boo.setParameter("BANK_SQRNBR",BANK_SQRNBR) ; if(BANK_PAY_ID!=null && BANK_PAY_ID!="" && !"".equals(BANK_PAY_ID)) call_back_detail_boo.setParameter("BANK_PAY_ID",BANK_PAY_ID) ; if(BANK_REQNBR!=null && BANK_REQNBR!="" && !"".equals(BANK_REQNBR)) call_back_detail_boo.setParameter("BANK_REQNBR",BANK_REQNBR) ; call_back_detail_bo = call_back_detail_boo.getSingleResult(false) ; if(call_back_detail_bo!=null) { String CALL_BACK_DETAIL_REQSTS = call_back_detail_bo.getAttribute("REQSTS").toString(); String CALL_BACK_DETAIL_RTNFLG = call_back_detail_bo.getAttribute("RTNFLG").toString(); if(bank_reqsts_list.contains(CALL_BACK_DETAIL_REQSTS)) { error_msg_tips = error_msg_tips + "第["+index+"]笔付款申请失败[请求状态:"+bank_reqsts.get(CALL_BACK_DETAIL_REQSTS)+"]" ; if(CALL_BACK_DETAIL_RTNFLG!="" && CALL_BACK_DETAIL_RTNFLG!=null && !"".equals(CALL_BACK_DETAIL_RTNFLG)) { error_msg_tips = error_msg_tips+"[处理结果:"+bank_rtnflg.get(CALL_BACK_DETAIL_RTNFLG)+"]"; } error_msg_tips = error_msg_tips+",请检查\n"; } } } /* * 检查 当前付款信息 是否存在 结束 */ BigDecimal FACT_MONEY = new BigDecimal( infoOne.getAttribute("FACT_MONEY").toString()); int check=FACT_MONEY.compareTo(BigDecimal.ZERO); if( CONTRACT_NO==null || "".equals( CONTRACT_NO ) || CRTACC==null || "".equals( CRTACC ) || BANK_NAME==null || "".equals( BANK_NAME ) || PAY_TYPE==null || "".equals( PAY_TYPE ) || FEE_TYPE==null || "".equals( FEE_TYPE ) || PLAN_ID==null || "".equals( PLAN_ID ) || CRTNAM==null || "".equals( CRTNAM ) || CRTPVC==null || "".equals( CRTPVC ) || CRTCTY==null || "".equals( CRTCTY ) || CRTPVC==null || "".equals( CRTPVC ) || check==-1 || CRTPVC==null || "".equals( CRTPVC ) ){ error_null_tips = error_null_tips+ "第["+index+"]笔相关数据不存在,请检查\n" ; } if(CRTPVC!=null && !"".equals(CRTPVC)) { if(CRTCTY.indexOf(CRTPVC)!=-1) { CRTCTY = CRTCTY.substring(CRTPVC.length()); } } String TRSAMT = FACT_MONEY.toPlainString(); String YURREF = index + date+UUID.randomUUID().toString().replaceAll("-", "").substring(0, 10) ; String BNKFLG = checkCMB(BANK_NAME); NUSAGE = fee_type.get(FEE_TYPE); String BUSNAR = "[项目编号:"+PROJECT_ID+"][合同号:"+CONTRACT_ID+"][计划期次:"+PLAN_LIST+"][投放编号:"+PAYMENT_NUMBER+"][费用类型:"+NUSAGE+"]"; pay_detail.setYURREF(YURREF); pay_detail.setDBTACC(DBTACC); pay_detail.setDBTBBK(DBTBBK); pay_detail.setTRSAMT(TRSAMT); pay_detail.setCCYNBR(CCYNBR); pay_detail.setSTLCHN(STLCHN); pay_detail.setNUSAGE(NUSAGE); pay_detail.setBUSNAR(BUSNAR); pay_detail.setCRTACC(CRTACC); pay_detail.setCRTNAM(CRTNAM); pay_detail.setCRTBNK(BANK_NAME); pay_detail.setBNKFLG(BNKFLG); pay_detail.setTRSTYP(TRSTYP); pay_detail.setRCVCHK(RCVCHK); pay_detail.setCRTPVC(CRTPVC); pay_detail.setCRTCTY(CRTCTY); sDKDcPayReqxVOList.add(pay_detail); pay_detail_bo = pay_detail_bom.newObject(); pay_detail_bo.setAttributeValue("ID", UUID.randomUUID().toString().replaceAll("-", "")); pay_detail_bo.setAttributeValue("PAY_ID", PAY_ID); pay_detail_bo.setAttributeValue("CONTRACT_ID", CONTRACT_ID); pay_detail_bo.setAttributeValue("PAYMENT_NUMBER", PAYMENT_NUMBER); pay_detail_bo.setAttributeValue("PLAN_LIST", PLAN_LIST); pay_detail_bo.setAttributeValue("PLAN_ID", PLAN_ID); pay_detail_bo.setAttributeValue("FLOWUNID", FLOWUNID); pay_detail_bo.setAttributeValue("PAY_TYPE", PAY_TYPE); pay_detail_bo.setAttributeValue("FEE_TYPE", FEE_TYPE); pay_detail_bo.setAttributeValue("YURREF", YURREF); pay_detail_bo.setAttributeValue("DBTACC", DBTACC); pay_detail_bo.setAttributeValue("DBTBBK", DBTBBK); pay_detail_bo.setAttributeValue("TRSAMT", TRSAMT); pay_detail_bo.setAttributeValue("CCYNBR", CCYNBR); pay_detail_bo.setAttributeValue("STLCHN", STLCHN); pay_detail_bo.setAttributeValue("NUSAGE", NUSAGE); pay_detail_bo.setAttributeValue("CRTACC", CRTACC); pay_detail_bo.setAttributeValue("CRTNAM", CRTNAM); pay_detail_bo.setAttributeValue("CRTBNK", BANK_NAME); pay_detail_bo.setAttributeValue("BNKFLG", BNKFLG); pay_detail_bo.setAttributeValue("TRSTYP", TRSTYP); pay_detail_bo.setAttributeValue("RCVCHK", RCVCHK); pay_detail_bo.setAttributeValue("CRTPVC", CRTPVC); pay_detail_bo.setAttributeValue("CRTCTY", CRTCTY); this.initTabeUserInfo(pay_detail_bo); pay_detail_list.add(pay_detail_bo); ++index; } } if(!"".equals(error_msg_tips)) { map.put("code", "1") ; map.put("msg", error_msg_tips) ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } if(!"".equals(error_null_tips)) { map.put("code", "1") ; map.put("msg", error_null_tips) ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } sDKToPayVO.setINFO(sDKInfoVO); sDKToPayVO.setSDKPAYRQX(sDKPayRqxVO); if(sDKDcPayReqxVOList!=null && sDKDcPayReqxVOList.size()>0) { sDKToPayVO.setDcPayReqxList(sDKDcPayReqxVOList); } XStream xStream = new XMLStream(); xStream.alias("DCPAYREQX", SDKDcPayReqxVO.class); xStream.alias("CMBSDKPGK", SDKToPayVO.class); String xmlStr = xStream.toXML(sDKToPayVO); xmlStr = xmlStr.replace("", "").replace("", "").replace("", ""); pay_log_bo.setAttributeValue("XML",xmlStr); /* * 发起数据入库 开始 */ tx.join(pay_info_bom); tx.join(pay_log_bom); pay_info_bom.saveObject(pay_info_bo); pay_log_bom.saveObject(pay_log_bo); if(pay_detail_bom!=null) { BizObjectManager income_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_TEMP.CLASS_NAME); BizObject income_bo = null ; tx.join(pay_detail_bom); tx.join(income_bom); if(pay_detail_list!=null && pay_detail_list.size()>0) for (BizObject pay_detail_one : pay_detail_list) { BizObjectQuery income_boo= income_bom.createQuery("select * from o where CONTRACT_ID=:CONTRACT_ID and PAYMENT_NUMBER=:PAYMENT_NUMBER and PLAN_LIST=:PLAN_LIST and FLOWUNID=:FLOWUNID and PAY_TYPE=:PAY_TYPE and FEE_TYPE=:FEE_TYPE and PLAN_ID=:PLAN_ID "); income_boo.setParameter("CONTRACT_ID",pay_detail_one.getAttribute("CONTRACT_ID").toString()) ; income_boo.setParameter("PAYMENT_NUMBER",pay_detail_one.getAttribute("PAYMENT_NUMBER").toString()) ; income_boo.setParameter("PLAN_LIST",pay_detail_one.getAttribute("PLAN_LIST").toString()) ; income_boo.setParameter("FLOWUNID",pay_detail_one.getAttribute("FLOWUNID").toString()) ; income_boo.setParameter("PAY_TYPE",pay_detail_one.getAttribute("PAY_TYPE").toString()) ; income_boo.setParameter("FEE_TYPE",pay_detail_one.getAttribute("FEE_TYPE").toString()) ; income_boo.setParameter("PLAN_ID",pay_detail_one.getAttribute("PLAN_ID").toString()) ; income_bo = income_boo.getSingleResult(true) ; income_bo.setAttributeValue("BANK_PAY_ID",pay_detail_one.getAttribute("PAY_ID").toString()); income_bo.setAttributeValue("BANK_YURREF",pay_detail_one.getAttribute("YURREF").toString()); income_bo.setAttributeValue("BANK_ID",bank_id); this.initTabeUserInfo(income_bo); income_bom.saveObject(income_bo); pay_detail_bom.saveObject(pay_detail_one); } } /* * 发起数据入库 结束 */ try { // System.out.println(xmlStr); //控制台打印请求的XML数据 //HttpRequest request = new HttpRequest("http://192.168.1.110:65188"); HttpRequest request = new HttpRequest(); String data = xmlStr; SDKPayCallBackVO result = request.sendPayRequest(data); if(result==null) { map.put("code", "1") ; map.put("msg", "请求出错") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } BizObjectManager callback_info_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_INFO.CLASS_NAME) ; BizObjectManager callback_detail_bom = null; BizObjectManager callback_log_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_LOG.CLASS_NAME) ; BizObject callback_info_bo = callback_info_bom.newObject(); BizObject callback_detail_bo = null; BizObject callback_log_bo = callback_log_bom.newObject(); tx.join(callback_info_bom); callback_info_bo.setAttributeValue("ID", UUID.randomUUID().toString().replaceAll("-", "")); callback_info_bo.setAttributeValue("PAY_ID",PAY_ID); callback_info_bo.setAttributeValue("FLOWUNID",FLOWUNID); callback_info_bo.setAttributeValue("INFO_FUNNAM",FUNNAM); callback_info_bo.setAttributeValue("INFO_DATTYP",DATTYP); callback_info_bo.setAttributeValue("INFO_RETCOD",result.getInfo().getRETCOD()); callback_info_bo.setAttributeValue("INFO_ERRMSG",result.getInfo().getERRMSG()); this.initTabeUserInfo(callback_info_bo); callback_info_bom.saveObject(callback_info_bo); tx.join(callback_log_bom); callback_log_bo.setAttributeValue("ID", UUID.randomUUID().toString().replaceAll("-", "")); callback_log_bo.setAttributeValue("PAY_ID",PAY_ID); callback_log_bo.setAttributeValue("FLOWUNID",FLOWUNID); callback_log_bo.setAttributeValue("XML",result.getInfo().getXML()); this.initTabeUserInfo(callback_log_bo); callback_log_bom.saveObject(callback_log_bo); if(result.getInfo().getSTATUS()==1) { if("0".equals( result.getInfo().getRETCOD() )) { List details = result.getDetails() ; String error_info = ""; if(details!=null && details.size()>0) { callback_detail_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_DETAIL.CLASS_NAME) ; tx.join(callback_detail_bom); int call_index = 1 ; for (SDKPayCallDetail detail : details) { if (detail.getREQSTS().equals("FIN") && detail.getRTNFLG().equals("F")) { error_info= error_info+"\n"+ "第["+call_index+"]笔数据 "+detail.getERRTXT() ; } callback_detail_bo = callback_detail_bom.newObject(); String DETAIL_YURREF = detail.getYURREF() ; callback_detail_bo.setAttributeValue("ID", UUID.randomUUID().toString().replaceAll("-", "")); callback_detail_bo.setAttributeValue("PAY_ID",PAY_ID); callback_detail_bo.setAttributeValue("YURREF",DETAIL_YURREF); callback_detail_bo.setAttributeValue("SQRNBR",detail.getSQRNBR()); callback_detail_bo.setAttributeValue("REQNBR",detail.getREQNBR()); callback_detail_bo.setAttributeValue("REQSTS",detail.getREQSTS()); callback_detail_bo.setAttributeValue("RTNFLG",detail.getRTNFLG()); callback_detail_bo.setAttributeValue("OPRSQN",detail.getOPRSQN()); callback_detail_bo.setAttributeValue("OPRALS",detail.getOPRALS()); callback_detail_bo.setAttributeValue("ERRCOD",detail.getERRCOD()); callback_detail_bo.setAttributeValue("ERRTXT",detail.getERRTXT()); this.initTabeUserInfo(callback_detail_bo); if(pay_detail_list!=null && pay_detail_list.size()>0) { BizObjectManager income_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_TEMP.CLASS_NAME); BizObject income_bo = null ; tx.join(income_bom); BizObjectQuery income_boo= income_bom.createQuery("select * from o where CONTRACT_ID=:CONTRACT_ID and PAYMENT_NUMBER=:PAYMENT_NUMBER and PLAN_LIST=:PLAN_LIST and FLOWUNID=:FLOWUNID and PAY_TYPE=:PAY_TYPE and FEE_TYPE=:FEE_TYPE and PLAN_ID=:PLAN_ID "); for (BizObject pay_detail_one : pay_detail_list) { if(DETAIL_YURREF.equals( pay_detail_one.getAttribute("YURREF").toString() )) { income_boo.setParameter("CONTRACT_ID",pay_detail_one.getAttribute("CONTRACT_ID").toString()) ; income_boo.setParameter("PAYMENT_NUMBER",pay_detail_one.getAttribute("PAYMENT_NUMBER").toString()) ; income_boo.setParameter("PLAN_LIST",pay_detail_one.getAttribute("PLAN_LIST").toString()) ; income_boo.setParameter("FLOWUNID",pay_detail_one.getAttribute("FLOWUNID").toString()) ; income_boo.setParameter("PAY_TYPE",pay_detail_one.getAttribute("PAY_TYPE").toString()) ; income_boo.setParameter("FEE_TYPE",pay_detail_one.getAttribute("FEE_TYPE").toString()) ; income_boo.setParameter("PLAN_ID",pay_detail_one.getAttribute("PLAN_ID").toString()) ; income_bo = income_boo.getSingleResult(true) ; income_bo.setAttributeValue("BANK_SQRNBR",detail.getSQRNBR()); income_bo.setAttributeValue("BANK_REQNBR",detail.getREQNBR()); this.initTabeUserInfo(income_bo); income_bom.saveObject(income_bo); callback_detail_bo.setAttributeValue("CONTRACT_ID",pay_detail_one.getAttribute("CONTRACT_ID").toString()); callback_detail_bo.setAttributeValue("PAYMENT_NUMBER",pay_detail_one.getAttribute("PAYMENT_NUMBER").toString()); callback_detail_bo.setAttributeValue("PLAN_LIST",pay_detail_one.getAttribute("PLAN_LIST").toString()); callback_detail_bo.setAttributeValue("FLOWUNID",pay_detail_one.getAttribute("FLOWUNID").toString()); callback_detail_bo.setAttributeValue("PAY_TYPE",pay_detail_one.getAttribute("PAY_TYPE").toString()); callback_detail_bo.setAttributeValue("FEE_TYPE",pay_detail_one.getAttribute("FEE_TYPE").toString()); callback_detail_bo.setAttributeValue("PLAN_ID",pay_detail_one.getAttribute("PLAN_ID").toString()); } } } callback_detail_bom.saveObject(callback_detail_bo); ++call_index; } } if(error_info==""){ map.put("code", "0") ; map.put("msg", "受理成功,请耐心等待审核") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); }else { map.put("code", "2") ; map.put("msg", "部分发起申请失败,请检查"+error_info) ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } }else { map.put("code", "1") ; map.put("msg", result.getInfo().getERRMSG()) ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } }else { map.put("code", "1") ; map.put("msg", result.getInfo().getERRMSG()) ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } } catch (Exception e) { map.put("code", "1") ; map.put("msg", e.getMessage()) ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } } private String checkCMB(String str) { if (str.indexOf("招行") != -1 || str.indexOf("招商银行") != -1) { return "Y"; } else { return "N"; } } }