|  | @@ -0,0 +1,362 @@
 | 
	
		
			
				|  |  | +package nc.ui.cmp.settlement.actions;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.awt.event.ActionEvent;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  | +import java.util.Iterator;
 | 
	
		
			
				|  |  | +import java.util.LinkedList;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import javax.swing.Action;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import nc.bs.framework.common.NCLocator;
 | 
	
		
			
				|  |  | +import nc.bs.logging.Logger;
 | 
	
		
			
				|  |  | +import nc.cmp.pub.exception.ExceptionHandler;
 | 
	
		
			
				|  |  | +import nc.cmp.settlement.validate.SettleValidate;
 | 
	
		
			
				|  |  | +import nc.cmp.utils.CmpUtils;
 | 
	
		
			
				|  |  | +import nc.cmp.utils.DataUtil;
 | 
	
		
			
				|  |  | +import nc.cmp.utils.SettleUtils;
 | 
	
		
			
				|  |  | +import nc.funcnode.ui.action.INCAction;
 | 
	
		
			
				|  |  | +import nc.itf.cmp.ebank.ICMPPaymentService;
 | 
	
		
			
				|  |  | +import nc.itf.cmp.pub.CmpSelfDefButtonNameConst;
 | 
	
		
			
				|  |  | +import nc.itf.cmp.settlement.ISettlementQueryService;
 | 
	
		
			
				|  |  | +import nc.pubitf.bbd.CurrtypeQuery;
 | 
	
		
			
				|  |  | +import nc.ui.pub.beans.MessageDialog;
 | 
	
		
			
				|  |  | +import nc.ui.pub.beans.UIDialog;
 | 
	
		
			
				|  |  | +import nc.ui.uif2.ShowStatusBarMsgUtil;
 | 
	
		
			
				|  |  | +import nc.ui.uif2.model.AbstractUIAppModel;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.BusiStatus;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.SettleStatus;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.settlement.CheckException;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.settlement.NetpayTransferVO;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.settlement.PaymentInfoVO4Batch;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.settlement.SettleEnumCollection.Direction;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.settlement.SettlementAggVO;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.settlement.SettlementBodyVO;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.settlement.SettlementHeadVO;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.settlement.international.util.SettleInternationalValidate;
 | 
	
		
			
				|  |  | +import nc.vo.cmp.validate.CMPValidate;
 | 
	
		
			
				|  |  | +import nc.vo.obm.pay.OnlinePaymentVO;
 | 
	
		
			
				|  |  | +import nc.vo.obm.sec.ObmCAInfoAccessor;
 | 
	
		
			
				|  |  | +import nc.vo.obm.sec.ObmCASignature;
 | 
	
		
			
				|  |  | +import nc.vo.pub.BusinessException;
 | 
	
		
			
				|  |  | +import nc.vo.pub.lang.UFDouble;
 | 
	
		
			
				|  |  | +import nc.vo.tmpub.util.TMCurrencyUtil;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 结算信息列表界面网上转账按钮类
 | 
	
		
			
				|  |  | + * 
 | 
	
		
			
				|  |  | + * @author xwq
 | 
	
		
			
				|  |  | + * 
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +@SuppressWarnings("restriction")
 | 
	
		
			
				|  |  | +public class SettleListNetPayTransferAction extends SettleDefaultAction {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +	 *
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	private static final long serialVersionUID = 8899125168078379198L;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	public SettleListNetPayTransferAction() {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		setBtnName(CmpSelfDefButtonNameConst.getInstance().getConstBtnnameNetpaytransferName());
 | 
	
		
			
				|  |  | +		putValue(Action.SHORT_DESCRIPTION, getBtnName());
 | 
	
		
			
				|  |  | +		putValue(INCAction.CODE, "网上转账");/*-=notranslate=-*/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	public void doAction(ActionEvent e) throws Exception {
 | 
	
		
			
				|  |  | +		SettlementAggVO[] selectedOperaDatas = getSelectedAggVOs();
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		CheckException
 | 
	
		
			
				|  |  | +				.checkArgument(selectedOperaDatas == null,
 | 
	
		
			
				|  |  | +						nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0052")/*@res "请选择需要操作的单据"*/);
 | 
	
		
			
				|  |  | +		StringBuffer error = new StringBuffer("业务单据编号:");
 | 
	
		
			
				|  |  | +		for (SettlementAggVO settlementAggVO : selectedOperaDatas) {
 | 
	
		
			
				|  |  | +			//表头原币金额
 | 
	
		
			
				|  |  | +			UFDouble headPrimal = (UFDouble) settlementAggVO.getParentVO().getAttributeValue("primal");
 | 
	
		
			
				|  |  | +			//表体原币金额
 | 
	
		
			
				|  |  | +			UFDouble bodyPrimal = new UFDouble(0.00);
 | 
	
		
			
				|  |  | +			SettlementBodyVO [] settlementBodyVOs = (SettlementBodyVO[]) settlementAggVO.getChildrenVO();
 | 
	
		
			
				|  |  | +			for (SettlementBodyVO settlementBodyVO : settlementBodyVOs) {
 | 
	
		
			
				|  |  | +				bodyPrimal = bodyPrimal.add(settlementBodyVO.getPay_last());
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			if(headPrimal.compareTo(bodyPrimal) != 0) {
 | 
	
		
			
				|  |  | +				String billcode = (String) settlementAggVO.getParentVO().getAttributeValue("billcode");
 | 
	
		
			
				|  |  | +				error.append(billcode);
 | 
	
		
			
				|  |  | +				error.append(",");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(error.length() != 7) {
 | 
	
		
			
				|  |  | +			throw new BusinessException(error+"表体合计金额不等于表头金额!");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		List<SettlementAggVO> aggLst = SettleUtils.filterSettleInfo4NetSettleFlagUnSettle(selectedOperaDatas);
 | 
	
		
			
				|  |  | +		if (aggLst.size() == 0) {
 | 
	
		
			
				|  |  | +			ShowStatusBarMsgUtil
 | 
	
		
			
				|  |  | +					.showErrorMsg(
 | 
	
		
			
				|  |  | +							nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set1_0", "03607set1-0078")/*@res "提示"*/,
 | 
	
		
			
				|  |  | +							nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set1_0", "03607set1-0079")/*@res "没有可网银支付的表体记录"*/,
 | 
	
		
			
				|  |  | +							getModel().getContext());
 | 
	
		
			
				|  |  | +			return;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		selectedOperaDatas =aggLst.toArray(new SettlementAggVO[0]);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		int len = selectedOperaDatas.length;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if (len > 1) {
 | 
	
		
			
				|  |  | +			for (Object aggvo : selectedOperaDatas) {
 | 
	
		
			
				|  |  | +				SettlementHeadVO settlementHeadVO = (SettlementHeadVO) ((SettlementAggVO) aggvo).getParentVO();
 | 
	
		
			
				|  |  | +				// 付款结算工资发放单据不能批量网上转账
 | 
	
		
			
				|  |  | +				if ("DS".equals(settlementHeadVO.getPk_tradetype())) {
 | 
	
		
			
				|  |  | +					ExceptionHandler.createandthrowException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID(
 | 
	
		
			
				|  |  | +							"3607set1_0", "03607set1-0227"));
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			SettlementHeadVO head = (SettlementHeadVO) ((SettlementAggVO) selectedOperaDatas[0]).getParentVO();
 | 
	
		
			
				|  |  | +			// 工资发放单据,走特殊网银支付接口
 | 
	
		
			
				|  |  | +			String pk_tradetype = head.getPk_tradetype();
 | 
	
		
			
				|  |  | +			if ("DS".equals(pk_tradetype)) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				int num = MessageDialog
 | 
	
		
			
				|  |  | +						.showYesNoDlg(
 | 
	
		
			
				|  |  | +								getEdit(),
 | 
	
		
			
				|  |  | +								nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0029")/*@res "提示"*/,
 | 
	
		
			
				|  |  | +								nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0050")/*@res "确定进行网上支付?"*/);
 | 
	
		
			
				|  |  | +				if (num != UIDialog.ID_YES) {
 | 
	
		
			
				|  |  | +					return;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				this.getEdit().getClientSigner().identifyCA();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				doSalaryBillNetPay((SettlementAggVO) selectedOperaDatas[0]);
 | 
	
		
			
				|  |  | +				String id = selectedOperaDatas[0].getParentVO().getPrimaryKey();
 | 
	
		
			
				|  |  | +				
 | 
	
		
			
				|  |  | +				// 重新查一次,数据已经被更新。
 | 
	
		
			
				|  |  | +				SettlementAggVO[] newaggvos = NCLocator.getInstance().lookup(ISettlementQueryService.class).querySettlementAggVOsByPks(new String[]{id});
 | 
	
		
			
				|  |  | +				showNetPayTransferInfo(this.getModel() ,newaggvos);
 | 
	
		
			
				|  |  | +				return ;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		SettlementAggVO[] aggvos = new SettlementAggVO[len];
 | 
	
		
			
				|  |  | +		List<String> ids = new LinkedList<String>();
 | 
	
		
			
				|  |  | +		for (int i = 0; i < len; i++) {
 | 
	
		
			
				|  |  | +			aggvos[i] = (SettlementAggVO) selectedOperaDatas[i];
 | 
	
		
			
				|  |  | +			ids.add(aggvos[i].getParentVO().getPrimaryKey());
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		NCLocator.getInstance().lookup(ICMPPaymentService.class).validatePay(selectedOperaDatas);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		int num = MessageDialog
 | 
	
		
			
				|  |  | +				.showYesNoDlg(
 | 
	
		
			
				|  |  | +						getEdit(),
 | 
	
		
			
				|  |  | +						nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0029")/*@res "提示"*/,
 | 
	
		
			
				|  |  | +						nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0050")/*@res "确定进行网上支付?"*/);
 | 
	
		
			
				|  |  | +		if (num != UIDialog.ID_YES) {
 | 
	
		
			
				|  |  | +			return;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		try {
 | 
	
		
			
				|  |  | +			// 执行批量网上转账
 | 
	
		
			
				|  |  | +			PaymentInfoVO4Batch[] retnsgs = doBatchZhuanzhang(aggvos);
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			// 重新查一次,数据已经被更新。
 | 
	
		
			
				|  |  | +			SettlementAggVO[] newaggvos = NCLocator.getInstance().lookup(ISettlementQueryService.class)
 | 
	
		
			
				|  |  | +					.querySettlementAggVOsByPks(ids.toArray(new String[0]));
 | 
	
		
			
				|  |  | +			getModel().directlyUpdate(newaggvos);
 | 
	
		
			
				|  |  | +			// 如果是取消操作,则不提示信息
 | 
	
		
			
				|  |  | +			if (retnsgs == null) {
 | 
	
		
			
				|  |  | +				return;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			showNetPayTransferInfo(this.getModel(), retnsgs);
 | 
	
		
			
				|  |  | +		} catch (BusinessException ex) {
 | 
	
		
			
				|  |  | +			Logger.error(ex.getMessage(), ex);
 | 
	
		
			
				|  |  | +			throw new BusinessException(ex.getMessage());
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	protected boolean isActionEnable() {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		SettlementAggVO[] aggvos = getSelectedAggVOs();
 | 
	
		
			
				|  |  | +		if (aggvos == null || aggvos.length == 0 || aggvos[0] == null) {
 | 
	
		
			
				|  |  | +			return false;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		for (SettlementAggVO settlementAggVO : aggvos) {
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			SettlementAggVO currentAggvo = settlementAggVO;
 | 
	
		
			
				|  |  | +			SettlementHeadVO head = (SettlementHeadVO) currentAggvo.getParentVO();
 | 
	
		
			
				|  |  | +			// 收款类不能 支付
 | 
	
		
			
				|  |  | +			if (nc.vo.cmp.settlement.SettleEnumCollection.Direction.REC.VALUE.equals(head.getDirection())) {
 | 
	
		
			
				|  |  | +				return false;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			if (head.getBusistatus() == null || !head.getBusistatus().equals(BusiStatus.Sign.getBillStatusKind())) {
 | 
	
		
			
				|  |  | +				// 非签字态的不能网上支付
 | 
	
		
			
				|  |  | +				return false;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			if (head.getPk_ftsbill() != null) {
 | 
	
		
			
				|  |  | +				// 资金组织生成的结算信息不能网上支付
 | 
	
		
			
				|  |  | +				return false;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			if (SettleUtils.isExistInnerAccount(currentAggvo)) {
 | 
	
		
			
				|  |  | +				// 有内部账户的不能网上支付
 | 
	
		
			
				|  |  | +				return false;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			for (SettlementBodyVO body : (SettlementBodyVO[]) settlementAggVO.getChildrenVO()) {
 | 
	
		
			
				|  |  | +				if (body.getSettlestatus() != null
 | 
	
		
			
				|  |  | +						&& body.getSettlestatus().equals(SettleStatus.SETTLERESET.getStatus())) {
 | 
	
		
			
				|  |  | +					// 含有结算红冲的信息,不能反操作
 | 
	
		
			
				|  |  | +					return false;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		return true;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +	 * 工资发放网上支付
 | 
	
		
			
				|  |  | +	 * 
 | 
	
		
			
				|  |  | +	 * @param settlement
 | 
	
		
			
				|  |  | +	 * @throws BusinessException
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	private void doSalaryBillNetPay(SettlementAggVO settlement) throws BusinessException {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		ICMPPaymentService service = NCLocator.getInstance().lookup(ICMPPaymentService.class);
 | 
	
		
			
				|  |  | +		service.doNetTransfer4SalaryBill(DataUtil.getCurrentUser(), settlement);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	// 提示网上支付成功信息
 | 
	
		
			
				|  |  | +	public static void showNetPayTransferInfo(AbstractUIAppModel model, PaymentInfoVO4Batch[] batch)
 | 
	
		
			
				|  |  | +			throws BusinessException {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		int successCount = 0;
 | 
	
		
			
				|  |  | +		StringBuffer successMsg = new StringBuffer();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		int failCount = 0;
 | 
	
		
			
				|  |  | +		StringBuffer failMsg = new StringBuffer();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		for (PaymentInfoVO4Batch one : batch) {
 | 
	
		
			
				|  |  | +			if (one.getEx() != null) {
 | 
	
		
			
				|  |  | +				failCount++;
 | 
	
		
			
				|  |  | +				failMsg.append(((SettlementHeadVO) one.getAggvo().getParentVO()).getBillcode());
 | 
	
		
			
				|  |  | +				failMsg.append("\n");
 | 
	
		
			
				|  |  | +				failMsg.append(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0053")/*@res "错误原因:"*/);
 | 
	
		
			
				|  |  | +				failMsg.append(one.getEx().getMessage());
 | 
	
		
			
				|  |  | +				failMsg.append("\n");
 | 
	
		
			
				|  |  | +			} else {
 | 
	
		
			
				|  |  | +				successCount++;
 | 
	
		
			
				|  |  | +				successMsg.append(((SettlementHeadVO) one.getAggvo().getParentVO()).getBillcode());
 | 
	
		
			
				|  |  | +				successMsg.append(" ;");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		StringBuffer allMsg = new StringBuffer();
 | 
	
		
			
				|  |  | +		if (successCount > 0) {
 | 
	
		
			
				|  |  | +			allMsg.append(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0051")/*@res "网上支付成功"*/)
 | 
	
		
			
				|  |  | +					.append(successCount)
 | 
	
		
			
				|  |  | +					.append(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0054")/*@res "张单据"*/);
 | 
	
		
			
				|  |  | +			allMsg.append("\n");
 | 
	
		
			
				|  |  | +			allMsg.append(successMsg);
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			allMsg.append(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0055")/*@res "网上支付失败"*/)
 | 
	
		
			
				|  |  | +					.append(successCount)
 | 
	
		
			
				|  |  | +					.append(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0054")/*@res "张单据"*/);
 | 
	
		
			
				|  |  | +			allMsg.append("\n");
 | 
	
		
			
				|  |  | +			allMsg.append(failMsg);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		ShowStatusBarMsgUtil.showStatusBarMsg(allMsg.toString(), model.getContext());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	// 提示网上支付成功信息
 | 
	
		
			
				|  |  | +		public static void showNetPayTransferInfo(AbstractUIAppModel model, SettlementAggVO[] bills)
 | 
	
		
			
				|  |  | +				throws BusinessException {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			Map<String, UFDouble> map = new HashMap<String, UFDouble>();
 | 
	
		
			
				|  |  | +			int size = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			for (SettlementAggVO aggvo : bills) {
 | 
	
		
			
				|  |  | +				size++;
 | 
	
		
			
				|  |  | +				SettlementBodyVO[] children = (SettlementBodyVO[]) aggvo.getChildrenVO();
 | 
	
		
			
				|  |  | +				for (SettlementBodyVO child : children) {
 | 
	
		
			
				|  |  | +					if (child.getDirection().equals(Direction.PAY.VALUE)
 | 
	
		
			
				|  |  | +							&& Integer.valueOf(SettleStatus.PAYFAIL.getStatus()).equals(child.getSettlestatus())) {
 | 
	
		
			
				|  |  | +						String currtype = child.getPk_currtype();
 | 
	
		
			
				|  |  | +						int orgCurrRateDigit = TMCurrencyUtil.getCurrtypeDigit(child.getPk_currtype());
 | 
	
		
			
				|  |  | +						UFDouble money = new UFDouble(child.getPay().getDouble(), orgCurrRateDigit);
 | 
	
		
			
				|  |  | +						if (map.containsKey(currtype)) {
 | 
	
		
			
				|  |  | +							UFDouble sumMoney = map.get(currtype);
 | 
	
		
			
				|  |  | +							map.put(currtype, sumMoney.add(money));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +						} else {
 | 
	
		
			
				|  |  | +							map.put(currtype, money);
 | 
	
		
			
				|  |  | +						}
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			if (size > 0) {
 | 
	
		
			
				|  |  | +				CurrtypeQuery currtypeQuery = CurrtypeQuery.getInstance();
 | 
	
		
			
				|  |  | +				StringBuffer sBuffer = new StringBuffer();
 | 
	
		
			
				|  |  | +				sBuffer.append(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0051")/*
 | 
	
		
			
				|  |  | +																													* @
 | 
	
		
			
				|  |  | +																													* res
 | 
	
		
			
				|  |  | +																													* "发送网银成功"
 | 
	
		
			
				|  |  | +																													*/)
 | 
	
		
			
				|  |  | +						.append(size)
 | 
	
		
			
				|  |  | +						.append(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3607set_0", "03607set-0011")/*
 | 
	
		
			
				|  |  | +																													 * @
 | 
	
		
			
				|  |  | +																													 * res
 | 
	
		
			
				|  |  | +																													 * "张单据。"
 | 
	
		
			
				|  |  | +																													 */);
 | 
	
		
			
				|  |  | +				Iterator iterator = map.entrySet().iterator();
 | 
	
		
			
				|  |  | +				while (iterator.hasNext()) {
 | 
	
		
			
				|  |  | +					Map.Entry entry = (Map.Entry) iterator.next();
 | 
	
		
			
				|  |  | +					sBuffer.append("	").append(currtypeQuery.getCurrtypeName((String) entry.getKey())).append(": ");
 | 
	
		
			
				|  |  | +					sBuffer.append(entry.getValue()).append("\n");
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				ShowStatusBarMsgUtil.showStatusBarMsg(sBuffer.toString(), model.getContext());
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/**
 | 
	
		
			
				|  |  | +	 * 执行批量支付
 | 
	
		
			
				|  |  | +	 * 
 | 
	
		
			
				|  |  | +	 * @param bills
 | 
	
		
			
				|  |  | +	 * @throws BusinessException
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	private PaymentInfoVO4Batch[] doBatchZhuanzhang(SettlementAggVO[] aggvos) throws BusinessException {
 | 
	
		
			
				|  |  | +		OnlinePaymentDelegator delegator = new OnlinePaymentDelegator();
 | 
	
		
			
				|  |  | +		NetpayTransferVO[] netPayTransferVOs = delegator.doBatchBulu(aggvos, getEdit());
 | 
	
		
			
				|  |  | +		if(CmpUtils.isListNull(netPayTransferVOs)){ 
 | 
	
		
			
				|  |  | +			return null;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		List<OnlinePaymentVO> lst = CmpUtils.makeList();
 | 
	
		
			
				|  |  | +		for (NetpayTransferVO netpayTransferVO : netPayTransferVOs) {
 | 
	
		
			
				|  |  | +			lst.addAll(CmpUtils.covertArraysToList(netpayTransferVO.getOnlinePaymentVOs()));			
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		// 传递签名信息
 | 
	
		
			
				|  |  | +		ObmCASignature obmca = new ObmCASignature();
 | 
	
		
			
				|  |  | +		// 只要支付前签名处理就行,验签交给网银处理
 | 
	
		
			
				|  |  | +		 obmca.signPayInfo(lst.toArray(new OnlinePaymentVO[]{}), new ObmCAInfoAccessor(), DataUtil.getCurrentUser());
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		return delegator.doBatchNetTransfer(netPayTransferVOs);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |