ScheduleRefreshThread.java 2.26 KB
package com.bsth.data.schedule.thread;

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.data.pilot80.PilotReport;
import com.bsth.data.schedule.DayOfSchedule;
import com.bsth.entity.realcontrol.LineConfig;

/**
 * 
 * @ClassName: ScheduleRefreshThread
 * @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;
	
	@Autowired
	PilotReport pilotReport;
	
	Logger logger = LoggerFactory.getLogger(ScheduleRefreshThread.class);
	
	@Override
	public void run() {
		try {
			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));
					//清除驾驶员上报数据
					pilotReport.clear(lineCode);
					
					//重载排班数据
					dayOfSchedule.reloadSch(lineCode, currSchDate, false);
					logger.info(lineCode + "翻班完成, " + currSchDate + " -班次数量:" + dayOfSchedule.findByLineCode(lineCode).size());
				}
			}
			
		} catch (Exception e) {
			logger.error("", e);
		}
	}
}