diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java b/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java index 8cb662d4a..ff1d7fecf 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java @@ -33,13 +33,11 @@ public class MarginDeduction implements Job{ JBOTransaction tx = null; Transaction Sqlca = null; 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); + BizObjectManager lrpBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_RENT_PLAN"); + BizObjectManager lriBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_RENT_INCOME"); + BizObjectManager lfiBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_INCOME"); + BizObjectManager lfpBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_FUND_PLAN"); + BizObjectManager vlrpBm = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.VI_LC_RENT_PLAN"); 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 " + @@ -47,137 +45,140 @@ public class MarginDeduction implements Job{ "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; + try { + + 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); } - 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); + if(j == vlrpBoList.size()-1 ){//循环的数据等于集合的值,说明抵扣前的金额已经还完 + tx = JBOFactory.createJBOTransaction(); + Sqlca = Transaction.createTransaction(tx); + Sqlca.join(lrpBm); + Sqlca.join(lriBm); + Sqlca.join(lfiBm); + Sqlca.join(lfpBm); + String plan_date = vlrpBo.getAttribute("plan_date").toString().substring(0,7); + String nowDate = DateUtil.getSystemTimeByFormat("yyyy/MM/dd").substring(0,7); + 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", "feetype16"); + 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); + } + + /** + * 生成凭证 + */ + CreateVoucherDepositDeductionToMoney2 cddm = new CreateVoucherDepositDeductionToMoney2(); + cddm.CreateVoucher("PZ2021091700000031", "admin", Sqlca,fundIncomeId); + cddm.CreateVoucher("PZ2021091700000032", "admin", Sqlca,fundIncomeId); } - - 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); - } - - /** - * 生成凭证 - */ - CreateVoucherDepositDeductionToMoney2 cddm = new CreateVoucherDepositDeductionToMoney2(); - cddm.CreateVoucher("PZ2021091700000031", "admin", Sqlca,fundIncomeId); - cddm.CreateVoucher("PZ2021091700000032", "admin", Sqlca,fundIncomeId); + tx.commit(); } - } + + } catch (Exception e1) { + try { + if(tx!=null)tx.rollback(); + } catch (JBOException e) { + e.printStackTrace(); + } + e1.printStackTrace(); } - } } QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.MarginDeduction", "success", "成功", userId == null? "system" : userId.toString()); - } catch (Exception e1) { - try { - Sqlca.rollback(); - tx.rollback(); - } catch (JBOException e) { - e.printStackTrace(); - } - e1.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.MarginDeduction", "error", "失败", userId == null? "system" : userId.toString()); - - }finally { - try { - Sqlca.commit(); - tx.commit(); - } catch (JBOException e) { - e.printStackTrace(); - } } } }