477 lines
24 KiB
Java
477 lines
24 KiB
Java
package com.tenwa.cgb.controller;
|
||
|
||
import com.amarsoft.are.jbo.*;
|
||
import com.amarsoft.awe.util.ASResultSet;
|
||
import com.amarsoft.awe.util.SqlObject;
|
||
import com.amarsoft.awe.util.Transaction;
|
||
import com.amarsoft.dict.als.manage.CodeManager;
|
||
import com.tenwa.cgb.conf.CGBconfProperties;
|
||
import com.tenwa.cgb.util.CGBLogAssistant;
|
||
import com.tenwa.cgb.util.HttpAssistant;
|
||
import com.tenwa.comm.exception.BusinessException;
|
||
import com.tenwa.comm.util.date.DateAssistant;
|
||
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
|
||
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.LC_FUND_INCOME_CALLBACK_DETAIL_TEMP;
|
||
import org.apache.commons.logging.Log;
|
||
import org.apache.commons.logging.LogFactory;
|
||
|
||
import java.math.BigDecimal;
|
||
import java.util.HashMap;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
import java.util.regex.Matcher;
|
||
import java.util.regex.Pattern;
|
||
|
||
/**
|
||
* @program: apzl_leasing
|
||
* @author: yjf
|
||
* @create: 2021-07-19 11:39
|
||
**/
|
||
public class OperateOfCGBController {
|
||
|
||
private static final String XMLDECLARE = "<?xml version=\"1.0\" encoding = \"GBK\"?>";
|
||
private static Log log = LogFactory.getLog(OperateOfCGBController.class);
|
||
private String flowUnid;
|
||
private String userId;
|
||
private String orgId;
|
||
private String contractIds;
|
||
|
||
public void setFlowUnid(String flowUnid) {
|
||
this.flowUnid = flowUnid;
|
||
}
|
||
|
||
public void setContractIds(String contractIds) {
|
||
this.contractIds = contractIds;
|
||
}
|
||
|
||
public void setUserId(String userId) {
|
||
this.userId = userId;
|
||
}
|
||
|
||
public void setOrgId(String orgId) {
|
||
this.orgId = orgId;
|
||
}
|
||
|
||
/**
|
||
* ÅúÁ¿×ªÕË
|
||
*
|
||
* @param tx
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
public String batchPayOfCGB(JBOTransaction tx) throws Exception {
|
||
String retResult = "success·¢Æð¸¶¿î³É¹¦!";
|
||
contractIds = contractIds.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) {
|
||
return "·Å¿îºÏͬÖÐÓжà¸öÖ÷Ì壬Çë¼ì²é£¡£¡£¡";
|
||
}
|
||
BizObjectManager actualPaymentMan = JBOFactory.getBizObjectManager(LB_ACTUAL_PAYMENT_INFO_TEMP.CLASS_NAME, tx);
|
||
BizObject actualBo = actualPaymentMan.createQuery("flowunid=:flowunid").setParameter("flowunid", flowUnid).getSingleResult(false);
|
||
if (actualBo == null || actualBo.getAttribute("acc_number").getString().length() == 0) {
|
||
throw new BusinessException("ûÓÐÆ¥ÅäµÄ±¾·½ÕË»§,Çë¼ì²é£¡£¡£¡");
|
||
}
|
||
String payAccountNum = actualBo.getAttribute("acc_number").getString();
|
||
BizObjectManager incomeMan = JBOFactory.getBizObjectManager(LC_FUND_INCOME_TEMP.CLASS_NAME, tx);
|
||
BizObject singleResult = incomeMan.createQuery("select v.count(1) as v.allCount from O where FLOWUNID=:FLOWUNID and o.contract_id in ('" + contractIds + "') and o.PAY_TYPE = 'pay_type_out' and o.CMB_PAY_LOG is null ").setParameter("FLOWUNID", flowUnid).getSingleResult(false);
|
||
if (singleResult != null && singleResult.getAttribute("allCount").getInt() > 0) {
|
||
int start = 0;
|
||
int maxCount = 200;
|
||
while (singleResult.getAttribute("allCount").getInt() > start) {
|
||
String customerBatchNo = "AP" + System.currentTimeMillis();
|
||
log.info("CGB FLOWUNID[" + flowUnid + "]---¿ªÊ¼µÚ" + start + "ÖÁ" + (start + maxCount) + "ÌõÑ»·");
|
||
List<BizObject> income_all_list = incomeMan.createQuery("select o.ID,o.CMB_PAY_NO,o.FACT_MONEY,o.FLOWUNID,o.CONTRACT_ID,contract_info.CONTRACT_NO,contract_info.ZC_CONTRACT_NUMBER,lul.CUSTOMER_NAME,distributor.distributor_id,distributor.acc_number,distributor.open_bank,distributor.account from o join jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO contract_info on o.CONTRACT_ID = contract_info.id join jbo.com.tenwa.lease.comm.LB_UNION_LESSEE lul on contract_info.id = lul.contract_id join jbo.app.tenwa.customer.DISTRIBUTOR_ACCOUNT distributor on contract_info.distributor_id = distributor.distributor_id and distributor.is_main='Y' " +
|
||
" where o.FLOWUNID=:FLOWUNID and o.contract_id in ('" + contractIds + "') and o.PAY_TYPE = 'pay_type_out' and o.CMB_PAY_LOG is null ")
|
||
.setParameter("FLOWUNID", flowUnid).setFirstResult(start).setMaxResults(maxCount).getResultList(false);
|
||
//ÅúÁ¿×ªÕ˱¨ÎÄ
|
||
String batchPayMsgXml = createBatchPayMsg(customerBatchNo, payAccountNum, income_all_list);
|
||
//±£´æ·¢ÆðÈÕÖ¾
|
||
CGBLogAssistant.insertCGBlog(flowUnid, "pay", customerBatchNo, null, batchPayMsgXml);
|
||
HashMap<String, Object> map = new HashMap<>();
|
||
map.put("cgb_data", batchPayMsgXml);
|
||
String retMsg = HttpAssistant.post(CGBconfProperties.CGBURL, map);
|
||
if (retMsg == null) return "Á¬½ÓǰÖûúÒì³£,ÇëÁªÏµ¹ÜÀíÔ±!";
|
||
log.info("CGB [" + customerBatchNo + "] BATCHPAY RETURN XML : " + retMsg);
|
||
//¸üзµ»ØÈÕÖ¾
|
||
CGBLogAssistant.updateCGBlog(customerBatchNo, null, retMsg);
|
||
//ÅúÁ¿×ªÕ˱¨ÎĽâÎö
|
||
Map<String, String> batchPayResult = getBatchPayResult(retMsg);
|
||
if (batchPayResult.size() > 0 && "000".equals(batchPayResult.get("retCode"))) {
|
||
for (BizObject incomeObj : income_all_list) {
|
||
payBackResultHandle(incomeObj, customerBatchNo, batchPayResult, actualBo);
|
||
}
|
||
} else {
|
||
return "·¢Æð¸¶¿îʧ°Ü,¹ã·¢·µ»Ø´íÎó:[" + CodeManager.getItemName("cgb_describe", batchPayResult.get("retCode")) + "]";
|
||
}
|
||
start += 200;
|
||
}
|
||
} else {
|
||
return "Ñ¡ÔñÊý¾Ý°üº¬¸¶¿îÖÐÊý¾Ý,Çë¼ì²é£¡£¡£¡";
|
||
}
|
||
return retResult;
|
||
}
|
||
|
||
/**
|
||
* ÅúÁ¿²éѯ
|
||
*
|
||
* @param tx
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
public String batchQueryOfCGB(JBOTransaction tx) throws Exception {
|
||
BizObjectManager bm = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_DETAIL_TEMP.CLASS_NAME);
|
||
List<BizObject> bizObjects = bm.createQuery(" flowunid = :flowunid and cmb_pay_log is not null and ERRTXT not in ('¸¶¿î³É¹¦') ")
|
||
.setParameter("flowunid", flowUnid).getResultList(false);
|
||
if (bizObjects.isEmpty()) return "´ý»ØÅÌÊý¾ÝΪ¿Õ,Çë¼ì²é";
|
||
String customerBatchNo = null, customerSalarySeq = null;
|
||
for (BizObject bizObject : bizObjects) {
|
||
customerBatchNo = bizObject.getAttribute("cmb_pay_log").getString();
|
||
customerSalarySeq = bizObject.getAttribute("cmb_pay_no").getString();
|
||
String batchPayQueryXml = createBatchPayQueryMsg(customerBatchNo, customerSalarySeq);
|
||
//±£´æ·¢ÆðÈÕÖ¾
|
||
CGBLogAssistant.insertCGBlog(flowUnid, "query", customerBatchNo, customerSalarySeq, batchPayQueryXml);
|
||
HashMap<String, Object> map = new HashMap<>();
|
||
map.put("cgb_data", batchPayQueryXml);
|
||
String retMsg = HttpAssistant.post(CGBconfProperties.CGBURL, map);
|
||
if (retMsg == null) return "Á¬½ÓǰÖûúÒì³£,ÇëÁªÏµ¹ÜÀíÔ±!";
|
||
log.info("CGB customerBatchNo[" + customerBatchNo + "] customerSalarySeq[" + customerSalarySeq + "] QUERY RETURN XML : " + retMsg);
|
||
//¸üзµ»ØÈÕÖ¾
|
||
CGBLogAssistant.updateCGBlog(customerBatchNo, customerSalarySeq, retMsg);
|
||
Map<String, String> batchQueryResult = getBatchQueryResult(retMsg);
|
||
JBOTransaction tx1 = null;
|
||
try {
|
||
tx1 = JBOFactory.createJBOTransaction();
|
||
Transaction sqlca = Transaction.createTransaction(tx1);
|
||
String retCode = batchQueryResult.get("retCode");
|
||
if ("000".equals(retCode)) {
|
||
String bankstatus = batchQueryResult.get("bankstatus");
|
||
String errText = "¸¶¿îÖÐ";
|
||
String business_status = null, ebankStatus = null;
|
||
if ("6,B".indexOf(bankstatus) != -1) { //½»Ò׳ɹ¦
|
||
business_status = "31";
|
||
ebankStatus = "05";
|
||
errText = "¸¶¿î³É¹¦";
|
||
} else if ("4,7,9,C,b".indexOf(bankstatus) != -1) { //½»Ò×ʧ°Ü
|
||
business_status = "32";
|
||
ebankStatus = "04";
|
||
errText = "¸¶¿îʧ°Ü";
|
||
}
|
||
errText = batchQueryResult.get("errorreason") == null ? errText : batchQueryResult.get("errorreason");
|
||
//¸üлص÷½á¹û״̬
|
||
SqlObject sqlObject = new SqlObject("update LC_FUND_INCOME_CALLBACK_DETAIL_TEMP set ERRCOD=:errCode,ERRTXT=:errText,RTNNAR=:rtnNar where id =:id")
|
||
.setParameter("errCode", bankstatus)
|
||
.setParameter("errText", errText)
|
||
.setParameter("rtnNar", getbankstatusMsg(bankstatus))
|
||
.setParameter("id", bizObject.getAttribute("id").getString());
|
||
sqlca.executeSQL(sqlObject);
|
||
if (business_status != null) {
|
||
//²åÈëÏîÄ¿½ø¶È±í
|
||
sqlObject = new SqlObject("");
|
||
sqlObject.setOriginalSql("insert into BUSINESS_STATUS select replace(uuid(),'-',''),contract_no,'" + business_status + "','" + userId + "','" + orgId + "','" + DateAssistant.getTodayNow() + "',null,null,null,null from lb_contract_info where id = '" + bizObject.getAttribute("contract_id").getString() + "'");
|
||
sqlca.executeSQL(sqlObject);
|
||
//¸üÐÂ×ʽðʵÊÕÁÙʱ±í
|
||
sqlObject = new SqlObject("update LC_FUND_INCOME_TEMP set EBANK_STATUS=:ebankStatus,CMB_PAY_NO=:customerSalarySeq,CMB_PAY_LOG=:customerBatchNo where flowunid=:flowunid and contract_id =:contractId ")
|
||
.setParameter("ebankStatus", ebankStatus)
|
||
.setParameter("customerSalarySeq", "04".equals(ebankStatus) ? null : customerSalarySeq)
|
||
.setParameter("customerBatchNo", "04".equals(ebankStatus) ? null : customerBatchNo)
|
||
.setParameter("flowunid", flowUnid)
|
||
.setParameter("contractId", bizObject.getAttribute("contract_id").getString());
|
||
sqlca.executeSQL(sqlObject);
|
||
}
|
||
} else {
|
||
//¸üлص÷½á¹û״̬
|
||
SqlObject sqlObject = new SqlObject("update LC_FUND_INCOME_CALLBACK_DETAIL_TEMP set ERRCOD=:errCode,ERRTXT=:errText where id =:id")
|
||
.setParameter("errCode", retCode)
|
||
.setParameter("errText", CodeManager.getItemName("cgb_describe", retCode))
|
||
.setParameter("id", bizObject.getAttribute("id").getString());
|
||
sqlca.executeSQL(sqlObject);
|
||
}
|
||
tx1.commit();
|
||
} catch (Exception e) {
|
||
log.error("customerBatchNo:[" + customerBatchNo + "] customerSalarySeq:[" + customerSalarySeq + "] ²éѯ½á¹û´¦ÀíÒì³£:", e);
|
||
if (tx1 != null) try {
|
||
tx1.rollback();
|
||
} catch (JBOException e1) {
|
||
e1.printStackTrace();
|
||
}
|
||
}
|
||
}
|
||
return "success²éѯ¸¶¿î½á¹û³É¹¦";
|
||
}
|
||
|
||
/**
|
||
* ÅúÁ¿×ªÕ˱¨ÎÄ
|
||
*
|
||
* @param tx
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
private String createBatchPayMsg(String customerBatchNo, String accountNo, List<BizObject> payObjs) throws Exception {
|
||
StringBuilder sb = new StringBuilder();
|
||
sb.append(XMLDECLARE);
|
||
sb.append("<BEDC>");
|
||
sb.append("<Message>");
|
||
sb.append(commonMseeage("0033"));
|
||
sb.append("<Body>");
|
||
sb.append("<customerBatchNo>").append(customerBatchNo).append("</customerBatchNo>");//¿Í»§Åú´ÎºÅ ÆóÒµÄÚΨһ[±ØÊä] ³¤¶È20
|
||
sb.append("<accountNo>").append(accountNo).append("</accountNo>");//¸¶¿îÕ˺Š[±ØÊä]
|
||
int allCount = 0;
|
||
BigDecimal allSalary = new BigDecimal(0);
|
||
for (BizObject payObj : payObjs) {
|
||
allSalary = allSalary.add(BigDecimal.valueOf(payObj.getAttribute("fact_money").getDouble()));
|
||
allCount++;
|
||
}
|
||
sb.append("<allCount>").append(allCount).append("</allCount>");//×ܱÊÊý [±ØÊä]
|
||
sb.append("<allSalary>").append(allSalary.toString()).append("</allSalary>");//×ܽð¶î µ¥Î»£ºÔª[±ØÊä]
|
||
sb.append("<records>");
|
||
int i = 0;
|
||
String customerSalarySeq = null, customerName = null, contractNo = null, contractNoZC = null, remark = null;
|
||
for (BizObject payObj : payObjs) {
|
||
customerSalarySeq = customerBatchNo + String.format("%04d", ++i);
|
||
customerName = payObj.getAttribute("CUSTOMER_NAME").getString();
|
||
contractNo = payObj.getAttribute("contract_no").getString();
|
||
contractNoZC = payObj.getAttribute("ZC_CONTRACT_NUMBER").getString();
|
||
remark = "".equals(contractNoZC) ? customerName + "-" + contractNo : customerName + "-" + contractNoZC + "-" + contractNo;
|
||
sb.append("<record>");
|
||
sb.append("<customerSalarySeq>").append(customerSalarySeq).append("</customerSalarySeq>");//¿Í»§Åú´Î×ÓÁ÷Ë®ºÅ ÆóÒµÄÚΨһ[±ØÊä] ³¤¶È20
|
||
sb.append("<transType>").append(checkCGB(payObj.getAttribute("open_bank").getString()) ? "0" : "1").append("</transType>"); //½»Ò×ÀàÐÍ 0£ºÐÐÄÚ 1£º¿çÐÐ [±ØÊä]
|
||
sb.append("<inaccname>").append(payObj.getAttribute("account")).append("</inaccname>"); //ÊÕ¿îÈË [±ØÊä]
|
||
sb.append("<inacc>").append(payObj.getAttribute("acc_number")).append("</inacc>"); //ÊÕ¿îÕ˺Š[±ØÊä]
|
||
sb.append("<inaccbank>").append(payObj.getAttribute("open_bank").getString()).append("</inaccbank>"); //ÊÕ¿îÒøÐÐ [±ØÊä]
|
||
sb.append("<inaccadd>").append("").append("</inaccadd>"); //ÊÕ¿îÒøÐеØÖ·
|
||
sb.append("<bankCode>").append("").append("</bankCode>"); //ÁªÐкŠ¿çÐÐʱ [±ØÊä] ¹ã·¢×Ô¶¯¸ù¾ÝÒøÐÐÃû³ÆÆ¥Åä--¼¼Êõ»Ø¸´
|
||
sb.append("<salary>").append(payObj.getAttribute("fact_money").getString()).append("</salary>"); //½ð¶î µ¥Î»£ºÔª [±ØÊä]
|
||
sb.append("<remark>").append(payObj.getAttribute("id").getString()).append("</remark>"); //±¸×¢ °ó¶¨Ö§¸¶¶ÔÏóÖ÷¼ü
|
||
sb.append("<comment>").append(remark).append("</comment>"); //¸½ÑÔ ¿Í»§Ãû+ºÏ×÷·½ºÏͬºÅ+°²ÅôºÏͬºÅ
|
||
sb.append("</record>");
|
||
payObj.setAttributeValue("CMB_PAY_NO", customerSalarySeq);
|
||
}
|
||
sb.append("</records>");
|
||
sb.append("</Body>");
|
||
sb.append("</Message>");
|
||
sb.append("</BEDC>");
|
||
log.info("CGB [" + customerBatchNo + "] BATCHPAY SEND XML : " + sb.toString());
|
||
return sb.toString();
|
||
}
|
||
|
||
/**
|
||
* ½âÎöÅúÁ¿×ªÕ˽á¹û
|
||
*
|
||
* @param strXML
|
||
* @return
|
||
*/
|
||
private Map<String, String> getBatchPayResult(String strXML) {
|
||
Map<String, String> res = new HashMap<String, String>();
|
||
//»ñÈ¡Åú´ÎºÅ
|
||
Pattern pm = Pattern.compile("(?<=<customerBatchNo>)([\\S\\s]*?)(?=</customerBatchNo>)");
|
||
Matcher mm = pm.matcher(strXML);
|
||
if (mm.find()) {
|
||
res.put("customerBatchNo", mm.group());
|
||
}
|
||
pm = Pattern.compile("(?<=<retCode>)([\\S\\s]*?)(?=</retCode>)");
|
||
mm = pm.matcher(strXML);
|
||
if (mm.find()) {
|
||
res.put("retCode", mm.group());
|
||
}
|
||
return res;
|
||
}
|
||
|
||
/**
|
||
* ÅúÁ¿×ªÕ˲éѯ±¨ÎÄ
|
||
*
|
||
* @param customerBatchNo
|
||
* @param customerSalarySeq
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
private String createBatchPayQueryMsg(String customerBatchNo, String customerSalarySeq) throws Exception {
|
||
StringBuilder sb = new StringBuilder();
|
||
sb.append(XMLDECLARE);
|
||
sb.append("<BEDC>");
|
||
sb.append("<Message>");
|
||
sb.append(commonMseeage("0034"));
|
||
sb.append("<Body>");
|
||
sb.append("<customerBatchNo>").append(customerBatchNo).append("</customerBatchNo>"); //¿Í»§Åú´ÎºÅ [±ØÊä]
|
||
sb.append("<customerSalarySeq>").append(customerSalarySeq == null ? "" : customerSalarySeq).append("</customerSalarySeq>"); //¿Í»§Åú´Î×ÓÁ÷Ë®ºÅ
|
||
sb.append("</Body>");
|
||
sb.append("</Message>");
|
||
sb.append("</BEDC>");
|
||
log.info("CGB customerBatchNo[" + customerBatchNo + "] customerSalarySeq[" + customerSalarySeq + "] QUERY SEND XML : " + sb.toString());
|
||
return sb.toString();
|
||
}
|
||
|
||
|
||
/**
|
||
* ½âÎö²éѯ½á¹û
|
||
*
|
||
* @param strXML
|
||
* @return
|
||
*/
|
||
private Map<String, String> getBatchQueryResult(String strXML) {
|
||
Map<String, String> res = new HashMap<String, String>();
|
||
Pattern pm = Pattern.compile("(?<=<retCode>)([\\S\\s]*?)(?=</retCode>)");
|
||
Matcher mm = pm.matcher(strXML);
|
||
if (mm.find()) {
|
||
res.put("retCode", mm.group());
|
||
}
|
||
//»ñÈ¡Åú´ÎºÅ
|
||
pm = Pattern.compile("(?<=<customerSalarySeq>)([\\S\\s]*?)(?=</customerSalarySeq>)");
|
||
mm = pm.matcher(strXML);
|
||
if (mm.find()) {
|
||
res.put("customerSalarySeq", mm.group());
|
||
}
|
||
pm = Pattern.compile("(?<=<bankstatus>)([\\S\\s]*?)(?=</bankstatus>)");
|
||
mm = pm.matcher(strXML);
|
||
if (mm.find()) {
|
||
res.put("bankstatus", mm.group());
|
||
}
|
||
pm = Pattern.compile("(?<=<errorreason>)([\\S\\s]*?)(?=</errorreason>)");
|
||
mm = pm.matcher(strXML);
|
||
if (mm.find()) {
|
||
if (mm.group().length() > 0) res.put("errorreason", mm.group());
|
||
}
|
||
return res;
|
||
}
|
||
|
||
|
||
/**
|
||
* ¹«¹²±¨ÎÄÍ·Æ´½Ó
|
||
*
|
||
* @param tranCode ½»Ò×Âë
|
||
* @return
|
||
*/
|
||
private String commonMseeage(String tranCode) throws Exception {
|
||
StringBuilder sb = new StringBuilder();
|
||
sb.append("<commHead>");
|
||
sb.append("<tranCode>").append(tranCode).append("</tranCode>");//½»Ò×Âë
|
||
sb.append("<cifMaster>").append(CGBconfProperties.CIFMASTER).append("</cifMaster>");//¿Í»§ºÅ
|
||
sb.append("<entSeqNo>").append("CGB").append(System.currentTimeMillis()).append("</entSeqNo>");//ÆóÒµ²ÆÎñϵͳÁ÷Ë®ºÅ ÆóÒµ²ÆÎñϵͳ×Ô¼º²úÉúµÄÁ÷Ë®ºÅ,ÿÌìΨһ ³¤¶È20
|
||
sb.append("<tranDate>").append(DateAssistant.getFormatDate("yyyyMMdd")).append("</tranDate>");//ÈÕÆÚ
|
||
sb.append("<tranTime>").append(DateAssistant.getFormatDate("HHmmss")).append("</tranTime>");//ʱ¼ä
|
||
sb.append("<retCode></retCode>");//·µ»ØÂë,ÇëÇó±¨ÎÄÊÇ,ĬÈÏΪ¿Õ
|
||
sb.append("<entUserId>").append(CGBconfProperties.ENTUSERID).append("</entUserId>");//²Ù×÷Ô±
|
||
sb.append("<password> <![CDATA[").append(CGBconfProperties.PASSWORD).append("]]></password>");//²Ù×÷ÃÜÂë
|
||
sb.append("</commHead>");
|
||
return sb.toString();
|
||
}
|
||
|
||
/**
|
||
* ¼ì²éÊÇ·ñ¹ã·¢ÒøÐÐÕ˺Å
|
||
*
|
||
* @param str
|
||
* @return
|
||
*/
|
||
private boolean checkCGB(String str) {
|
||
if (str.indexOf("¹ã·¢") != -1) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Ö§¸¶»Øµ÷½á¹û´¦Àí
|
||
*/
|
||
private void payBackResultHandle(BizObject payObj, String customerBatchNo, Map<String, String> retResult, BizObject actualObj) {
|
||
JBOTransaction tx = null;
|
||
String serialNum = null;
|
||
try {
|
||
serialNum = payObj.getAttribute("CMB_PAY_NO").getString();
|
||
tx = JBOFactory.createJBOTransaction();
|
||
Transaction sqlca = Transaction.createTransaction(tx);
|
||
//ÐÞ¸ÄÉϴοۿî¼Ç¼,±ÜÃâÏÔʾ¶àÌõÊý¾Ý
|
||
SqlObject sqlObject = new SqlObject("update LC_FUND_INCOME_CALLBACK_DETAIL_TEMP set contract_id = null where flowunid=:flowunid and contract_id =:contractId")
|
||
.setParameter("flowunid", flowUnid).setParameter("contractId", payObj.getAttribute("contract_id").getString());
|
||
sqlca.executeSQL(sqlObject);
|
||
//Ìí¼ÓеĿۿî¼Ç¼
|
||
sqlObject = new SqlObject("insert into LC_FUND_INCOME_CALLBACK_DETAIL_TEMP (id,FLOWUNID,CMB_PAY_LOG,CMB_PAY_NO,ERRTXT,CONTRACT_ID,DISTRIBUTOR_ID,INPUTUSERID,INPUTORGID,INPUTTIME) "
|
||
+ " values (replace(uuid(),'-',''),:flowunid,:cmbPayLog,:serialNum,'¸¶¿îÖÐ',:contractId,:distributorId,:userId,:orgId,:inputTime)")
|
||
.setParameter("flowunid", flowUnid)
|
||
.setParameter("cmbPayLog", customerBatchNo) //Åú´ÎºÅ
|
||
.setParameter("serialNum", serialNum) //ÐòºÅ
|
||
.setParameter("contractId", payObj.getAttribute("contract_id").getString()) //ºÏͬid
|
||
.setParameter("distributorId", payObj.getAttribute("distributor_id").getString())//¾ÏúÉÌid
|
||
.setParameter("userId", userId)
|
||
.setParameter("orgId", orgId)
|
||
.setParameter("inputTime", DateAssistant.getTodayNow());
|
||
sqlca.executeSQL(sqlObject);
|
||
//¸üÐÂÅú´ÎºÅ£¬ÐòºÅµ½Ö§¸¶Ã÷ϸÊý¾Ý
|
||
sqlObject = new SqlObject("update LC_FUND_INCOME_TEMP set CMB_PAY_LOG=:customerBatchNo,CMB_PAY_NO=:serialNum,bank=:bank,account=:account,acc_number=:accNumber where id = :id ")
|
||
.setParameter("customerBatchNo", customerBatchNo)
|
||
.setParameter("serialNum", serialNum)
|
||
.setParameter("bank", actualObj.getAttribute("bank").getString())//±¾·½ÒøÐÐ
|
||
.setParameter("account", actualObj.getAttribute("account").getString())//±¾·½ÕË»§
|
||
.setParameter("accNumber", actualObj.getAttribute("acc_number").getString())//±¾·½Õ˺Å
|
||
.setParameter("id", payObj.getAttribute("id").getString());
|
||
sqlca.executeSQL(sqlObject);
|
||
tx.commit();
|
||
} catch (Exception e) {
|
||
log.error("customerBatchNo:[" + customerBatchNo + "] customerSalarySeq:[" + serialNum + "] ÅúÁ¿×ªÕ˽á¹û´¦ÀíÒì³£!", e);
|
||
if (tx != null) try {
|
||
tx.rollback();
|
||
} catch (JBOException e1) {
|
||
e1.printStackTrace();
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* ½»Ò×´¦Àí״̬
|
||
*
|
||
* @param bankstatus
|
||
* @return
|
||
*/
|
||
private String getbankstatusMsg(String bankstatus) {
|
||
String msg = null;
|
||
//ÐÐÄÚ»ã¿î:6,7,8 ¿çÐлã¿î:A,B,C,E
|
||
switch (bankstatus) {
|
||
case "6":
|
||
msg = "Ö÷»ú½»Ò׳ɹ¦";
|
||
break;
|
||
case "7":
|
||
msg = "Ö÷»ú½»Ò×ʧ°Ü";
|
||
break;
|
||
case "8":
|
||
msg = "״̬δ֪,ûÓÐÊÕµ½ºǫ́ϵͳ·µ»ØµÄÓ¦´ð";
|
||
break;
|
||
case "A":
|
||
msg = "Ö§¸¶ÏµÍ³ÕýÔÚ´¦Àí";
|
||
break;
|
||
case "B":
|
||
msg = "´¦Àí³É¹¦";
|
||
break;
|
||
case "C":
|
||
msg = "´¦Àíʧ°Ü";
|
||
break;
|
||
case "E":
|
||
msg = "´ó¶î²éÖ¤";
|
||
break;
|
||
case "9":
|
||
msg = "²é֤ȡÏû½»Ò×";
|
||
break;
|
||
default:
|
||
msg = bankstatus;
|
||
}
|
||
return msg;
|
||
}
|
||
|
||
public String vaildate(Transaction sqlCa) throws Exception {
|
||
ASResultSet as = sqlCa.getASResultSet("select count(1) as nums," +
|
||
"sum(case when cmb_pay_log is not null or locate(RTNFLG,'F')>0 and length(RTNFLG)>0 then 0 else 1 end ) cmb_succ_num," +
|
||
"sum(case when cmb_pay_log is null or locate(ERRCOD,'4,7,9,C,b,W')>0 and length(ERRCOD)>0 then 0 else 1 end ) cgb_succ_num" +
|
||
" from LC_FUND_INCOME_CALLBACK_DETAIL_TEMP where flowunid = '" + flowUnid + "'");
|
||
if (as.next()) {
|
||
int nums = as.getInt("nums");
|
||
int CMBNums = as.getInt("cmb_succ_num"); //ÕÐÉÌ·¢Æð³É¹¦Êý
|
||
int CGBNums = as.getInt("cgb_succ_num"); //¹ã·¢·¢Æð³É¹¦Êý
|
||
if (nums > 0 && (CMBNums > 0 || CGBNums > 0)) {
|
||
return "ÒÑ·¢ÆðÖ§¸¶,½ûÖ¹±ä¸ü";
|
||
}
|
||
}
|
||
return "succ";
|
||
}
|
||
}
|