BasicData.java 4.97 KB
package com.bsth.data;

import java.util.HashMap;
import java.util.Iterator;
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.schedule.CarConfigInfo;
import com.bsth.repository.CarParkRepository;
import com.bsth.repository.CarsRepository;
import com.bsth.repository.LineRepository;
import com.bsth.repository.StationRepository;
import com.bsth.repository.schedule.CarConfigInfoRepository;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.TreeMultimap;

/**
 * 
 * @ClassName: BasicData
 * @Description: TODO(基础的映射数据)
 * @author PanZhao
 * @date 2016年8月10日 下午3:27:45
 *
 */
@Component
public class BasicData {
	
	//设备号和车辆自编号 (K: 设备编码 ,V:车辆自编号)
	public static BiMap<String, String> deviceId2NbbmMap;

	//车辆自编号和公司代码对照 (K: 车辆自编号 ,V:公司代码)
	public static Map<String, String> nbbm2CompanyCodeMap;

	//站点编码和名称对照,包括停车场 (K: 站点编码 ,V:站点名称)
	public static Map<String, String> stationCode2NameMap;
	
	//车辆和线路对照
	public static Map<String, Line> nbbm2LineMap;

	//线路和用户对照 用于webSocket定向推送消息(用户进入线调时写入数据)
	public static TreeMultimap<Integer, String> lineCode2SocketUserMap = TreeMultimap.create();

	//线路ID和code 对照
	public static BiMap<Integer, Integer> lineId2CodeMap;
	
	@Autowired
	BasicDataLoader basicDataLoader;
	
	Logger logger = LoggerFactory.getLogger(this.getClass());
	
	/**
	 * 
	 * @Title: loadAllData 
	 * @Description: TODO(加载所有数据) 
	 * @throws
	 */
	public int loadAllData(){
		try{
			basicDataLoader.loadDeviceInfo();
			basicDataLoader.loadStationInfo();
			basicDataLoader.loadLineInfo();
			basicDataLoader.loadNbbm2LineInfo();
		}catch(Exception e){
			logger.error("加载基础数据时出现异常," , e);
		}
		return 0;
	}
	
	@Component
	public class BasicDataLoader{
		
		@Autowired
		CarsRepository carsRepository;
		
		@Autowired
		StationRepository stationRepository;
		
		@Autowired
		CarParkRepository carParkRepository;
		
		@Autowired
		CarConfigInfoRepository carConfigInfoRepository;
		
		@Autowired
		LineRepository lineRepository;
		
		/**
		 * 
		 * @Title: loadDeviceInfo 
		 * @Description: TODO(加载设备相关信息) 
		 * @throws
		 */
		public void loadDeviceInfo(){
			BiMap<String, String> deviceId2Nbbm = HashBiMap.create();
			//车辆和公司代码对照
			Map<String, String> nbbm2CompanyCode = new HashMap<>();
			Iterator<Cars> carIterator = carsRepository.findAll().iterator();
			Cars car;
			while(carIterator.hasNext()){
				car = carIterator.next();
				deviceId2Nbbm.put(car.getEquipmentCode(), car.getInsideCode());
				nbbm2CompanyCode.put(car.getInsideCode(), car.getBusinessCode());
			}
			
			deviceId2NbbmMap = deviceId2Nbbm;
			nbbm2CompanyCodeMap = nbbm2CompanyCode;
		}
		
		/**
		 * 
		 * @Title: loadStationInfo 
		 * @Description: TODO(加载站点信息) 
		 * @throws
		 */
		public void loadStationInfo(){
			Map<String, String> stationCode2Name = new HashMap<>();
			Iterator<Station> iterator = stationRepository.findAll().iterator();
			//站点
			Station station;
			while(iterator.hasNext()){
				station = iterator.next();
				stationCode2Name.put(station.getStationCod(), station.getStationName());
			}
			//停车场
			Iterator<CarPark> iterator2 = carParkRepository.findAll().iterator();
			CarPark carPark;
			while(iterator2.hasNext()){
				carPark = iterator2.next();
				stationCode2Name.put(carPark.getParkCode(), carPark.getParkName());
			}
			
			stationCode2NameMap = stationCode2Name;
		}
		
		/**
		 * 
		 * @Title: loadNbbm2LineInfo 
		 * @Description: TODO(车辆和线路对照) 
		 * @throws
		 */
		public void loadNbbm2LineInfo(){
			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());
			}
			nbbm2LineMap = ccMap;
		}
		
		/**
		 * 
		 * @Title: loadLineInfo 
		 * @Description: TODO(加载线路相关信息) 
		 * @throws
		 */
		public void loadLineInfo(){
			Iterator<Line> iterator = lineRepository.findAll().iterator();
			
			Line line;
			BiMap<Integer, Integer> biMap = HashBiMap.create();
			while(iterator.hasNext()){
				line = iterator.next();
				biMap.put(line.getId(), Integer.parseInt(line.getLineCode()));
			}
			
			lineId2CodeMap = biMap;
		}
	}
}