计提分摊利息和贴息

This commit is contained in:
amarsoft 2018-08-15 17:54:45 +08:00
parent 294d8954c8
commit dbc3bf31c8

View File

@ -0,0 +1,121 @@
package com.tenwa.lease.app.quartzmession;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import jbo.com.tenwa.lease.comm.CONTRACT_RENT_MONTH;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.amarsoft.app.awe.config.InitDBType;
import com.amarsoft.are.ARE;
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.log.Log;
import com.amarsoft.are.util.StringFunction;
import com.amarsoft.awe.util.ASResultSet;
import com.amarsoft.awe.util.SqlObject;
import com.amarsoft.awe.util.Transaction;
import com.amarsoft.dict.als.cache.CacheLoaderFactory;
import com.base.util.QuartzUtil;
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
import com.tenwa.leasing.service.voucher.CreateVoucherService;
import com.tenwa.leasing.serviceImpl.voucher.CreateVoucherServiceImpl;
import com.tenwa.reckon.constant.Scale;
import com.tenwa.reckon.util.Conn;
import com.tenwa.reckon.util.DateTools;
import com.tenwa.reckon.util.DateUtils;
public class SplitInts2 implements Job{
private static Log logger=ARE.getLog();
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
Transaction Sqlca =null;
String startime = StringFunction.getTodayNow();
try{
Sqlca = Transaction.createTransaction("als");
Sqlca.executeSQL(new SqlObject("{call proc_contract_rent_month()}"));
Sqlca.commit();
discountApportion();
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.SplitInts", "success", "³É¹¦");
} catch (Exception e) {
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.SplitInts", "success", "ʧ°Ü");
logger.error(e.getMessage());
e.printStackTrace();
}finally{
if(Sqlca!=null){
try {
Sqlca.disConnect();
} catch (JBOException e) {
e.printStackTrace();
}
Sqlca = null;
}
}
}
public void discountApportion() throws Exception{
Transaction Sqlca =null;
DateFormat df = new SimpleDateFormat("yyyy/MM");
String startime = StringFunction.getTodayNow();
Date nowdate=df.parse(startime);
String contract_id="";
String DISCOUNT_money="";
String suminterest="";
BigDecimal discount=new BigDecimal("0.00");
Sqlca = Transaction.createTransaction("als");
Map<String,String> map=new HashMap<String, String>();
String sql="SELECT lec.contract_id,ROUND(ld.DISCOUNT_money/CASE WHEN lci.leas_form='01' THEN 1.16 ELSE 1.06 END ,2) AS DISCOUNT_money,crm.interest FROM LB_DISCOUNT ld LEFT JOIN LB_EQUIPMENT_CAR lec ON lec.FRAME_NUMBER=ld.FRAME_NUMBER AND lec.contract_id IS NOT NULL AND lec.contract_id<>'' LEFT JOIN lb_contract_info lci ON lci.id=lec.contract_id INNER JOIN (SELECT contract_id,SUM(interest) interest FROM contract_rent_month GROUP BY contract_id) crm ON crm.contract_id=lec.contract_id WHERE DATE_FORMAT(ld.inputtime,'%Y/%m/%d')=DATE_FORMAT(SYSDATE(),'%Y/%m/%d')";
List<Map<String,String>> dataList=DataOperatorUtil.getDataBySql(Sqlca, sql, map);
BizObjectManager bom=JBOFactory.getBizObjectManager(CONTRACT_RENT_MONTH.CLASS_NAME, Sqlca);
for(Map<String,String> ma:dataList){
contract_id=ma.get("contract_id");
DISCOUNT_money=ma.get("DISCOUNT_money");
suminterest=ma.get("interest");
BizObject bo=null;
String accurte_date="";
Date accdate=null;
BigDecimal Discount_apart=new BigDecimal("0.00");
BigDecimal Discount_apart_nom=new BigDecimal("0.00");
List<BizObject> bolist=bom.createQuery("contract_id=:contract_id order by rent_list").setParameter("contract_id", contract_id).getResultList(true);
for(int i=0;i<bolist.size();i++){
bo=bolist.get(i);
accurte_date=bo.getAttribute("accrued_date").getString();
accdate=df.parse(accurte_date);
if(accdate.getTime()<nowdate.getTime()){
Discount_apart=Discount_apart.add(new BigDecimal(bo.getAttribute("interest").getString()).divide(new BigDecimal(suminterest),6,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(DISCOUNT_money)));
bo.setAttributeValue("discount", "0.00");
}
if(accdate.getTime()==nowdate.getTime()){
Discount_apart=Discount_apart.add(new BigDecimal(bo.getAttribute("interest").getString()).divide(new BigDecimal(suminterest),6,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(DISCOUNT_money)));
bo.setAttributeValue("discount", Discount_apart);
}
if(accdate.getTime()>nowdate.getTime()){
Discount_apart_nom=new BigDecimal(bo.getAttribute("interest").getString()).divide(new BigDecimal(suminterest),6,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(DISCOUNT_money));
bo.setAttributeValue("discount", Discount_apart_nom);
}
bom.saveObject(bo);
}
}
Sqlca.commit();
//²éѯlb_discount±í£¬
}
}