310 lines
12 KiB
Java
310 lines
12 KiB
Java
package com.tenwa.sdk.controller;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import com.amarsoft.are.jbo.BizObject;
|
|
import com.amarsoft.are.jbo.BizObjectManager;
|
|
import com.amarsoft.are.jbo.BizObjectQuery;
|
|
import com.amarsoft.are.jbo.JBOException;
|
|
import com.amarsoft.are.jbo.JBOFactory;
|
|
import com.amarsoft.are.jbo.JBOTransaction;
|
|
import com.amarsoft.are.util.StringFunction;
|
|
import com.amarsoft.awe.Configure;
|
|
import com.amarsoft.awe.util.Transaction;
|
|
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.SDKNtstLinFxVo;
|
|
import com.tenwa.sdk.VO.SDKToCheckVO;
|
|
import com.tenwa.sdk.utils.HttpRequest;
|
|
import com.tenwa.sdk.utils.XMLStream;
|
|
import com.thoughtworks.xstream.XStream;
|
|
|
|
import jbo.com.tenwa.lease.carbrand.BUSINESS_STATUS;
|
|
import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO;
|
|
import jbo.app.tenwa.calc.LC_FUND_INCOME_TEMP;
|
|
import jbo.com.tenwa.entity.comm.own.OWN_ACCOUNT;
|
|
import jbo.com.tenwa.lease.comm.LC_FUND_INCOME_CALLBACK_DETAIL_TEMP;
|
|
import net.sf.json.JSONObject;
|
|
|
|
import com.amarsoft.context.ASUser;
|
|
|
|
public class CmbToCallbackController extends BaseFlowStartAction {
|
|
private String FLOWUNID ; //Á÷³ÌºÅ
|
|
private String CallbackStatus;
|
|
private String CurUserID;
|
|
|
|
|
|
public String getCurUserID() {
|
|
return CurUserID;
|
|
}
|
|
|
|
public void setCurUserID(String curUserID) {
|
|
CurUserID = curUserID;
|
|
}
|
|
|
|
public String getFLOWUNID() {
|
|
return FLOWUNID;
|
|
}
|
|
|
|
public void setFLOWUNID(String fLOWUNID) {
|
|
FLOWUNID = fLOWUNID;
|
|
}
|
|
|
|
|
|
public String getCallbackStatus() {
|
|
return CallbackStatus;
|
|
}
|
|
|
|
public void setCallbackStatus(String callbackStatus) {
|
|
CallbackStatus = callbackStatus;
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
public 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();
|
|
}
|
|
/*
|
|
* ±¾·½·Å¿îÕË»§»ñÈ¡######¿ªÊ¼
|
|
*/
|
|
BizObjectManager accountManager = JBOFactory.getBizObjectManager(OWN_ACCOUNT.CLASS_NAME);
|
|
List<BizObject> accountBoList = accountManager.createQuery("select o.acc_number,o.acc_bank,o.acc_name,o.branch_code,oi.OWN_NAME from o left join jbo.com.tenwa.entity.comm.own.OWN_INFO oi on o.own_id = oi.OWN_NUMBER where o.money_type='01' and o.state_='0010' and o.acc_type='0010' and o.FbSdk='Y' and (o.account_type='out_account' or o.account_type='inAndOut_account') and oi.OWN_NAME='°²Åô¹ú¼ÊÈÚ×Ê×âÁÞ£¨ÉîÛÚ£©ÓÐÏÞ¹«Ë¾'").getResultList(false);
|
|
if( accountBoList==null ) {
|
|
map.put("code", "1") ;
|
|
map.put("msg", "ûÓÐÆ¥ÅäµÄ±¾·½ÕË»§,ÇëÔÚ±¾·½ÕË»§Öмì²é£¡") ;
|
|
JSONObject jsonObj = JSONObject.fromObject(map);
|
|
return jsonObj.toString();
|
|
}
|
|
if( accountBoList!=null && accountBoList.size()>1 ) {
|
|
map.put("code", "1") ;
|
|
map.put("msg", "ÆôÓÃµÄÆû³µÀà·Å¿îÕË»§Ö»ÄÜͬʱ´æÔÚÒ»¸ö,ÇëÔÚ±¾·½ÕË»§Öмì²é£¡") ;
|
|
JSONObject jsonObj = JSONObject.fromObject(map);
|
|
return jsonObj.toString();
|
|
}
|
|
BizObject accountBo = accountBoList.get(0);
|
|
/*
|
|
* ±¾·½·Å¿îÕË»§»ñÈ¡######½áÊø
|
|
*/
|
|
//°²ÅôÒªÇó²ÉÓù̶¨Ð´ËÀÖµ¡£
|
|
//String LGNNAM = accountBo.getAttribute("OWN_NAME").toString();
|
|
|
|
// String LGNNAM = "°²Åô¾°ì";
|
|
// String LGNNAM = "ÒøÆóÖ±Á¬²âÊÔÓû§113";
|
|
Configure config = Configure.getInstance();
|
|
String LGNNAM = config.getConfigure("LGNNAM");
|
|
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 call_back_list_bom = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_DETAIL_TEMP.CLASS_NAME);
|
|
String sql = "select * from o where ( REQNBR is not null and REQNBR<>'' ) and FLOWUNID=:FLOWUNID ";
|
|
BizObjectQuery check_list_boo = call_back_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("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/>", "");
|
|
|
|
HttpRequest request = new HttpRequest();
|
|
//HttpRequest request = new HttpRequest("http://172.16.20.242:65188");
|
|
//HttpRequest request = new HttpRequest("http://192.168.13.162:65188");
|
|
//request.setTimeout(3000);
|
|
|
|
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_TEMP.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());
|
|
this.initTabeUserInfo(callback_detail_bo);
|
|
callback_detail_bom.saveObject(callback_detail_bo);
|
|
/*String RTNFLG = callback_detail.getRTNFLG();
|
|
String sql1="";
|
|
if("S".equals(RTNFLG)){
|
|
sql1 = "update O set O.EBANK_STATUS='05' where O.FLOWUNID='"+FLOWUNID+"'";
|
|
}else{
|
|
sql1 = "update O set O.EBANK_STATUS='04' where O.FLOWUNID='"+FLOWUNID+"'";
|
|
}
|
|
JBOFactory.createBizObjectQuery(LC_FUND_INCOME_TEMP.CLASS_NAME,sql1).executeUpdate();*/
|
|
//±£´æÏîÄ¿½ø¶È±í
|
|
saveBusinessStatus(FLOWUNID);
|
|
}
|
|
tx.commit();
|
|
sql(tx);
|
|
map.put("code", "0") ;
|
|
map.put("msg", "²éѯ½á¹ûˢгɹ¦") ;
|
|
JSONObject jsonObj = JSONObject.fromObject(map);
|
|
return jsonObj.toString();
|
|
}else {
|
|
sql(tx);
|
|
map.put("code", "1") ;
|
|
map.put("msg", "ûÓÐÕÒµ½Ïà¹ØÊý¾Ý,Çë¼ì²é") ;
|
|
JSONObject jsonObj = JSONObject.fromObject(map);
|
|
return jsonObj.toString();
|
|
}
|
|
}else {
|
|
sql(tx);
|
|
map.put("code", "1") ;
|
|
map.put("msg", result.getInfo().getERRMSG()) ;
|
|
JSONObject jsonObj = JSONObject.fromObject(map);
|
|
return jsonObj.toString();
|
|
}
|
|
|
|
}else {
|
|
sql(tx);
|
|
map.put("code", "1") ;
|
|
map.put("msg", "ÔÝÎÞÖ§¸¶ÉêÇë·¢Æð³É¹¦Êý¾Ý,Çë¼ì²é") ;
|
|
JSONObject jsonObj = JSONObject.fromObject(map);
|
|
return jsonObj.toString();
|
|
}
|
|
|
|
}
|
|
/**
|
|
* ±éÀúÑ»·¸¶¿îÐÅÏ¢
|
|
* ·Å¿î³É¹¦ºÍ·Å¿îʧ°Ü
|
|
*/
|
|
public void sql(JBOTransaction tx) throws JBOException{
|
|
BizObjectManager callback_detail_bom1 = JBOFactory.getBizObjectManager(LC_FUND_INCOME_CALLBACK_DETAIL_TEMP.CLASS_NAME) ;
|
|
tx.join(callback_detail_bom1);
|
|
List<BizObject> callback_detail_di = callback_detail_bom1.createQuery("select o.CONTRACT_ID from o where FLOWUNID=:FLOWUNID").setParameter("FLOWUNID", FLOWUNID).getResultList(false);
|
|
String sql1="update O set O.EBANK_STATUS='04' where O.FLOWUNID='"+FLOWUNID+"'";
|
|
JBOFactory.createBizObjectQuery(LC_FUND_INCOME_TEMP.CLASS_NAME,sql1).executeUpdate();
|
|
String contract_id=null;
|
|
if(callback_detail_di!=null||(!"".equals(callback_detail_di))){
|
|
for(BizObject di:callback_detail_di){
|
|
contract_id=di.getAttribute("CONTRACT_ID").toString();
|
|
String sql2 = "update O left join jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO lci on lci.id=O.contract_id"
|
|
+" left join jbo.com.tenwa.lease.comm.LC_FUND_INCOME_CALLBACK_DETAIL_TEMP tt on tt.CONTRACT_ID=lci.id"
|
|
+" and O.FLOWUNID=tt.FLOWUNID set O.EBANK_STATUS=case when tt.RTNFLG='S' then '05' when tt.RTNFLG is null or tt.RTNFLG='' then '03' else '04' end where O.FLOWUNID='"+FLOWUNID+"'and tt.CONTRACT_ID='"+contract_id+"'" ;
|
|
JBOFactory.createBizObjectQuery(LC_FUND_INCOME_TEMP.CLASS_NAME,sql2).executeUpdate();
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* ½«ÒøÐзµ»ØµÄ½á¹û±£´æÏîÄ¿½ø¶È±í
|
|
* ·Å¿î³É¹¦ºÍ·Å¿îʧ°Ü
|
|
*/
|
|
private void saveBusinessStatus(String flowuid) {
|
|
|
|
try {
|
|
List<BizObject> successList = JBOFactory.createBizObjectQuery(LC_FUND_INCOME_TEMP.CLASS_NAME, "flowunid=:flowunid").setParameter("flowunid", flowuid).getResultList(false);
|
|
if(successList!=null && successList.size()>0) {
|
|
|
|
for (BizObject bizObject : successList) {
|
|
String EBANK_STATUS = bizObject.getAttribute("EBANK_STATUS").toString();
|
|
if(!(EBANK_STATUS==null || "".equals(EBANK_STATUS))){
|
|
String projectId = bizObject.getAttribute("project_id").toString();
|
|
BizObject contractInfo = JBOFactory.createBizObjectQuery(LB_CONTRACT_INFO.CLASS_NAME, "project_id=:project_id").setParameter("project_id", projectId).getSingleResult(false);
|
|
String contract_number = contractInfo.getAttribute("contract_number").toString();
|
|
if("05".equals(EBANK_STATUS)){
|
|
save(contract_number,"31");
|
|
}else if("04".equals(EBANK_STATUS)){
|
|
save(contract_number,"32");
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
} catch (JBOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
/**
|
|
* ÈëÏîÄ¿½ø¶È±í
|
|
* @param contractNumber
|
|
* @param status
|
|
*/
|
|
private void save(String contractNumber,String status) {
|
|
Transaction tx = null;
|
|
JBOTransaction jbot = null;
|
|
BizObjectManager bsbom;
|
|
try {
|
|
ASUser asUser = ASUser.getUser(CurUserID, tx);
|
|
jbot = JBOFactory.createJBOTransaction();
|
|
bsbom = JBOFactory.getBizObjectManager(BUSINESS_STATUS.CLASS_NAME,jbot);
|
|
BizObject bsbo = bsbom.newObject();
|
|
|
|
bsbo.setAttributeValue(BUSINESS_STATUS.contract_number,contractNumber);
|
|
bsbo.setAttributeValue(BUSINESS_STATUS.business_status, status);
|
|
bsbo.setAttributeValue(BUSINESS_STATUS.inputuserid,this.getCurUserID());
|
|
bsbo.setAttributeValue(BUSINESS_STATUS.inputtime,StringFunction.getTodayNow());
|
|
bsbo.setAttributeValue(BUSINESS_STATUS.inputorgid,asUser.getOrgID());
|
|
bsbom.saveObject(bsbo);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}finally{
|
|
if(tx!=null){
|
|
try {
|
|
tx.commit();
|
|
tx.disConnect();
|
|
tx=null;
|
|
} catch (JBOException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
if(jbot!=null){
|
|
try {
|
|
jbot.commit();
|
|
jbot=null;
|
|
} catch (JBOException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|