apzl_leasing/src_tenwa/quartz/ContractInfoForOverdue.java

115 lines
4.6 KiB
Java

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<Map<String, String>> list = DataOperatorUtil.getDataBySql(tx, sql, null);
if(list.size()>0){
//循环遍历每一条逾期的合同
for (Map<String, String> 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<Map<String, String>> list2 = DataOperatorUtil.getDataBySql(tx, sql1, null);
//如果这个合同已经提前结清或者正常结束就不再更新状态
String sql3 = "SELECT id FROM lb_contract_info WHERE id='"+contractId+"' and (CONTRACT_STATUS='100' or CONTRACT_STATUS='105' )";
List<Map<String, String>> list3 = DataOperatorUtil.getDataBySql(tx, sql3, 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<BizObject> 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;
}
}