149 lines
5.7 KiB
Java
149 lines
5.7 KiB
Java
package com.tenwa.lease.app.quartzmession;
|
||
|
||
import java.math.BigDecimal;
|
||
import java.text.DateFormat;
|
||
import java.text.SimpleDateFormat;
|
||
import java.util.Date;
|
||
import java.util.HashMap;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
|
||
import jbo.com.tenwa.lease.comm.CONTRACT_RENT_MONTH;
|
||
|
||
import org.quartz.Job;
|
||
import org.quartz.JobExecutionContext;
|
||
import org.quartz.JobExecutionException;
|
||
|
||
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.jbo.JBOTransaction;
|
||
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;
|
||
|
||
/**
|
||
* 分摊计提
|
||
* @author xiezhiwen
|
||
*/
|
||
public class SplitInts2 implements Job{
|
||
private static Log logger=ARE.getLog();
|
||
@Override
|
||
public void execute(JobExecutionContext arg0) throws JobExecutionException {
|
||
// 定义事物
|
||
Transaction Sqlca =null;
|
||
// 历史, 无用
|
||
JBOTransaction tx =null;
|
||
// 获取当前时间, 格式: 2019/04/11 15:22:27
|
||
String startime = StringFunction.getTodayNow();
|
||
// 获取用户id
|
||
Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId");
|
||
// 如果userId=null, 说明是定时任务执行的, 定义默认用户编码
|
||
String curUserId = userId == null? "system" : userId.toString();
|
||
try{
|
||
//汽车业务
|
||
Sqlca = Transaction.createTransaction("als");
|
||
// 利息及手续费分摊计提
|
||
Sqlca.executeSQL(new SqlObject("{call proc_contract_rent_month_temp()}"));
|
||
// 贴息计提分摊
|
||
Sqlca.executeSQL(new SqlObject("{call proc_contract_discount_month_temp()}"));
|
||
|
||
/*
|
||
* 传统业务
|
||
*/
|
||
Sqlca.executeSQL(new SqlObject("{call proc_contract_rent_month_tradition_temp()}"));
|
||
Sqlca.commit();
|
||
|
||
//传统业务
|
||
/*SplitInts3 s3=new SplitInts3();
|
||
s3.contractRentMonth(tx);
|
||
s3.contractRentQuarter(tx);*/
|
||
// tx.commit();
|
||
// discountApportion();
|
||
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.SplitInts", "success", "成功", curUserId);
|
||
} catch (Exception e) {
|
||
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.SplitInts", "error", "失败", curUserId);
|
||
logger.error(e.getMessage());
|
||
e.printStackTrace();
|
||
try {
|
||
Sqlca.rollback();
|
||
tx.rollback();
|
||
} catch (JBOException e1) {
|
||
// TODO Auto-generated catch block
|
||
e1.printStackTrace();
|
||
}
|
||
}finally{
|
||
try {
|
||
if(Sqlca!=null){
|
||
Sqlca.disConnect();
|
||
Sqlca = null;
|
||
}
|
||
if(tx!=null){
|
||
tx=null;
|
||
}
|
||
} catch (JBOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
}
|
||
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表,
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|