package com.hqyg.disjob.monitor.alarm; import java.util.Date; import com.hqyg.disjob.common.util.DateUtil; import com.hqyg.disjob.event.BaseCondition; import com.hqyg.disjob.monitor.pojo.JobProgressTimeInfo; import com.hqyg.disjob.monitor.service.JobService; import com.hqyg.disjob.monitor.util.MonitorSpringWorkFactory; import com.hqyg.disjob.monitor.alarm.service.MessagePipleService; import com.hqyg.disjob.monitor.db.domain.DBJobBasicInfo; public abstract class AbstractAlarmCondition extends BaseCondition<JobProgressTimeInfo,Integer>{ public AbstractAlarmCondition(JobProgressTimeInfo observiable, Integer v) { super(observiable, v); } @Override public abstract boolean isFinished() ; @Override public void handler() { MessagePipleService messageService = MonitorSpringWorkFactory.getMessagePipleService(); JobProgressTimeInfo jptime = getObserviable(); String requestId = jptime.getRequestId() ; if(isFinished()){//表示:接收时间、开始执行时间、执行结束三个消息都已经接收到 long consumerTime = (jptime.getJobCompleteTime() - jptime.getJobBegingTime())/1000; messageService.offerMessage(requestId,consumerTime); //1、更新耗时 DBJobBasicInfo info = new DBJobBasicInfo(); info.setUuid(requestId); info.setTimeConsuming(consumerTime); info.setJobRecvTime(DateUtil.getFormat(new Date(jptime.getJobRecvTime()), DateUtil.YYYY_MM_DD_HH_MM_SS)); info.setExecuteStart(DateUtil.getFormat(new Date(jptime.getJobBegingTime()), DateUtil.YYYY_MM_DD_HH_MM_SS)); info.setExecuteEnd(DateUtil.getFormat(new Date(jptime.getJobCompleteTime()), DateUtil.YYYY_MM_DD_HH_MM_SS)); JobService jobService = MonitorSpringWorkFactory.getJobService(); jobService.getJobTracker(requestId).notifyUpdateDBBasicInfoEvent(info);; //2、一个周期处理,卸载相关数据 jobService.removeJobTracker(requestId); jobService.removeAlarmCondition(requestId); } } }