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.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; 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(); Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId"); String curUserId = userId == null? "system" : userId.toString(); JBOTransaction tx =null; try{ //汽车业务 Sqlca = Transaction.createTransaction("als"); Sqlca.executeSQL(new SqlObject("{call proc_contract_rent_month()}")); 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 map=new HashMap(); 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> dataList=DataOperatorUtil.getDataBySql(Sqlca, sql, map); BizObjectManager bom=JBOFactory.getBizObjectManager(CONTRACT_RENT_MONTH.CLASS_NAME, Sqlca); for(Map 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 bolist=bom.createQuery("contract_id=:contract_id order by rent_list").setParameter("contract_id", contract_id).getResultList(true); for(int i=0;inowdate.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表, } }