ScheduleRefreshThread.java 1.96 KB
package com.bsth.data.schedule;

import java.util.Collection;
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.BasicData;
import com.bsth.data.LineConfigData;
import com.bsth.data.arrival.ArrivalData_GPS;
import com.bsth.data.directive.DayOfDirectives;
import com.bsth.entity.realcontrol.LineConfig;

/**
 * 
 * @ClassName: refreshScheduleThread
 * @Description: TODO(班次刷新线程,用于在营运开始时间切换到当日排班)
 * @author PanZhao
 * @date 2016年8月17日 下午1:23:34
 *
 */
@Component
public class ScheduleRefreshThread extends Thread{

	@Autowired
	DayOfSchedule dayOfSchedule;
	
	@Autowired
	ArrivalData_GPS arrivalData;
	
	@Autowired
	LineConfigData lineConfs;
	
	@Autowired
	DayOfDirectives dayOfDirectives;
	
	Logger logger = LoggerFactory.getLogger(ScheduleRefreshThread.class);
	
	@Override
	public void run() {
		Collection<LineConfig> confs = lineConfs.getAll();
		
		String currSchDate, oldSchDate;
		String lineCode;
		for(LineConfig conf : confs){
			lineCode = conf.getLine().getLineCode();
			oldSchDate = dayOfSchedule.getCurrSchDate().get(lineCode);
			currSchDate = dayOfSchedule.calcSchDate(lineCode);
			
			if(oldSchDate == null || !oldSchDate.equals(currSchDate)){
				logger.info(lineCode + "开始翻班, " + currSchDate);
				//清除进出站数据
				arrivalData.clearRAMData(lineCode);
				//清除指令数据
				Set<String> cars = dayOfSchedule.findCarByLineCode(lineCode);
				for(String car : cars)
					dayOfDirectives.clear(BasicData.deviceId2NbbmMap.inverse().get(car));
				
				//重载排班数据
				dayOfSchedule.reloadSch(lineCode, currSchDate, false);
				logger.info(lineCode + "翻班完成, " + currSchDate + " -班次数量:" + dayOfSchedule.findByLineCode(lineCode).size());
			}
		}
	}
}