CommonRefreshThread.java 4.56 KB
package com.bsth.vehicle.common;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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

import com.bsth.entity.CarPark;
import com.bsth.entity.Cars;
import com.bsth.entity.Line;
import com.bsth.entity.Station;
import com.bsth.entity.StationRoute;
import com.bsth.entity.schedule.CarConfigInfo;
import com.bsth.repository.CarParkRepository;
import com.bsth.repository.CarsRepository;
import com.bsth.repository.StationRepository;
import com.bsth.repository.StationRouteRepository;
import com.bsth.repository.schedule.CarConfigInfoRepository;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;

/**
 * 
 * @ClassName: CommonRefreshThread 
 * @Description: TODO(刷新映射数据) 
 * @author PanZhao
 * @date 2016年6月7日 下午4:05:34 
 *
 */
@Component
public class CommonRefreshThread extends Thread{

	@Autowired
	CarsRepository carsRepository;

	@Autowired
	StationRepository stationRepository;
	
	@Autowired
	CarParkRepository carParkRepository;
	
	@Autowired
	CarConfigInfoRepository carConfigInfoRepository;
	
	@Autowired
	StationRouteRepository sRouteRepository;
	
	Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@Override
	public void run() {
		try {
			initVehicMapp();
			initStationCodeMap();
			initVehicLineMap();
			
			initLineStationRouteMap();
		} catch (Exception e) {
			e.printStackTrace();
			logger.error("", e);
		}
	}
	
	/**
	 * 
	 * @Title: initLineStationRouteMap 
	 * @Description: TODO(加载线路站点路由信息) 
	 * @throws
	 */
	private void initLineStationRouteMap() {
		List<StationRoute> routes = sRouteRepository.findAll2();
		
		Map<Integer, List<StationRoute>> map = new HashMap<>();
		
		Integer lineCode;
		for(StationRoute route: routes){
			lineCode = Integer.parseInt(route.getLineCode());
			if(!map.containsKey(lineCode))
				map.put(lineCode, new ArrayList<StationRoute>());
			
			map.get(lineCode).add(route);
		}
		
		//排序
		StationRouteComp sRouteComp = new StationRouteComp();
		Iterator<List<StationRoute>> iterator = map.values().iterator();
		List<StationRoute> temp;
		while(iterator.hasNext()){
			temp = iterator.next();
			Collections.sort(temp, sRouteComp);
		}
	}

	/**
	 * 
	 * @Title: initVehicLineMap 
	 * @Description: TODO(根据车辆配置,加载车辆和线路对照数据) 
	 * @throws
	 */
	private void initVehicLineMap() {
		Iterator<CarConfigInfo> allIterator = carConfigInfoRepository.findAll().iterator();
		Map<String, Line> ccMap = new HashMap<>();
		
		CarConfigInfo cci;
		while(allIterator.hasNext()){
			cci = allIterator.next();
			ccMap.put(cci.getCl().getInsideCode(), cci.getXl());
		}
		CommonMapped.vehicLineMap = ccMap;
	}

	/**
	 * 
	 * @Title: initDeviceMapp 
	 * @Description: TODO(初始化车辆相关对照) 
	 */
	public void initVehicMapp(){
		BiMap<String, String> biMap = HashBiMap.create();
		//车辆和公司代码对照
		Map<String, String> vcMap = new HashMap<>();
		Iterator<Cars> carIterator = carsRepository.findAll().iterator();
		Cars car;
		while(carIterator.hasNext()){
			car = carIterator.next();
			biMap.put(car.getEquipmentCode(), car.getInsideCode());
			vcMap.put(car.getInsideCode(), car.getBusinessCode());
		}
		
		CommonMapped.vehicDeviceBiMap = biMap;
		CommonMapped.vehicCompanyMap = vcMap;
	}
	
	/**
	 * 
	 * @Title: initStationCodeMap 
	 * @Description: TODO(初始化站点和编码对照) 
	 */
	public void initStationCodeMap(){
		Map<String, String> newMap = new HashMap<>();
		Iterator<Station> iterator = stationRepository.findAll().iterator();
		//站点
		Station station;
		while(iterator.hasNext()){
			station = iterator.next();
			newMap.put(station.getStationCod(), station.getStationName());
		}
		//停车场
		Iterator<CarPark> iterator2 = carParkRepository.findAll().iterator();
		CarPark carPark;
		while(iterator2.hasNext()){
			carPark = iterator2.next();
			newMap.put(carPark.getParkCode(), carPark.getParkName());
		}
		
		CommonMapped.stationCodeMap = newMap;
	}
	
	public static class StationRouteComp implements Comparator<StationRoute>{

		@Override
		public int compare(StationRoute o1, StationRoute o2) {
			return o1.getStationRouteCode() - o2.getStationRouteCode();
		}
	}
}