package quartz; import java.util.List; import java.util.Map; import jbo.app.tenwa.calc.VI_CONTRACT_OVERDUE; import jbo.app.tenwa.calc.VI_OVERDUE_RENT_PLAN_SUM; 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.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.are.util.StringFunction; import com.base.util.QuartzUtil; import com.tenwa.comm.util.jboutil.DataOperatorUtil; //import com.tenwa.action.channelportal.ContractSignAction; //import com.tenwa.action.channelportal.comm.ContractTransferRightForEnd; import com.tenwa.comm.util.jboutil.SaveBusinessStatus; import com.tenwa.lease.app.quartzmession.JobInitUserName; public class ContractInfoForOverdue implements Job{ private JobInitUserName jboName; @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { String startime = StringFunction.getTodayNow(); Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId"); String curUserId = userId == null? "system" : userId.toString(); try { JBOTransaction tx = JBOFactory.createJBOTransaction(); ownershipTransferSign(tx,arg0); contractNormal(tx,arg0); tx.commit(); QuartzUtil.insertLog(startime, "quartz.ContractInfoForOverdue", "success", "成功", curUserId); } catch (Exception e) { QuartzUtil.insertLog(startime, "quartz.ContractInfoForOverdue", "error", "失败", curUserId); e.printStackTrace(); } } /** * 将逾期的合同改为正常状态 * @param tx * @param arg0 */ private void contractNormal(JBOTransaction tx, JobExecutionContext arg0) { String sql = "SELECT O.contract_number,O.over_days,lci.id FROM business_status O LEFT JOIN lb_contract_info lci ON lci.contract_number = O.contract_number WHERE O.over_days IS NOT NULL AND O.over_days != '' AND DATE_FORMAT(O.inputtime, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY)"; String contractNumber = ""; String contractId = ""; try { //查询合同状态表中昨天的逾期合同 List> list = DataOperatorUtil.getDataBySql(tx, sql, null); if(list.size()>0){ //循环遍历每一条逾期的合同 for (Map map : list) { contractNumber = map.get("contract_number"); contractId = map.get("id"); //查询今天是否逾期,如果未逾期则插入合同正常 BizObject obj = JBOFactory.createBizObjectQuery(VI_OVERDUE_RENT_PLAN_SUM.CLASS_NAME, "contract_id=:contract_id").setParameter("contract_id", contractId).getSingleResult(false); if(obj == null){//昨天逾期,今天未逾期,证明合同正常 //防止在当天执行多次定时任务重复插入数据 String sql1 = "SELECT business_status,contract_number,inputtime FROM business_status WHERE business_status='64' AND contract_number='"+contractNumber+"' AND LEFT(inputtime,10)=DATE_FORMAT(SYSDATE(), '%Y/%m/%d')"; List> list2 = DataOperatorUtil.getDataBySql(tx, sql1, null); //如果这个合同已经提前结清就不再更新状态 String sql3 = "SELECT id FROM lb_contract_info WHERE id='"+contractId+"' and CONTRACT_STATUS='100' "; List> list3 = DataOperatorUtil.getDataBySql(tx, sql1, null); if(list2.size()==0 && list3.size()==0 ){ SaveBusinessStatus.saveByContractId(contractId, tx, "64", jboName.getUserId(arg0, tx)); } } } } } catch (Exception e) { e.printStackTrace(); } } public void ownershipTransferSign(JBOTransaction tx ,JobExecutionContext arg0) throws Exception{ String conInfo1 = getContractId(tx); //BizObjectManager businessStatusManagr = JBOFactory.getBizObjectManager(BUSINESS_STATUS.CLASS_NAME, tx); if(!(conInfo1 == null || conInfo1.length() <= 0)){ String[] conInfos = conInfo1.split(","); for(String conInfo:conInfos){ String contractId = conInfo.split("@")[0]; SaveBusinessStatus.saveByContractId(contractId, tx, "46", jboName.getUserId(arg0, tx)); } } } //获取逾期的合同 public String getContractId(JBOTransaction tx ) throws Exception{ BizObjectManager bom=JBOFactory.getBizObjectManager(VI_CONTRACT_OVERDUE.CLASS_NAME); List boList = bom.createQuery("contract_status <> '105'").getResultList(true); String conInfos = new String(); for(BizObject bo : boList){ conInfos += bo.getAttribute("contract_id")+"@"; conInfos += bo.getAttribute("over_days")+","; // conInfos += bo.getAttribute("BUSINESS_STATUS")+","; } return conInfos; } }