package com.cabletech.business.sysmanager.job; import java.io.Serializable; import java.text.ParseException; import java.util.Date; import javax.annotation.Resource; import org.apache.log4j.Logger; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory; import com.cabletech.baseinfo.jms.JmsSmMessageSender; import com.cabletech.baseinfo.jms.JmsSmParameter; import com.cabletech.business.sysmanager.model.WorkorderControlInfo; import com.cabletech.business.sysmanager.service.WorkorderControlInfoService; /** * * @author Administrator * */ public class AfterOvertime implements Job, Serializable { private static final long serialVersionUID = 1L; public Logger logger = Logger.getLogger(this.getClass()); @Resource(name = "smMessageSender") private JmsSmMessageSender smSender; @Override public void execute(JobExecutionContext context) throws JobExecutionException { SchedulerFactory scheFact = new StdSchedulerFactory(); Scheduler sche = null; boolean tag = false; try { sche = scheFact.getScheduler(); JobDataMap jobDataMap = context.getTrigger().getJobDataMap(); WorkorderControlInfo object = (WorkorderControlInfo) jobDataMap .get("object"); Common common = (Common) jobDataMap.get("common"); WorkorderControlInfoService workorderControlInfoService = (WorkorderControlInfoService) jobDataMap .get("workorderControlInfoService"); long limitTime = common.getLimitTime(); if (object != null) { return; } Date now = new Date(); if (object.getHandleLimit() != null) { if (now.equals(Common.getDateByType(limitTime, object.getHandleLimit(), 1))) { this.sendMesge(object, 3, limitTime, workorderControlInfoService); } tag = sche.deleteJob(context.getJobDetail().getName(), "WarnJob_After_Group"); if (tag) { logger.info("delete job sucess"); } else { logger.info("delete job failed"); } } } catch (SchedulerException e) { } catch (ParseException e) { } } /** * * @param info * WorkorderControlInfo * @param flag * int * @param limitTime * long * @param workorderControlInfoService * WorkorderControlInfoService */ public void sendMesge(WorkorderControlInfo info, int flag, long limitTime, WorkorderControlInfoService workorderControlInfoService) { StringBuffer sb = new StringBuffer(); sb.append("您").append(info.getWorkorderTitle()).append(",在超时时限为"); sb.append(info.getHandleLimit()).append("内"); if (flag == 1) // 超時前提醒 sb.append(",注意:还有" + limitTime + "分鐘超時"); if (flag == 2) sb.append("已经超时了"); if (flag == 3) sb.append("已经超时" + limitTime + "分鐘"); String phoneNumber = ""; StringBuffer contents = new StringBuffer(); if (info != null) { phoneNumber = workorderControlInfoService.getPhoneBYWorkId(info .getHandlePersonId()); } contents.append(sb); JmsSmParameter parameter1 = JmsSmParameter .getInstanceForNotNeedResponse(phoneNumber, contents.toString()); smSender.sendMessage(parameter1); } }