apzl_leasing/src_cmb/com/tenwa/sdk/controller/CmbToPayController.java

615 lines
25 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.tenwa.sdk.controller;
import com.amarsoft.are.jbo.*;
import com.amarsoft.awe.Configure;
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
import com.tenwa.flow.action.comm.BaseFlowStartAction;
import com.tenwa.sdk.VO.*;
import com.tenwa.sdk.utils.HttpRequest;
import com.tenwa.sdk.utils.XMLStream;
import com.thoughtworks.xstream.XStream;
import jbo.app.tenwa.calc.LB_ACTUAL_PAYMENT_INFO_TEMP;
import jbo.app.tenwa.calc.LC_FUND_INCOME_TEMP;
import jbo.com.tenwa.lease.comm.*;
import jbo.prd.LB_PRODUCTTOCOMPANY_INFO;
import jbo.sys.CODE_LIBRARY;
import net.sf.json.JSONObject;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
public class CmbToPayController extends BaseFlowStartAction {
private String distributor_ids; //获取选择的 经销商ID
private String contract_ids; //获取选择的合同ID
private String FLOWUNID ; //流程号、
public String getContract_ids() {
return contract_ids;
}
public void setContract_ids(String contract_ids) {
this.contract_ids = contract_ids;
}
public String getFLOWUNID() {
return FLOWUNID;
}
public void setFLOWUNID(String fLOWUNID) {
FLOWUNID = fLOWUNID;
}
public String getDistributor_ids() {
return distributor_ids;
}
public void setDistributor_ids(String distributor_ids) {
this.distributor_ids = distributor_ids;
}
@SuppressWarnings({ "unchecked", "unused" })
public synchronized String action(JBOTransaction tx) throws Exception {
/*
* 定义返回参数
*/
Map<String,String> map = new HashMap<String,String>();
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<String> distributor_id_list = java.util.Arrays.asList(distributor_ids.split("@"));
if(distributor_id_list==null || distributor_id_list.size()<=0) {
map.put("code", "1") ;
map.put("msg", "尚未选择经销商,请检查") ;
JSONObject jsonObj = JSONObject.fromObject(map);
return jsonObj.toString();
}*/
List<String> contract_id_list = Arrays.asList(contract_ids.split("@"));
if(contract_id_list==null || contract_id_list.size()<=0) {
map.put("code", "1") ;
map.put("msg", "尚未选择合同,请检查") ;
JSONObject jsonObj = JSONObject.fromObject(map);
return jsonObj.toString();
}
//校验本次发起付款是否为同一个主体
String contractIds = contract_ids.replaceAll("@", "','");
String subjectSql = "SELECT subjectId AS subjectuid FROM lb_contract_info WHERE id IN ('"+contractIds+"') GROUP BY subjectId ";
List<Map<String, String>> lciList = DataOperatorUtil.getDataBySql(subjectSql);
if(lciList.size()>1){
map.put("code", "1") ;
map.put("msg", "放款合同中有多个主体,请检查!!!") ;
JSONObject jsonObj = JSONObject.fromObject(map);
return jsonObj.toString();
}
String subjectId = lciList.get(0).get("subjectuid");
/*
* 基本参数检查######开始
*/
/*
* 本方放款账户获取######开始
*/
BizObjectManager actualPaymentMan = JBOFactory.getBizObjectManager(LB_ACTUAL_PAYMENT_INFO_TEMP.CLASS_NAME);
BizObject accountBo = actualPaymentMan.createQuery("select o.account,o.acc_number,o.bank,oa.id,oa.branch_code from o join jbo.com.tenwa.entity.comm.own.OWN_ACCOUNT oa on o.acc_number = oa.acc_number where flowunid=:flowunid and (oa.account_type='out_account' or oa.account_type='inAndOut_account')").setParameter("flowunid", FLOWUNID).getSingleResult(false);
if (accountBo == null) {
map.put("code", "1");
map.put("msg", "没有匹配的本方账户,请在本方账户中检查!");
JSONObject jsonObj = JSONObject.fromObject(map);
return jsonObj.toString();
}
/*
* 本方放款账户获取######结束
*/
/*
* 付款申请基础信息定义######开始
*/
//安鹏要求改为从配置文件中读取。
//String LGNNAM = accountBo.getAttribute("OWN_NAME").toString();
// String LGNNAM = "安鹏经办";
// String LGNNAM = "银企直连测试用户113";
Configure config = Configure.getInstance();
String LGNNAM = config.getConfigure("LGNNAM");
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<BizObject> bank_code_list = code_library.createQuery("select codeno,itemno,itemname from o where codeno in ('bank_reqsts','bank_rtnflg','FeeType')").getResultList(false);
Map<String,String> bank_reqsts = new HashMap<String,String>(); //业务请求状态
Map<String,String> bank_rtnflg = new HashMap<String,String>(); //业务处理结果
Map<String,String> fee_type = new HashMap<String,String>(); //费用类型
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<String> bank_reqsts_list = Arrays.asList(bank_reqsts_array);
List<String> bank_rtnflg_list = Arrays.asList(bank_rtnflg_array);
/*
* 获取常用代码并将codeno存为主键 方便下面代码调用######结束
*/
/*
*
*/
SDKToPayVO sDKToPayVO = new SDKToPayVO();
SDKInfoVO sDKInfoVO = new SDKInfoVO();
SDKPayRqxVO sDKPayRqxVO = new SDKPayRqxVO();
List<SDKDcPayReqxVO> sDKDcPayReqxVOList = new ArrayList<SDKDcPayReqxVO>();
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_TEMP.CLASS_NAME);
BizObject pay_info_bo = pay_info_bom.newObject();
String CMB_PAY_NO = UUID.randomUUID().toString().replaceAll("-", "") ; // 付款流水号
pay_info_bo.setAttributeValue("ID", UUID.randomUUID().toString().replaceAll("-", ""));
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);
List<BizObject> 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 = ""; //定义错误信息 是否为空
if(contract_id_list.size() > 30){ //招行文档规定 单次批量申请不能超过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_TEMP.CLASS_NAME);
BizObject pay_detail_bo = null;
BizObjectManager call_back_detail_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_DETAIL_TEMP.CLASS_NAME);
BizObject call_back_detail_bo = null ;
tx.join(call_back_detail_bom);
pay_detail_list = new ArrayList<BizObject>();
String temp_str = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 14) ;
String date = df.format(new Date());
BigDecimal all_money = new BigDecimal("0");
List<BizObject> income_all_list = bankBo.createQuery("select o.CMB_PAY_NO,o.FACT_MONEY,o.FLOWUNID,contract_info.ID,contract_info.CONTRACT_NO,distributor.distributor_id,distributor.acc_number,distributor.open_bank,distributor.account,distributor.district,distributor.provinceInfo from o join jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO contract_info on o.CONTRACT_ID = contract_info.id join jbo.app.tenwa.customer.DISTRIBUTOR_ACCOUNT distributor on contract_info.distributor_id = distributor.distributor_id and distributor.is_main='Y' where FLOWUNID=:FLOWUNID and o.PAY_TYPE = 'pay_type_out' ").setParameter("FLOWUNID", FLOWUNID).getResultList(false);
if(income_all_list==null) {
map.put("code", "1") ;
map.put("msg", "资金收付数据不存在,请检查") ;
JSONObject jsonObj = JSONObject.fromObject(map);
return jsonObj.toString();
}
int index = 1 ;
for (String contract_id : contract_id_list) {
infoOne = null ;
BigDecimal contract_all_money = new BigDecimal("0");
for(BizObject income_one : income_all_list) {
String income_one_contract_id = income_one.getAttribute("ID").toString();
if(contract_id.equals(income_one_contract_id)) {
BigDecimal income_one_fact_money = new BigDecimal(income_one.getAttribute("FACT_MONEY").toString());
contract_all_money = contract_all_money.add(income_one_fact_money);
infoOne = income_one ;
}
}
all_money=all_money.add(contract_all_money);
if(infoOne==null) {
map.put("code", "1") ;
map.put("msg", "第["+index+"]笔数据不存在,请检查") ;
JSONObject jsonObj = JSONObject.fromObject(map);
return jsonObj.toString();
}
String acc_number = infoOne.getAttribute("acc_number").toString();
String open_bank = infoOne.getAttribute("open_bank").toString();
String account = infoOne.getAttribute("account").toString();
String province = infoOne.getAttribute("provinceInfo").toString();
String city = infoOne.getAttribute("district").toString();
BizObject bo_lci = JBOFactory.getBizObjectManager(LB_CONTRACT_INFO.CLASS_NAME).createQuery("id=:id").setParameter("id", contract_id).getSingleResult(false);
String productId = bo_lci.getAttribute("product_id").toString();
String contractNoZC = bo_lci.getAttribute("ZC_CONTRACT_NUMBER")==null?"":bo_lci.getAttribute("ZC_CONTRACT_NUMBER").toString();
String contractNo = bo_lci.getAttribute("CONTRACT_NO").toString();
BizObject bo_lul = JBOFactory.getBizObjectManager(LB_UNION_LESSEE.CLASS_NAME).createQuery("contract_id=:contractId").setParameter("contractId", contract_id).getSingleResult(false);
String customerName = bo_lul.getAttribute("CUSTOMER_NAME").toString();
BizObject bo_lpi = JBOFactory.getBizObjectManager(LB_PRODUCTTOCOMPANY_INFO.CLASS_NAME).createQuery("product_id=:product_id").setParameter("product_id", productId).getSingleResult(false);
if(bo_lpi!=null&&bo_lpi.getAttribute("product_id")!=null){
acc_number = bo_lpi.getAttribute("acc_number").toString();
open_bank = bo_lpi.getAttribute("bank_name").toString();
account = bo_lpi.getAttribute("account").toString();
province = bo_lpi.getAttribute("province").toString();
city = bo_lpi.getAttribute("city").toString();
}
String FLOWUNID = this.FLOWUNID ;
String DISTRIBUTOR_ID = infoOne.getAttribute("distributor_id").toString();
String CONTRACT_ID = infoOne.getAttribute("ID").toString();
String CRTACC = acc_number;
String BANK_NAME = open_bank;
String CRTNAM = account;
String CRTPVC = province;
String CRTCTY = city;
String NUSAGE = infoOne.getAttribute("memo").toString();
String CMB_PAY_NO_ONE = infoOne.getAttribute("CMB_PAY_NO").toString();
/*
* 检查当前付款信息是否存在######开始
*/
if(CMB_PAY_NO_ONE!=null && CMB_PAY_NO_ONE!="" && !"".equals(CMB_PAY_NO_ONE)) {
String temp_sql = "select * from o where FLOWUNID=:FLOWUNID and CMB_PAY_NO=:CMB_PAY_NO_ONE " ;
BizObjectQuery call_back_detail_boo= call_back_detail_bom.createQuery(temp_sql);
call_back_detail_boo.setParameter("FLOWUNID",FLOWUNID) ;
call_back_detail_boo.setParameter("CMB_PAY_NO_ONE",CMB_PAY_NO_ONE) ;
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";
}
}
}
/*
* 检查当前付款信息是否存在######结束
*/
int check=contract_all_money.compareTo(BigDecimal.ZERO);
if( CONTRACT_ID==null || "".equals( CONTRACT_ID )
|| CRTACC==null || "".equals( CRTACC )
|| BANK_NAME==null || "".equals( BANK_NAME )
|| 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());
}
}
if("6225885910000108".equals(CRTACC)) {
CRTPVC="福建";
CRTCTY="福州";
}
if("6225880230001175".equals(CRTACC)) {
CRTPVC="重庆";
CRTCTY="重庆";
}
String YURREF_INDEX = index+"" ;
if(index<10) {
YURREF_INDEX = String.format("%02d", index);
}
String TRSAMT = contract_all_money.toPlainString();
String YURREF = YURREF_INDEX + date+ temp_str;
String BNKFLG = checkCMB(BANK_NAME);
//NUSAGE = "客户["+CRTACC+"]发起申请";
String BUSNAR = "[实际付款][客户:"+CRTACC+"][支付金额:"+TRSAMT+"]";
/*
*银企直连此字符串的规则:
* 0.此字段在银企直连中最大为62
* 1.字符串长度为N那么最多可输入汉字数为N-2/2
* 2.如果中文中夹杂英文字符或数字,那么要做分段处理,每段汉字长度都要+2。例“中国TCL集团”是 (2*2+2)+(3)+(2*2+2)=15
* */
//cusLength:customerName最大长度以银企直连算法
int cusLength = 62-(2+contractNoZC.length()+contractNo.length());
customerName = getCMBlength(customerName,cusLength);
NUSAGE = customerName+"-"+contractNoZC+"-"+contractNo;
pay_detail = new SDKDcPayReqxVO();
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("CMB_PAY_NO", CMB_PAY_NO);
pay_detail_bo.setAttributeValue("DISTRIBUTOR_ID", DISTRIBUTOR_ID);
pay_detail_bo.setAttributeValue("CONTRACT_ID", CONTRACT_ID);
pay_detail_bo.setAttributeValue("FLOWUNID", FLOWUNID);
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("BUSNAR", BUSNAR);
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("<dcPayReqxList>", "").replace("</dcPayReqxList>", "").replace("<dcPayReqxList/>", "");
try {
System.out.println(xmlStr); //控制台打印请求的XML数据
//HttpRequest request = new HttpRequest("http://172.16.20.242:65188");
//HttpRequest request = new HttpRequest("http://192.168.13.162:65188");
//request.setTimeout(3000);
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();
}
if(result.getInfo().getSTATUS()==1) {
if("0".equals( result.getInfo().getRETCOD() )) {
pay_info_bo.setAttributeValue("FACT_MONEY",all_money.toPlainString());
pay_info_bo.setAttributeValue("CMB_PAY_NO",CMB_PAY_NO) ;
pay_info_bo.setAttributeValue("BANK_ID",accountBo.getAttribute("id").toString()) ;
tx.join(pay_info_bom);// 插入支付信息表
pay_info_bom.saveObject(pay_info_bo);
if(pay_detail_bom!=null) {
BizObjectManager income_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_TEMP.CLASS_NAME);
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("update o join jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO lcf on o.contract_id = lcf.id set o.CMB_PAY_NO=:CMB_PAY_NO where o.PAY_TYPE = 'pay_type_out' and o.FLOWUNID=:FLOWUNID and lcf.ID=:CONTRACT_ID");
income_boo.setParameter("CMB_PAY_NO",CMB_PAY_NO) ;
income_boo.setParameter("FLOWUNID",pay_detail_one.getAttribute("FLOWUNID").toString()) ;
income_boo.setParameter("CONTRACT_ID",pay_detail_one.getAttribute("CONTRACT_ID").toString()) ;
income_boo.setParameter("DISTRIBUTOR_ID",pay_detail_one.getAttribute("DISTRIBUTOR_ID").toString()) ;
income_boo.setParameter("bank",accountBo.getAttribute("bank").toString()) ;
income_boo.setParameter("account",accountBo.getAttribute("account").toString()) ;
income_boo.setParameter("acc_number",accountBo.getAttribute("acc_number").toString()) ;
income_boo.executeUpdate();//更新资金收付表
pay_detail_bom.saveObject(pay_detail_one); //插入支付详情表
}
}
BizObjectManager callback_info_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_INFO_TEMP.CLASS_NAME) ;
BizObjectManager callback_detail_bom = null;
BizObject callback_info_bo = callback_info_bom.newObject();
BizObject callback_detail_bo = null;
tx.join(callback_info_bom);
callback_info_bo.setAttributeValue("ID", UUID.randomUUID().toString().replaceAll("-", ""));
callback_info_bo.setAttributeValue("CMB_PAY_NO",CMB_PAY_NO);
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); //插入支付回调信息表
List<SDKPayCallDetail> details = result.getDetails() ;
String error_info = "";
if(details!=null && details.size()>0) {
callback_detail_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_DETAIL_TEMP.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("CMB_PAY_NO",CMB_PAY_NO);
callback_detail_bo.setAttributeValue("YURREF",DETAIL_YURREF);
callback_detail_bo.setAttributeValue("FLOWUNID",FLOWUNID);
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());
if(pay_detail_list!=null && pay_detail_list.size()>0) {
for (BizObject pay_detail_one : pay_detail_list) {
if(DETAIL_YURREF.equals( pay_detail_one.getAttribute("YURREF").toString() )) {
callback_detail_bo.setAttributeValue("CONTRACT_ID",pay_detail_one.getAttribute("CONTRACT_ID").toString());
callback_detail_bo.setAttributeValue("DISTRIBUTOR_ID",pay_detail_one.getAttribute("DISTRIBUTOR_ID").toString());
}
}
}
this.initTabeUserInfo(callback_detail_bo);
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";
}
}
private String getCMBlength(String str,int length){
int count = 0;
boolean ChineseFlag = false;
char[] c = str.toCharArray();
for(int i = 0; i < c.length; i ++){
//二进制超过8位则为汉字
String len = Integer.toBinaryString(c[i]);
if(ChineseFlag){
if(len.length() > 8){
count=count+2;
ChineseFlag = true;
}else{
count ++;
ChineseFlag = false;
}
}else{
if(len.length() > 8){
count=count+2+2;
ChineseFlag = true;
}else{
count ++;
ChineseFlag = false;
}
}
if(count==length){
str = str.substring(0,i+1);
break;
}else if(count>length){
str = str.substring(0,i);
break;
}
}
return str;
}
}