保证金抵扣流程
This commit is contained in:
parent
304385e673
commit
1570155c0d
142
src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java
Normal file
142
src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java
Normal file
@ -0,0 +1,142 @@
|
||||
package com.tenwa.lease.app.quartzmession;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import com.amarsoft.are.jbo.BizObject;
|
||||
import com.amarsoft.are.jbo.BizObjectManager;
|
||||
import com.amarsoft.are.jbo.JBOException;
|
||||
import com.amarsoft.are.jbo.JBOFactory;
|
||||
import com.amarsoft.are.jbo.JBOTransaction;
|
||||
import com.amarsoft.are.util.StringFunction;
|
||||
import com.amarsoft.awe.util.Transaction;
|
||||
import com.base.util.QuartzUtil;
|
||||
|
||||
/**保证金抵扣租金*/
|
||||
public class MarginDeduction implements Job{
|
||||
@Override
|
||||
public void execute(JobExecutionContext arg0) throws JobExecutionException{
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
||||
String startime = StringFunction.getTodayNow();
|
||||
Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId");
|
||||
JBOTransaction tx = null;
|
||||
Transaction Sqlca = null;
|
||||
try {
|
||||
tx = JBOFactory.createJBOTransaction();
|
||||
Sqlca = Transaction.createTransaction(tx);
|
||||
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<BizObject> 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;
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
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("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("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) {
|
||||
try {
|
||||
Sqlca.rollback();
|
||||
tx.rollback();
|
||||
} catch (JBOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
e1.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