2019-04-17 09:21:05 +08:00

149 lines
5.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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表
}
}