From 894885ac93a652740768ce04afd76d7c9a1fbe6f Mon Sep 17 00:00:00 2001 From: tangfutang <3218982385@qq.com> Date: Thu, 26 Aug 2021 14:59:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BF=9D=E8=AF=81=E9=87=91?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=8A=B5=E6=89=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/WEB-INF/etc/jbo/jbo_calc.xml | 1 + .../jbo/app/tenwa/calc/VI_LC_RENT_PLAN.java | 5 + .../app/quartzmession/MarginDeduction.java | 200 ++++++++++-------- 3 files changed, 120 insertions(+), 86 deletions(-) diff --git a/WebContent/WEB-INF/etc/jbo/jbo_calc.xml b/WebContent/WEB-INF/etc/jbo/jbo_calc.xml index 14e1f8e83..a9b388627 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_calc.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_calc.xml @@ -1967,6 +1967,7 @@ + diff --git a/src_jbo/jbo/app/tenwa/calc/VI_LC_RENT_PLAN.java b/src_jbo/jbo/app/tenwa/calc/VI_LC_RENT_PLAN.java index a07dc40d2..8ecedbae2 100644 --- a/src_jbo/jbo/app/tenwa/calc/VI_LC_RENT_PLAN.java +++ b/src_jbo/jbo/app/tenwa/calc/VI_LC_RENT_PLAN.java @@ -125,4 +125,9 @@ public interface VI_LC_RENT_PLAN{ * ״̬ STRING(20)
*/ public static final String planstatus = "planstatus"; + + /** + * Ŀid STRING(20)
+ */ + public static final String project_id = "project_id"; } \ No newline at end of file diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java b/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java index 025377ee9..d81751f19 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java @@ -4,8 +4,11 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.UUID; +import com.base.util.DateUtil; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -30,98 +33,123 @@ public class MarginDeduction implements Job{ try { tx = JBOFactory.createJBOTransaction(); Sqlca = Transaction.createTransaction(tx); + BizObjectManager lrpBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_RENT_PLAN",Sqlca); BizObjectManager lriBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_RENT_INCOME",Sqlca); BizObjectManager lfiBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_INCOME",Sqlca); BizObjectManager lfpBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_PLAN",Sqlca); BizObjectManager vlrpBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.VI_LC_RENT_PLAN",Sqlca); - List vlrpBoList = vlrpBm.createQuery("(rent_over>0 OR penalty_over>0) AND plan_date=v.DATE_FORMAT(v.NOW(),'%Y/%m/%d') and not exists (select 1 from jbo.com.tenwa.lease.comm.LC_OCCUPY_RENT_LIST lorl where lorl.PAYMENT_NUMBER=O.PAYMENT_NUMBER and lorl.PLAN_LIST=O.PLAN_LIST)").getResultList(false); - if(vlrpBoList.size()>0) { - for (BizObject vlrpBo : vlrpBoList) { - StringBuffer str = new StringBuffer("select lfp.PLAN_MONEY-ifnull(lfit.fact_money,'0')-IfNULL(lfi.fact_money,'0') as fact_money from lc_fund_plan lfp "); - str.append("left join (select sum(fact_money) fact_money,PAYMENT_NUMBER from lc_fund_income_temp where FEE_TYPE='feetype16' and PAYMENT_NUMBER='"+vlrpBo.getAttribute("PAYMENT_NUMBER")+"' and is_flowing='0' and ROLL_BACK='0') lfit on lfp.PAYMENT_NUMBER=lfit.PAYMENT_NUMBER "); - str.append("LEFT JOIN (SELECT SUM(fact_money) fact_money,PAYMENT_NUMBER FROM lc_fund_income WHERE FEE_TYPE='feetype16' AND PAYMENT_NUMBER='"+vlrpBo.getAttribute("PAYMENT_NUMBER")+"' AND ROLL_BACK='0') lfi on lfp.PAYMENT_NUMBER=lfi.PAYMENT_NUMBER "); - str.append(" where lfp.FEE_TYPE='feetype16' and lfp.SETTLE_METHOD is not null and lfp.PAYMENT_NUMBER='"+vlrpBo.getAttribute("PAYMENT_NUMBER")+"'"); - String factMoney = Sqlca.getString(str.toString()); - if(factMoney==null) { - continue; + List> listData = DataOperatorUtil.getDataBySql("select cast(lfp.PLAN_MONEY as decimal(18,2))-cast(ifnull(lfit.fact_money,'0') as decimal(18,2))-cast(IfNULL(lfi.fact_money,'0') as decimal(18,2)) as fact_money,lci.id as contractId " + + "from lc_fund_plan lfp left join lb_contract_info lci on lci.id=lfp.CONTRACT_ID " + + " left join (select sum(fact_money) fact_money,PAYMENT_NUMBER from lc_fund_income_temp where FEE_TYPE='feetype16' and is_flowing='0' and ROLL_BACK='0' group by PAYMENT_NUMBER) lfit on lfp.PAYMENT_NUMBER=lfit.PAYMENT_NUMBER " + + " LEFT JOIN (SELECT SUM(fact_money) fact_money,PAYMENT_NUMBER FROM lc_fund_income WHERE FEE_TYPE='feetype16' AND ROLL_BACK='0' group by PAYMENT_NUMBER) lfi on lfp.PAYMENT_NUMBER=lfi.PAYMENT_NUMBER " + + "where lci.BUSINESSTYPE='1' and lci.CONTRACT_STATUS='31' and lfp.FEE_TYPE='feetype16' and lfp.SETTLE_METHOD is not null "); + if(listData!=null && listData.size() > 0 ){ + for (int i = 0; i < listData.size(); i++) { + String contractId = listData.get(i).get("contractId"); + BigDecimal fact_money = new BigDecimal( listData.get(i).get("fact_money").toString() ); + BigDecimal money = new BigDecimal( listData.get(i).get("fact_money").toString() ); + BizObject vlrpBo = null ; + List vlrpBoList = vlrpBm.createQuery("rent_over>0 and contract_id =:contract_id order by plan_list desc ").setParameter("contract_id",contractId).getResultList(false); + if( vlrpBoList!=null && vlrpBoList.size() > 0){ + BigDecimal rent = BigDecimal.ZERO ; + int j = 0 ; + for ( ; j < vlrpBoList.size() ; j++ ) { + BigDecimal plistRent = new BigDecimal( vlrpBoList.get(j).getAttribute("rent_over").toString() ); + rent = rent.add( plistRent ) ; + if(rent.compareTo(fact_money) > -1 || (vlrpBoList.size()-1) == j ){ + vlrpBo = vlrpBoList.get(j); + break; + } + money = money.subtract(plistRent); + } + if(j == vlrpBoList.size()-1 ){//ѭݵڼϵֵ˵ֿǰĽѾ + String plan_date = vlrpBo.getAttribute("plan_date").toString(); + String nowDate = DateUtil.getSystemTimeByFormat("yyyy/MM/dd"); + if(nowDate.compareTo(plan_date)>-1){ + BizObject lriBo = lriBm.newObject(); + BigDecimal interestOver = new BigDecimal(vlrpBo.getAttribute("interest_over").toString()); + if(interestOver.compareTo(money)>-1) { + lriBo.setAttributeValue("INTEREST",money); + money=BigDecimal.ZERO; + }else { + lriBo.setAttributeValue("INTEREST",interestOver); + money=money.subtract(interestOver); + } + + BigDecimal corpusOver = new BigDecimal(vlrpBo.getAttribute("corpus_over").toString()); + if(corpusOver.compareTo(money)>-1) { + lriBo.setAttributeValue("CORPUS",money); + money=BigDecimal.ZERO; + }else { + lriBo.setAttributeValue("CORPUS",corpusOver); + money=money.subtract(corpusOver); + } + BizObject lrp = lrpBm.createQuery(" id=:id ").setParameter("id",vlrpBo.getAttribute("ID").toString()).getSingleResult(true); + BigDecimal drent = new BigDecimal(lriBo.getAttribute("CORPUS").toString()).add( new BigDecimal( lriBo.getAttribute("INTEREST").toString() ) ); + BigDecimal rentOver = new BigDecimal(vlrpBo.getAttribute("rent_over").toString()); + + String fundIncomeId = UUID.randomUUID().toString().replaceAll("-",""); + lriBo.setAttributeValue("PROJECT_ID",vlrpBo.getAttribute("PROJECT_ID")); + lriBo.setAttributeValue("PROJECT_PLAN_NUMBER",lrp.getAttribute("PROJECT_PLAN_NUMBER")); + lriBo.setAttributeValue("CONTRACT_ID",vlrpBo.getAttribute("CONTRACT_ID")); + lriBo.setAttributeValue("CONTRACT_PLAN_NUMBER",lrp.getAttribute("CONTRACT_PLAN_NUMBER")); + lriBo.setAttributeValue("PAYMENT_NUMBER",vlrpBo.getAttribute("PAYMENT_NUMBER")); + lriBo.setAttributeValue("PLAN_ID",vlrpBo.getAttribute("ID")); + lriBo.setAttributeValue("PLAN_LIST",vlrpBo.getAttribute("PLAN_LIST")); + double hireList = Sqlca.getDouble("select max(HIRE_LIST) from lc_rent_income where PAYMENT_NUMBER='"+vlrpBo.getAttribute("PAYMENT_NUMBER")+"' and PLAN_LIST='"+vlrpBo.getAttribute("PLAN_LIST")+"'"); + lriBo.setAttributeValue("HIRE_LIST",hireList+1); + lriBo.setAttributeValue("HIRE_DATE",vlrpBo.getAttribute("PLAN_DATE")); + lriBo.setAttributeValue("RENT",drent); + lriBo.setAttributeValue("PENALTY","0.00"); + lriBo.setAttributeValue("CORPUS_ADJUST","0.00"); + lriBo.setAttributeValue("INTEREST_ADJUST","0.00"); + lriBo.setAttributeValue("PENALTY_ADJUST","0.00"); + lriBo.setAttributeValue("SETTLE_METHOD","settlemethod7"); + lriBo.setAttributeValue("DEDUCTION_ID",fundIncomeId); + lriBo.setAttributeValue("ACCOUNTING_DATE",vlrpBo.getAttribute("PLAN_DATE")); + lriBo.setAttributeValue("MEMO","ֿ֤۶ʱ"); + lriBo.setAttributeValue("ROLL_BACK","0"); + lriBo.setAttributeValue("INPUTTIME",sdf.format(new Date())); + lriBm.saveObject(lriBo); + + BizObject lfpBo = lfpBm.createQuery("PAYMENT_NUMBER='"+vlrpBo.getAttribute("PAYMENT_NUMBER")+"'").getSingleResult(false); + BizObject lfiBo = lfiBm.newObject(); + lfiBo.setAttributeValue("ID", fundIncomeId); + //lfiBo.setAttributeValue("RELATIVE_ID", lfpBo.getAttribute("RELATIVE_ID")); + lfiBo.setAttributeValue("PROJECT_ID", lfpBo.getAttribute("PROJECT_ID")); + lfiBo.setAttributeValue("PROJECT_PLAN_NUMBER", lfpBo.getAttribute("PROJECT_PLAN_NUMBER")); + lfiBo.setAttributeValue("CONTRACT_ID", lfpBo.getAttribute("CONTRACT_ID")); + lfiBo.setAttributeValue("CONTRACT_PLAN_NUMBER", lfpBo.getAttribute("CONTRACT_PLAN_NUMBER")); + lfiBo.setAttributeValue("PAYMENT_NUMBER", lfpBo.getAttribute("PAYMENT_NUMBER")); + lfiBo.setAttributeValue("PLAN_ID", vlrpBo.getAttribute("ID")); + lfiBo.setAttributeValue("PLAN_LIST", lfpBo.getAttribute("PLAN_LIST")); + lfiBo.setAttributeValue("PAY_TYPE", lfpBo.getAttribute("PAY_TYPE")); + lfiBo.setAttributeValue("FEE_TYPE", lfpBo.getAttribute("FEE_TYPE")); + lfiBo.setAttributeValue("SETTLE_METHOD","settlemethod7"); + double chargeList = Sqlca.getDouble("select max(CHARGE_LIST) from lc_fund_income where PAYMENT_NUMBER='"+lfpBo.getAttribute("PAYMENT_NUMBER")+"' and PLAN_LIST='"+lfpBo.getAttribute("PLAN_LIST")+"'"); + lfiBo.setAttributeValue("CHARGE_LIST",chargeList+1); + lfiBo.setAttributeValue("FACT_DATE",vlrpBo.getAttribute("PLAN_DATE")); + lfiBo.setAttributeValue("FACT_MONEY",drent); + lfiBo.setAttributeValue("FEE_ADJUST","0.00"); + lfiBo.setAttributeValue("ACCOUNTING_DATE",vlrpBo.getAttribute("PLAN_DATE")); + lfiBo.setAttributeValue("APPLYPAY_DATE",vlrpBo.getAttribute("PLAN_DATE")); + lfiBo.setAttributeValue("MEMO","ֿ֤۶ʱ"); + lfiBo.setAttributeValue("ROLL_BACK","0"); + lfiBo.setAttributeValue("INPUTTIME",sdf.format(new Date())); + lfiBm.saveObject(lfiBo); + + if( drent.compareTo(rentOver) == 0 ){//Ӧ޸ƻе״̬ + lrp.setAttributeValue("COLLECT_STATUS","ֿ֤"); + lrp.setAttributeValue("COLLECT_MSG","ֿ֤"); + lrpBm.saveObject(lrp); + } + } + + } } - String rent = Sqlca.getString("SELECT SUM(lrp.RENT) FROM lc_rent_plan lrp WHERE lrp.PAYMENT_NUMBER='"+vlrpBo.getAttribute("PAYMENT_NUMBER")+"' AND plan_date>DATE_FORMAT(NOW(),'%Y/%m/%d')"); - BigDecimal money = null; - if(rent==null) { - money = new BigDecimal(factMoney); - }else { - money = new BigDecimal(factMoney).subtract(new BigDecimal(rent)); - } - if(money.compareTo(BigDecimal.ZERO)<1) { - continue; - } - - BizObject lriBo = lriBm.newObject(); - BigDecimal interestOver = new BigDecimal(vlrpBo.getAttribute("interest_over").toString()); - if(interestOver.compareTo(money)>-1) { - lriBo.setAttributeValue("INTEREST",money); - money=BigDecimal.ZERO; - }else { - lriBo.setAttributeValue("INTEREST",interestOver); - money=money.subtract(interestOver); - } - - BigDecimal corpusOver = new BigDecimal(vlrpBo.getAttribute("corpus_over").toString()); - if(corpusOver.compareTo(money)>-1) { - lriBo.setAttributeValue("CORPUS",money); - money=BigDecimal.ZERO; - }else { - lriBo.setAttributeValue("CORPUS",corpusOver); - money=money.subtract(corpusOver); - } - String fundIncomeId = UUID.randomUUID().toString().replaceAll("-",""); - lriBo.setAttributeValue("PROJECT_ID",vlrpBo.getAttribute("PROJECT_ID")); - lriBo.setAttributeValue("PROJECT_PLAN_NUMBER",vlrpBo.getAttribute("PROJECT_PLAN_NUMBER")); - lriBo.setAttributeValue("CONTRACT_ID",vlrpBo.getAttribute("CONTRACT_ID")); - lriBo.setAttributeValue("CONTRACT_PLAN_NUMBER",vlrpBo.getAttribute("CONTRACT_PLAN_NUMBER")); - lriBo.setAttributeValue("PAYMENT_NUMBER",vlrpBo.getAttribute("PAYMENT_NUMBER")); - lriBo.setAttributeValue("PLAN_ID",vlrpBo.getAttribute("ID")); - lriBo.setAttributeValue("PLAN_LIST",vlrpBo.getAttribute("PLAN_LIST")); - double hireList = Sqlca.getDouble("select max(HIRE_LIST) from lc_rent_income where PAYMENT_NUMBER='"+vlrpBo.getAttribute("PAYMENT_NUMBER")+"' and PLAN_LIST='"+vlrpBo.getAttribute("PLAN_LIST")+"'"); - lriBo.setAttributeValue("HIRE_LIST",hireList+1); - lriBo.setAttributeValue("HIRE_DATE",vlrpBo.getAttribute("PLAN_DATE")); - lriBo.setAttributeValue("RENT",vlrpBo.getAttribute("CORPUS").getDouble()+vlrpBo.getAttribute("INTEREST").getDouble()); - lriBo.setAttributeValue("PENALTY","0.00"); - lriBo.setAttributeValue("CORPUS_ADJUST","0.00"); - lriBo.setAttributeValue("INTEREST_ADJUST","0.00"); - lriBo.setAttributeValue("PENALTY_ADJUST","0.00"); - lriBo.setAttributeValue("SETTLE_METHOD","settlemethod7"); - lriBo.setAttributeValue("DEDUCTION_ID",fundIncomeId); - lriBo.setAttributeValue("ACCOUNTING_DATE",vlrpBo.getAttribute("PLAN_DATE")); - lriBo.setAttributeValue("MEMO","ֿ֤۶ʱ"); - lriBo.setAttributeValue("ROLL_BACK","0"); - lriBo.setAttributeValue("INPUTTIME",sdf.format(new Date())); - lriBm.saveObject(lriBo); - - BizObject lfpBo = lfpBm.createQuery("PAYMENT_NUMBER='"+vlrpBo.getAttribute("PAYMENT_NUMBER")+"'").getSingleResult(false); - BizObject lfiBo = lfiBm.newObject(); - lfiBo.setAttributeValue("ID", fundIncomeId); - lfiBo.setAttributeValue("RELATIVE_ID", lfpBo.getAttribute("RELATIVE_ID")); - lfiBo.setAttributeValue("PROJECT_ID", lfpBo.getAttribute("PROJECT_ID")); - lfiBo.setAttributeValue("PROJECT_PLAN_NUMBER", lfpBo.getAttribute("PROJECT_PLAN_NUMBER")); - lfiBo.setAttributeValue("CONTRACT_ID", lfpBo.getAttribute("CONTRACT_ID")); - lfiBo.setAttributeValue("PAYMENT_NUMBER", lfpBo.getAttribute("PAYMENT_NUMBER")); - lfiBo.setAttributeValue("PLAN_LIST", lfpBo.getAttribute("PLAN_LIST")); - lfiBo.setAttributeValue("PAY_TYPE", lfpBo.getAttribute("PAY_TYPE")); - lfiBo.setAttributeValue("FEE_TYPE", lfpBo.getAttribute("FEE_TYPE")); - lfiBo.setAttributeValue("SETTLE_METHOD","settlemethod7"); - double chargeList = Sqlca.getDouble("select max(CHARGE_LIST) from lc_fund_income where PAYMENT_NUMBER='"+lfpBo.getAttribute("PAYMENT_NUMBER")+"' and PLAN_LIST='"+lfpBo.getAttribute("PLAN_LIST")+"'"); - lfiBo.setAttributeValue("CHARGE_LIST",chargeList+1); - lfiBo.setAttributeValue("FACT_DATE",vlrpBo.getAttribute("PLAN_DATE")); - lfiBo.setAttributeValue("FACT_MONEY",vlrpBo.getAttribute("CORPUS").getDouble()+vlrpBo.getAttribute("INTEREST").getDouble()); - lfiBo.setAttributeValue("FEE_ADJUST","0.00"); - lfiBo.setAttributeValue("ACCOUNTING_DATE",vlrpBo.getAttribute("PLAN_DATE")); - lfiBo.setAttributeValue("APPLYPAY_DATE",vlrpBo.getAttribute("PLAN_DATE")); - lfiBo.setAttributeValue("MEMO","ֿ֤۶ʱ"); - lfiBo.setAttributeValue("ROLL_BACK","0"); - lfiBo.setAttributeValue("INPUTTIME",sdf.format(new Date())); - lfiBm.saveObject(lfiBo); + } + } QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.MarginDeduction", "success", "ɹ", userId == null? "system" : userId.toString()); } catch (Exception e1) {