public void storeSumBlcTrans(Context context) { if (context.getData("accUsableBalance") == null || context.getData("accUsableBalance").equals("")) { context.setData("storeSumBlc", ""); } else { context.setData("storeSumBlc", context.getData("accUsableBalance")); } }
/** * 组主机需要的报文 * * @param ctx */ protected void setReqMsgInfo(Context ctx) { logger.info("-----> CardStsQueryAction setReqMsgInfo begin <-----"); ctx.setData("Function", "0"); // 功能:0-不返回卡产品和主附卡信息 1-返回卡产品和主附卡信息 ctx.setData("CardBehavior", "00000"); // 卡行为:默认00000 ctx.setData("CardNo", ctx.getData(ItmFields.CARDNO)); // 卡号 ctx.setData( "AccNoInputModel", "01"); // 账号输入方式:02-磁条读入01-手工方式 05-IC卡,且磁条信息可靠08-芯片卡fallback交易07-qPBOC快速支付交易 // 91-非接触式磁条读入(MSD)98-标准PBOC 借贷记IC 卡读入(非接触式)开即办IC卡时需要 ctx.setData("AccKind", "0"); // 账户种类: 0-记账账户 1-电子现金账户 2-卡储账户 3-B股账号 4-保证金 5-专用款项虚拟户 logger.info("-----> CardStsQueryAction setReqMsgInfo end <-----"); }
@Override protected void handleSuccessCase(Context ctx) { // TODO Auto-generated method stub @SuppressWarnings("unchecked") Map<String, Object> ecupResponse = (Map<String, Object>) ctx.getData(ItmFields.ECUPRESPONSE); ctx.setDataMap(ecupResponse); ctx.setData("resMsg", "查询自动还款状态成功"); }
/** * * 核心成功情况处理 * * @param ctx */ @SuppressWarnings("unchecked") protected void handleSuccessCase(Context ctx) { logger.info("-----> CardStsQueryAction handleSuccessCase begin <---"); Map<String, Object> ecupResponse = (Map<String, Object>) ctx.getData(ItmFields.ECUPRESPONSE); String cardSts = (String) ecupResponse.get("CardSttWord1"); // 卡状态字1 logger.info("the card's status information:" + cardSts); /* 根据卡状态字的不同位数含义判断卡是否异常状态 */ // 1--正式挂失 2--应急挂失 3--密码挂失 4--集中挂失暂封 if (ItmConstants.STS_EXCEPTION.equals(cardSts.substring(0, 1)) || ItmConstants.STS_EXCEPTION.equals(cardSts.substring(1, 2)) || ItmConstants.STS_EXCEPTION.equals(cardSts.substring(2, 3)) || ItmConstants.STS_EXCEPTION.equals(cardSts.substring(3, 4))) { cardSts = ItmConstants.STS_EXCEPTION; // 异常 } else { cardSts = ItmConstants.STS_NORMAL; // 正常 } /* 卡状态正常需再查询卡的账户状态 */ /* 根据卡的客户账户状态字的不同位数含义判断账户是否异常状态 */ if (ItmConstants.STS_NORMAL.equals(cardSts)) { String accountSts = (String) ecupResponse.get("AccSttWord"); // 账户状态字 logger.info("the card of account's status information:" + accountSts); // 当获取有效的账户状态字时(长度大于21位),根据账户状态字的不同位数含义判断卡是否异常状态 // 02-全部法律冻结 03-全部内部止付 05-冻结暂封 09-存款证明止付 21-保全冻结 if (accountSts.length() >= 21) { if (ItmConstants.STS_EXCEPTION.equals(accountSts.substring(1, 2)) || ItmConstants.STS_EXCEPTION.equals(accountSts.substring(2, 3)) || ItmConstants.STS_EXCEPTION.equals(accountSts.substring(4, 5)) || ItmConstants.STS_EXCEPTION.equals(accountSts.substring(8, 9)) || ItmConstants.STS_EXCEPTION.equals(accountSts.substring(20, 21))) { cardSts = ItmConstants.STS_EXCEPTION; // 异常 } else { cardSts = ItmConstants.STS_NORMAL; // 正常 } } } ctx.setData(ItmFields.CRDSTS, cardSts); ctx.setData("mpFlg", ecupResponse.get("MainCardFlg")); // 主附卡标志: 0-主卡 1-附属卡 logger.info("the acNo[" + ctx.getData(ItmFields.CARDNO) + "] card status:" + cardSts); logger.info("-----> CardStsQueryAction handleSuccessCase end <---"); }
/** * 双利帐户查询 * * @param context * @author sujie */ public void accountQuery(Context context) { try { // set massage data // setHeader(context); // set massage body setAccountMsgBody(context); // send to personal gateway List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); multiSubmit(context, list); // response handler handleSuccessCase(context, list); } catch (Exception e) { logger.error("-----> ShuangliAction queryCreditNo Exception : ", e); context.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR); context.setData(ItmFields.RESCODE, ItmRespCode.COMMON_SYSERROR); } }
/** * 双利理财转卡 * * @param context * @author sujie */ public void slTrans(Context context) { try { // set massage head // setHeader(context); // set massage body setTransMsgBody(context); // send to personal gateway esbpEcupSender.sendAndReceive(context); // response handler responseHandler(context); } catch (Exception e) { logger.error("-----> ShuangliAction Trans Exception : ", e); context.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR); context.setData(ItmFields.RESCODE, ItmRespCode.COMMON_SYSERROR); } }
/** * 重复发送交易 * * @param ctx */ @SuppressWarnings("unchecked") private void multiSubmit(Context ctx, List<Map<String, Object>> list) { esbpEcupSender.sendAndReceive(ctx); if (ItmConstants.RESFLAG_SUCCESS.equals(ctx.getData(ItmFields.RESFLAG))) { Map<String, Object> ecupResponse = (Map<String, Object>) ctx.getData(ItmFields.ECUPRESPONSE); ArrayList<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); int count = 0; if (("ECUPQY0067").equals(ecupResponse.get("ServiceId").toString())) { result = (ArrayList<Map<String, Object>>) ecupResponse.get("CardInfResult"); count = Integer.parseInt((String) ecupResponse.get("AccCount")); for (int i = 0; i < count; i++) { Map<String, Object> map = result.get(i); Map<String, Object> data = new HashMap<String, Object>(); data.put("accCstNo", map.get("TallyAccNo")); data.put("serialNo", map.get("AccSerial")); // 小序号 data.put("corpus", map.get("AvaBal")); // 账户可用余额 data.put("openAccDate", map.get("CreateDate")); // 开户日期 data.put("startDate", map.get("IntstBeginDate")); // 起息日期 data.put("currType", map.get("CurrTyp")); // 币种 data.put("depositTerm", map.get("DepPer")); // 通知类型 /*data.put("interest", map.get(""));//利息 data.put("interestTax", map.get(""));//利息税 data.put("corpusIntrsTotSum", map.get(""));// */ // data.put("storeSumBlc", map.get("AvaBal"));////账户可用余额 list.add(data); } if ("0".equals(ecupResponse.get("EndFlg")) && count == 10) { ctx.setData("OSEAccSerial", ecupResponse.get("OSEAccSerial")); ctx.setData("EndFlg", ecupResponse.get("EndFlg")); multiSubmit(ctx, list); } } } }
/** * 双利理财签约 * * @param context * @author sujie */ public void slSign(Context context) { try { // 查询会计日 int act = Integer.parseInt(actDate.getCoreActDate()); Log.debug("------> 核心会计日期:" + act); context.setData("actDate", act); // 会计日期查询失败 if (Integer.valueOf(act) == 0) { context.setData("resFlag", "E"); context.setData("resMsg", "签约失败\n\r失败原因:后台获取会计日期失败"); return; } // 失效日期 int endDate = Integer.parseInt((String) context.getData("endDate")); if (act <= endDate) { // set massage head // setHeader(context); // set massage body setSingMsgBody(context); // send to personal gateway esbpEcupSender.sendAndReceive(context); // response handler responseHandler(context); } else { String actStr = actDate.getCoreActDate(); String str1 = actStr.substring(0, 4); String str2 = actStr.substring(4, 6); String str3 = actStr.substring(6); actStr = str1 + "年" + str2 + "月" + str3 + "日"; context.setData("resFlag", "E"); context.setData("resMsg", "签约失败\n\r失败原因:会计日" + actStr + "必须在截止日期之前"); } } catch (Exception e) { logger.error("-----> ShuangliAction Query Exception : ", e); context.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR); context.setData(ItmFields.RESCODE, ItmRespCode.COMMON_SYSERROR); } }
private void setQuerySingInfoMsgBody(Context context) { Map<String, Object> data = new HashMap<String, Object>(); // data.put("transferType", context.getData("transferType")); // data.put("certType", context.getData("certType")); //查询类型 // data.put("cardNo", context.getData("cardNo")); //卡号 // data.put("passVerifyFlag", context.getData("passVerifyFlag")); // //密码校验标志2 // data.put("currType", context.getData("currType")); //卡号 // data.put("currNum", context.getData("currNum")); //起始记录Key值 data.put("FcnCde", "01"); // 功能吗 data.put("TfoCusAc", context.getData("cardNo")); // 卡号 data.put("AgrNo", context.getData("protocolNo")); // 协议号 data.put("AgrKnd", context.getData("transferType")); // 协议种类 data.put("CCY", context.getData("currType")); // 币种 context.setData(ItmFields.TXNCODE, "ECUPTR0722"); data.put("TranCode", "ECUPTR0722"); context.setDataMap(data); }
private void handleSuccessCase(Context ctx, List<Map<String, Object>> list) { ctx.setData("queryTp", "0"); if (ItmConstants.RESFLAG_SUCCESS.equals(ctx.getData(ItmFields.RESFLAG))) { if (list != null) { // 设置返回码 ctx.setData("accList", list); ctx.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_SUCCESS); ctx.setData(ItmFields.RESCODE, ctx.getData(ItmFields.RESCODE)); ctx.setState("Y"); } } else { ctx.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR); ctx.setData(ItmFields.RESCODE, ctx.getData(ItmFields.RESCODE)); ctx.setState("N"); } }
/** * 网银报文返回处理 * * @param ctx */ @SuppressWarnings("unchecked") private void responseHandler(Context ctx) { // MF1646系统正在日切,跑批 MF1647 // 网银返回处理 if (ItmConstants.RESFLAG_SUCCESS.equals(ctx.getData(ItmFields.RESFLAG))) { logger.info(" ------------------------ response success ----------------------"); Map<String, Object> ecupResponse = ctx.getData("ecupResponse"); if (ecupResponse != null) { String ServiceId = ecupResponse.get("ServiceId").toString(); if ("ECUPTR0722".equals(ServiceId)) { ctx.setData("inqRecCnt", ecupResponse.get("InqRecCnt")); ctx.setData("endFlag", ecupResponse.get("EndFlg")); // 查询记录条数 if (Integer.valueOf((String) ecupResponse.get("InqRecCnt")) < 1) { ctx.setData("signFlag", "no"); // 没有签约协议,查询帐户余额 ctx.setState("Y"); } else { if (ecupResponse.get("result") != null) { List<Map<String, String>> signInfoList = new ArrayList<Map<String, String>>(); signInfoList = (ArrayList<Map<String, String>>) ecupResponse.get("result"); if (signInfoList.size() > 0) { // 查询结果列表 ctx.setData("signInfoList", ecupResponse.get("result")); ctx.setData("signFlag", "yes"); ctx.setState("N"); } else { ctx.setData("signFlag", "no"); ctx.setState("Y"); } } else { ctx.setData("signFlag", "no"); ctx.setState("Y"); } } } else if ("ECUPTR0721".equals(ServiceId)) { // 双利签约解约 ctx.setData("protocolNo1", ecupResponse.get("AgrNo")); ctx.setData("cardNo1", ecupResponse.get("TfoCusAc")); ctx.setDataMap(ecupResponse); ctx.setState("Y"); } else if ("ECUPIV0703".equals(ServiceId)) { ctx.setData("corpus", ecupResponse.get("AcBal")); // 本金 ctx.setData("interest", ecupResponse.get("PybIntAmt")); // 利息 ctx.setData("interestTax", ecupResponse.get("IntTax")); // 利息税 ctx.setData("charge", ecupResponse.get("Hfe")); // 手续费 ctx.setData("amt", ecupResponse.get("NacAmt")); // 交易金额 ctx.setData("totAmt", ecupResponse.get("TotAmt")); // 总金额 // ctx.setData("storeSumBlc",getStoreSumBlc();//卡余额 // ggcardNo,ggcurrency,ggserialNo为国光提供 ctx.setData("ggcardNo", ctx.getData("cardNo")); ctx.setData("ggcurrency", "CNY"); ctx.setData("ggserialNo", ctx.getData("serialNo")); ctx.setState("Y"); } else if ("ECUPIV0704".equals(ServiceId)) { ctx.setData("corpus", ecupResponse.get("Bal")); // 本金 ctx.setData("interest", ecupResponse.get("PybIntAmt")); // 利息 ctx.setData("interestTax", ecupResponse.get("IntTax")); // 利息税 ctx.setData("charge", ecupResponse.get("Hfe")); // 手续费 ctx.setData("amt", ecupResponse.get("TxnAmt")); // 交易金额 ctx.setData("totAmt", ecupResponse.get("NacPrcIntTot")); // 销户本息合计 // ctx.setData("storeSumBlc",getStoreSumBlc());//卡余额 // ggcardNo,ggcurrency,ggserialNo为国光提供 ctx.setData("ggcardNo", ctx.getData("cardNo")); ctx.setData("ggcurrency", "CNY"); ctx.setData("ggserialNo", ctx.getData("serialNo")); ctx.setState("Y"); } } ctx.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_SUCCESS); ctx.setData(ItmFields.RESCODE, ctx.getData(ItmFields.RESCODE)); } else if (ItmConstants.RESFLAG_ERROR.equals(ctx.getData(ItmFields.RESFLAG))) { logger.info(" ------------------------ response error ----------------------"); ctx.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR); ctx.setData(ItmFields.RESCODE, ctx.getData(ItmFields.RESCODE)); ctx.setState("N"); } else { logger.error("APPLY TO BankQueryAction OTHER EXCEPTION"); ctx.setState("N"); } }
/** * 签约状态统计(查询银信、基金账户、黄金、信用卡自助还款 签约状态) * * @param map * @return */ @SuppressWarnings("unchecked") private void signState(Context ctx) { ctx.setData("messageState", "0"); ctx.setData("msgChannel", "0"); ctx.setData("fundState", "0"); ctx.setData("fundChannel", "0"); ctx.setData("goldState", "0"); ctx.setData("goldChannel", "0"); ctx.setData("cardState", "0"); // 信用卡自助还款 ctx.setData("cardChannel", "0"); // CusAgreeList if (ctx.getData("CusAgreeList") != null && ((ArrayList<Map<String, Object>>) ctx.getData("CusAgreeList")).size() > 0) { List lst = ((ArrayList<Map<String, Object>>) ctx.getData("CusAgreeList")); for (int k = 0; k < lst.size(); k++) { Map<String, Object> obj1 = ((ArrayList<Map<String, Object>>) ctx.getData("CusAgreeList")).get(k); if (obj1 != null) { ArrayList<Map<String, Object>> listObj = (ArrayList<Map<String, Object>>) (obj1.get("AgreeInfoList")); if (listObj != null && listObj.size() > 0) { for (int i = 0; i < listObj.size(); i++) { if (listObj.get(i).get("AgreementBussTpCd") != null && listObj.get(i).get("AgreementBussTpCd").toString().trim().equals("010AA025")) { Object sts1 = listObj.get(i).get("Sts"); if (sts1 != null && sts1.toString().trim().equals("0")) { ctx.setData("fundState", "1"); ctx.setData("fundChannel", "1"); } } else if (listObj.get(i).get("AgreementBussTpCd") != null && listObj.get(i).get("AgreementBussTpCd").toString().trim().equals("010AC043")) { Object sts2 = listObj.get(i).get("Sts"); if (sts2 != null && sts2.toString().trim().equals("0")) { ctx.setData("messageState", "1"); ctx.setData("msgChannel", "1"); } } else if (listObj.get(i).get("AgreementBussTpCd") != null && listObj.get(i).get("AgreementBussTpCd").toString().trim().equals("010AA058")) { Object sts3 = listObj.get(i).get("Sts"); if (sts3 != null && sts3.toString().trim().equals("0")) { ctx.setData("goldState", "1"); ctx.setData("goldChannel", "1"); } } else if (listObj.get(i).get("AgreementBussTpCd") != null && listObj.get(i).get("AgreementBussTpCd").toString().trim().equals("010AA070")) { Object sts3 = listObj.get(i).get("Sts"); if (sts3 != null && sts3.toString().trim().equals("0")) { ctx.setData("cardState", "1"); ctx.setData("cardChannel", "1"); } } } } } } } }