package kd.cosmic.jkjt.fi.cas.formplugin; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.control.Label; import kd.bos.form.events.ClosedCallBackEvent; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.fi.cas.consts.BillTypeConstants; import kd.fi.cas.formplugin.PaymentBillEdit; import java.math.BigDecimal; import java.util.EventObject; import java.util.Map; /** * @author turbo * * 同名转账PC布局单据显示,付款方、收款方的协定利率、协定留存金额。单据字段已添加,逻辑描述: * 数据来源:协定存款单据 * 条件:协议状态=正常 , 收付.银行账号=协定账号 * 未找到记录则字段显示为空 */ public class PayBillEditPlugin extends PaymentBillEdit { private String AgreementDepositEntityName = "cim_agreement_deposit"; @Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); setIstypeSyn(); DynamicObject payeracctbank = (DynamicObject)this.getValue("payeracctbank"); if(payeracctbank != null){ getDepositAgreeInfo(true, (Long)payeracctbank.getPkValue()); } } @Override public void afterLoadData(EventObject e) { super.afterLoadData(e); setIstypeSyn(); setPayerPayeeInfoLb(); } @Override public void click(EventObject evt) { // super.click(evt); } @Override public void closedCallBack(ClosedCallBackEvent e) { // super.closedCallBack(e); // // Map data; // if ("changepayer".equals(e.getActionId())) { // data = (Map)e.getReturnData(); // if (data != null) { // this.changePayerValueForDepositAgree(data); // } // } else if ("addpayee".equals(e.getActionId())) { // data = (Map)e.getReturnData(); // if (data != null) { // this.addPayeeValueForDepositAgree(data); // } // } } private void changePayerValueForDepositAgree(Map returnMap) { if (getBillTypeSyn()) { DynamicObject payerbank = (DynamicObject ) returnMap.get("payeracctbank"); getDepositAgreeInfo(true, (Long)payerbank.getPkValue()); } } private void addPayeeValueForDepositAgree(Map returnMap) { if (getBillTypeSyn()) { Long payeebankId = (Long)returnMap.get("payeeacctbank"); getDepositAgreeInfo(false,payeebankId); } } private void setIstypeSyn(){ if (getBillTypeSyn()) { this.getView().setVisible(true, new String[]{"nckd_flex_payer_rate"}); this.getView().setVisible(true, new String[]{"nckd_payer_agreeaamount"}); this.getView().setVisible(true, new String[]{"nckd_flex_payee_rate"}); this.getView().setVisible(true, new String[]{"nckd_payee_agreeaamount"}); }else{ this.getView().setVisible(false, new String[]{"nckd_flex_payer_rate"}); this.getView().setVisible(false, new String[]{"nckd_payer_agreeaamount"}); this.getView().setVisible(false, new String[]{"nckd_flex_payee_rate"}); this.getView().setVisible(false, new String[]{"nckd_payee_agreeaamount"}); } } private boolean getBillTypeSyn(){ DynamicObject billtype = this.getDynamicObject("billtype"); if (billtype != null && BillTypeConstants.PAYBILL_SYN.equals(billtype.getPkValue())) { return true; } return false; } private void setPayerPayeeInfoLb(){ if (getBillTypeSyn()) { if(this.getBigDecimal("nckd_payerrate")!=null) { BigDecimal rate1 = this.getBigDecimal("nckd_payerrate").setScale(2,BigDecimal.ROUND_HALF_UP); ((Label) this.getControl("nckd_payerbanknamev")).setText(rate1.toString()); } if(this.getBigDecimal("nckd_payeragreeamount")!=null) { BigDecimal amount1 = this.getBigDecimal("nckd_payeragreeamount").setScale(2, BigDecimal.ROUND_HALF_UP); ((Label) this.getControl("nckd_payerbanknamev1")).setText(amount1.toString()); } if(this.getBigDecimal("nckd_payeerate")!=null) { BigDecimal rate2 = this.getBigDecimal("nckd_payeerate").setScale(2, BigDecimal.ROUND_HALF_UP); ((Label) this.getControl("nckd_payeebanknumv")).setText(rate2.toString()); } if(this.getBigDecimal("nckd_payeeagreeamount")!=null) { BigDecimal amount2 = this.getBigDecimal("nckd_payeeagreeamount").setScale(2, BigDecimal.ROUND_HALF_UP); ((Label) this.getControl("nckd_payeebanknumv1")).setText(amount2.toString()); } } } /** * 单据选择 * @param isPayer * @param bankId */ private void getDepositAgreeInfo(boolean isPayer, Long bankId){ ///先清除原有值 Object value = null; if(isPayer) { this.setValue("nckd_payerrate", value); this.setValue("nckd_payeragreeamount", value); ((Label) this.getControl("nckd_payerbanknamev")).setText(""); ((Label) this.getControl("nckd_payerbanknamev1")).setText(""); }else{ this.setValue("nckd_payeerate", value); this.setValue("nckd_payeeagreeamount", value); ((Label) this.getControl("nckd_payeebanknumv")).setText(""); ((Label) this.getControl("nckd_payeebanknumv1")).setText(""); } if(bankId == null) { return; } QFilter filterAgreement1 = new QFilter("bankacct", QCP.equals, bankId); QFilter filterAgreement2 = new QFilter("status", QCP.equals, "A"); QFilter filterAgreement3 = new QFilter("billstatus", QCP.equals, "C"); QFilter[] filtersAgreeement = new QFilter[]{filterAgreement1.and(filterAgreement2).and(filterAgreement3)}; DynamicObject[] agreementBillEntities = BusinessDataServiceHelper.load(AgreementDepositEntityName, "id,billno", filtersAgreeement); for (DynamicObject dataEntity : agreementBillEntities) { DynamicObject bankBillEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), AgreementDepositEntityName); if(isPayer) { this.setValue("nckd_payerrate", bankBillEntity.getBigDecimal("rate")); this.setValue("nckd_payeragreeamount", bankBillEntity.getBigDecimal("amount")); if(this.getBigDecimal("nckd_payerrate")!=null) { BigDecimal rate1 = this.getBigDecimal("nckd_payerrate").setScale(2,BigDecimal.ROUND_HALF_UP); ((Label) this.getControl("nckd_payerbanknamev")).setText(rate1.toString()); } if(this.getBigDecimal("nckd_payeragreeamount")!=null) { BigDecimal amount1 = this.getBigDecimal("nckd_payeragreeamount").setScale(2, BigDecimal.ROUND_HALF_UP); ((Label) this.getControl("nckd_payerbanknamev1")).setText(amount1.toString()); } }else{ this.setValue("nckd_payeerate", bankBillEntity.getBigDecimal("rate")); this.setValue("nckd_payeeagreeamount", bankBillEntity.getBigDecimal("amount")); if(this.getBigDecimal("nckd_payeerate")!=null) { BigDecimal rate2 = this.getBigDecimal("nckd_payeerate").setScale(2, BigDecimal.ROUND_HALF_UP); ((Label) this.getControl("nckd_payeebanknumv")).setText(rate2.toString()); } if(this.getBigDecimal("nckd_payeeagreeamount")!=null) { BigDecimal amount2 = this.getBigDecimal("nckd_payeeagreeamount").setScale(2, BigDecimal.ROUND_HALF_UP); ((Label) this.getControl("nckd_payeebanknumv1")).setText(amount2.toString()); } } } } public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String key = e.getProperty().getName(); ChangeData[] changeData = e.getChangeSet(); Object newValue = changeData[0].getNewValue(); Object oldValue = changeData[0].getOldValue(); if (newValue != oldValue) { switch (key) { //收款银行 case "payeebank": if(newValue == null){ this.getModel().setValue("nckd_payeiscapitalpool", false); } else { DynamicObject bebank = (DynamicObject) newValue; QFilter qFilter = new QFilter("bebank", QCP.equals, bebank.getLong("id")); DynamicObject bank = BusinessDataServiceHelper.loadSingle("bd_finorginfo", qFilter.toArray()); if(bank != null && bank.getDynamicObject("bank_cate") != null){ DynamicObject bankCate = bank.getDynamicObject("bank_cate"); bankCate = BusinessDataServiceHelper.loadSingle(bankCate.getPkValue(), "bd_bankcgsetting"); this.getModel().setValue("nckd_payeiscapitalpool", bankCate.getBoolean("nckd_iscapitalpoolbank")); } } break; //银行账号 case "payeracctbank": if (getBillTypeSyn()) { DynamicObject payerbank = this.getDynamicObject("payeracctbank"); Long payeebankId = payerbank == null ? null : (Long)payerbank.getPkValue(); getDepositAgreeInfo(true, payeebankId); } break; //收款账户ID case "payeeacctbank": if (getBillTypeSyn()) { Long payeebankId = this.getValue("payeeacctbank") == null ? null : (Long)this.getValue("payeeacctbank"); getDepositAgreeInfo(false,payeebankId); } break; } } } }