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);
}
}