702 lines
31 KiB
Java
702 lines
31 KiB
Java
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.cmb.sdk.LC_FUND_INCOME_CALLBACK_DETAIL;
|
|
import jbo.cmb.sdk.LC_FUND_INCOME_CALLBACK_INFO;
|
|
import jbo.cmb.sdk.LC_FUND_INCOME_CALLBACK_LOG;
|
|
import jbo.cmb.sdk.LC_FUND_INCOME_PAY_DETAIL;
|
|
import jbo.cmb.sdk.LC_FUND_INCOME_PAY_INFO;
|
|
import jbo.cmb.sdk.LC_FUND_INCOME_PAY_LOG;
|
|
import jbo.com.tenwa.entity.comm.own.OWN_ACCOUNT;
|
|
import jbo.com.tenwa.entity.comm.own.OWN_INFO;
|
|
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<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();
|
|
}
|
|
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<BizObject> check_list_bo = check_list_boo.getResultList(false);
|
|
if(check_list_bo!=null && check_list_bo.size()>0) {
|
|
List<SDKNtstLinFxVo> ntstLinFxList = new ArrayList<SDKNtstLinFxVo>();
|
|
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("<ntstLinFxList>", "").replace("</ntstLinFxList>", "").replace("<ntstLinFxList/>", "");
|
|
// 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<SDKCheckCallDetail> 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<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> 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<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.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<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 = "";
|
|
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<BizObject>();
|
|
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.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.bank_name,distributor.account,distributor.CRTPVC,distributor.CRTCTY 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.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 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("bank_name").toString();
|
|
String CRTNAM = infoOne.getAttribute("account").toString();
|
|
String CRTPVC = infoOne.getAttribute("CRTPVC").toString();
|
|
String CRTCTY = infoOne.getAttribute("CRTCTY").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 " ;
|
|
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) ;
|
|
|
|
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 )
|
|
|| CRTNAM==null || "".equals( CRTNAM )
|
|
|| CRTPVC==null || "".equals( CRTPVC )
|
|
|| CRTCTY==null || "".equals( CRTCTY )
|
|
|| CRTPVC==null || "".equals( CRTPVC )
|
|
|| check==-1
|
|
|| CRTPVC==null || "".equals( CRTPVC )
|
|
){
|
|
error_msg_tips = error_msg_tips+ "第["+index+"]笔相关数据不存在,请检查\n" ;
|
|
}
|
|
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.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("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("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/>", "");
|
|
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 ");
|
|
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_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<SDKPayCallDetail> 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 ");
|
|
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_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_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";
|
|
}
|
|
}
|
|
}
|