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.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; 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 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); List 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 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 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("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("", ""); 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 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); } map.put("code", "0") ; map.put("msg", "查询结果刷新成功") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); }else { sql(); map.put("code", "1") ; map.put("msg", "没有找到相关数据,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } }else { sql(); map.put("code", "1") ; map.put("msg", result.getInfo().getERRMSG()) ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } }else { sql(); map.put("code", "1") ; map.put("msg", "暂无支付申请发起成功数据,请检查") ; JSONObject jsonObj = JSONObject.fromObject(map); return jsonObj.toString(); } } public void sql() throws JBOException{ 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.DISTRIBUTOR_ID=lci.distributor_id" +" and O.FLOWUNID=tt.FLOWUNID set O.EBANK_STATUS=case when tt.RTNFLG='S' then '05' else '04' end where O.FLOWUNID='"+FLOWUNID+"'" ; JBOFactory.createBizObjectQuery(LC_FUND_INCOME_TEMP.CLASS_NAME,sql2).executeUpdate(); } /** * 将银行返回的结果保存项目进度表 * 放款成功和放款失败 */ private void saveBusinessStatus(String flowuid) { try { List 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) { JBOTransaction tx = null; ASUser asUser = null; BizObjectManager bsbom; try { bsbom = JBOFactory.getBizObjectManager(BUSINESS_STATUS.CLASS_NAME,tx); BizObject bsbo = bsbom.newObject(); bsbo.setAttributeValue(BUSINESS_STATUS.contract_number,contractNumber); bsbo.setAttributeValue(BUSINESS_STATUS.business_status, status); bsbo.setAttributeValue(BUSINESS_STATUS.inputuserid,asUser.getUserID()); bsbo.setAttributeValue(BUSINESS_STATUS.inputtime,StringFunction.getTodayNow()); bsbo.setAttributeValue(BUSINESS_STATUS.inputorgid,asUser.getOrgID()); bsbom.saveObject(bsbo); } catch (JBOException e) { e.printStackTrace(); } } }