package com.tenwa.loan.handler; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; import jbo.com.tenwa.entity.comm.own.OWN_INFO; import jbo.loan.LOAN_BILL_INFO; import jbo.loan.LOAN_CONTRACT_INFO; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.awe.dw.handler.impl.CommonHandler; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.loan.calc.FinancingCalculateServiceImpl; import com.tenwa.reckon.util.NumberUtils; public class LoanInfoHandler extends CommonHandler { @Override protected void initDisplayForAdd(BizObject bo) throws Exception { String contractid=this.asPage.getParameter("contractid"); BizObject loan=JBOFactory.createBizObjectQuery(LOAN_CONTRACT_INFO.CLASS_NAME,"id=:id").setParameter("id", contractid).getSingleResult(false); DataOperatorUtil.coptyJBOPropertyNoKey(loan, bo); bo.setAttributeValue("contract_id", contractid); String ownid=loan.getAttribute("own_id").getString(); BizObject own=JBOFactory.createBizObjectQuery(OWN_INFO.CLASS_NAME,"OWN_NUMBER=:id").setParameter("id", ownid).getSingleResult(false); if(own!=null){ bo.setAttributeValue("OWN_NAME", own.getAttribute("OWN_NAME").getString()); } BigDecimal loanAmout=new BigDecimal(loan.getAttribute("LOAN_AMOUNT").getString()); List bills=JBOFactory.createBizObjectQuery(LOAN_BILL_INFO.CLASS_NAME,"contract_id=:contractid").setParameter("contractid", contractid).getResultList(false); BigDecimal billAmout=BigDecimal.ZERO; for(BizObject bill:bills){ billAmout=billAmout.add(new BigDecimal(bill.getAttribute("LOAN_AMOUNT").getString())); } bo.setAttributeValue("LOAN_AMOUNT", loanAmout.subtract(billAmout).toString()); } @Override protected boolean validityCheck(BizObject bo, boolean isInsert) { try{ String contractid=bo.getAttribute("contract_id").getString(); BizObject loan=JBOFactory.createBizObjectQuery(LOAN_CONTRACT_INFO.CLASS_NAME, "id=:id").setParameter("id", contractid).getSingleResult(false); BigDecimal loanAmout=new BigDecimal(loan.getAttribute("LOAN_AMOUNT").getString()); List bills=JBOFactory.createBizObjectQuery(LOAN_BILL_INFO.CLASS_NAME,"contract_id=:contractid").setParameter("contractid", contractid).getResultList(false); BigDecimal billAmout=BigDecimal.ZERO; for(BizObject bill:bills){ if(!bill.getAttribute("id").getString().equals(bo.getAttribute("id").getString())) billAmout=billAmout.add(new BigDecimal(bill.getAttribute("LOAN_AMOUNT").getString())); } billAmout=billAmout.add(new BigDecimal(bo.getAttribute("loan_amount").getString())); if(loanAmout.compareTo(billAmout)<0){ this.errors="借款合同金额:"+NumberUtils.formatNumberDoubleQian( loanAmout.toString())+"小于借款总金额:"+NumberUtils.formatNumberDoubleQian(billAmout.toString())+"请检查后再保存"; return false; } if(isInsert){ BizObject bill=JBOFactory.createBizObjectQuery(LOAN_BILL_INFO.CLASS_NAME,"BILL_ID=:billid").setParameter("billid",bo.getAttribute("BILL_ID").getString()).getSingleResult(false); if(bill!=null){ this.errors="提款单号:"+bo.getAttribute("BILL_ID").getString()+"重复"; return false; } }else{ BizObject bill=JBOFactory.createBizObjectQuery(LOAN_BILL_INFO.CLASS_NAME,"BILL_ID=:billid and id<>'"+bo.getAttribute("id").getString()+"'").setParameter("billid",bo.getAttribute("BILL_ID").getString()).getSingleResult(false); if(bill!=null){ this.errors="提款单号:"+bo.getAttribute("BILL_ID").getString()+"重复"; return false; } } }catch(Exception e){ e.printStackTrace(); } return true; } @Override protected void afterInsert(JBOTransaction tx, BizObject bo) throws Exception { FinancingCalculateServiceImpl fcsi=new FinancingCalculateServiceImpl(); Map param=new HashMap(); param.put("lastDate", bo.getAttribute("loan_start_date").getString()); param.put("operType", "add"); fcsi.saveCalculateFundPlan(bo,param); } }