FirstScheduleCheckThread.java 1.89 KB
package com.bsth.data.directive;

import java.util.List;
import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.bsth.data.schedule.DayOfSchedule;
import com.bsth.entity.realcontrol.ScheduleRealInfo;
import com.bsth.service.directive.DirectiveService;

/**
 * 
 * @ClassName: FirstScheduleCheckThread 
 * @Description: TODO(首班出场检测) 
 * @author PanZhao 
 * @date 2016年8月27日 上午1:25:21 
 *
 */
@Component
public class FirstScheduleCheckThread extends Thread{

	@Autowired
	DayOfSchedule dayOfSchedule;
	
	@Autowired
	DirectiveService directiveService;
	
	Logger logger = LoggerFactory.getLogger(this.getClass());
	
	//提前半小时下发指令
	private final static long THREE_MINUTES = 1000 * 60 * 30L;
	
	@Override
	public void run() {
		try{
			Set<String> cars = dayOfSchedule.allCar();
			
			long t = System.currentTimeMillis();
			List<ScheduleRealInfo> schList;
			ScheduleRealInfo first;
			for(String car : cars){

				schList = dayOfSchedule.findByNbbm(car);
				
				if(null == schList || schList.size() == 0)
					continue;
				
				first = schList.get(0);
				
				if(null != first.getBcType() 
						&& first.getBcType().equals("out")){
					
					//没有计划里程的出场班次,出场既是首发站,发送下一班次的营运指令
					if(first.getJhlc() == null && first.getXlDir().equals(schList.get(1).getXlDir()))
						first = schList.get(1);
					
					//为首班补发指令
					if(first.getDirectiveState() == -1
							&& Math.abs(first.getDfsjT() - t) < THREE_MINUTES){
						
						directiveService.send60Dispatch(first, dayOfSchedule.doneSum(first.getClZbh()), "定补@系统");
					}
				}
			}
		}catch(Exception e){
			logger.error("", e);
		}
	}
}