修改保证金自动抵扣
This commit is contained in:
parent
faed354833
commit
7621e38354
@ -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<Map<String,String>> 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<BizObject> 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<BizObject> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user