From 1570155c0d7714fcb41bc51ac1cc712401225700 Mon Sep 17 00:00:00 2001 From: lixuebo <鑵惧崕@LAPTOP-A55EUNR5> Date: Mon, 16 Aug 2021 15:30:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E8=AF=81=E9=87=91=E6=8A=B5=E6=89=A3?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/quartzmession/MarginDeduction.java | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java b/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java new file mode 100644 index 000000000..42f94f5e9 --- /dev/null +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/MarginDeduction.java @@ -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 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(); + } + } + } +}