BasicDataController.java 3.94 KB
package com.bsth.controller.realcontrol;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.PropertyFilter;
import com.bsth.common.ResponseCode;
import com.bsth.data.BasicData;
import com.bsth.entity.Line;
import com.google.common.collect.ArrayListMultimap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;

@RestController
@RequestMapping("/basic")
public class BasicDataController {

	@Autowired
	BasicData.BasicDataLoader dataLoader;

	@Autowired
	BasicData basicData;

	Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@RequestMapping("/cars")
	public Iterable<String> findAllNbbm(Map<String, Object> map){
		return BasicData.deviceId2NbbmMap.values();
	}
	
	@RequestMapping("/nbbm2deviceId")
	public Map<String, String> nbbm2deviceId(Map<String, Object> map){
		return BasicData.deviceId2NbbmMap.inverse();
	}
	
	@RequestMapping("/lineCode2Name")
	public Map<String, String> findLineCodeMap(){
		return BasicData.lineCode2NameMap;
	}
	
	@RequestMapping("/parks")
	public Map<String, String> findParks(){
		Map<String, String> rs = new HashMap<>();
		List<String> codes = BasicData.parkCodeList;
		for(String code : codes){
			rs.put(code, BasicData.stationCode2NameMap.get(code));
		}
		return rs;
	}
	
	@RequestMapping("/personnel")
	public Map<String, Object> findPersonnelInfo(){
		Map<String, Object> rs = new HashMap<>();
		PersonnelFieldFilter filter=new PersonnelFieldFilter();
		//驾驶员
		rs.put("jsy", JSON.parse(JSON.toJSONString(BasicData.jsyMap.values(), filter)));
		//售票员
		rs.put("spy", JSON.parse(JSON.toJSONString(BasicData.spyMap.values(), filter)));
		return rs;
	}
	
	@RequestMapping("/all_personnel")
	public Map<String, String> all_personnel(){
		return BasicData.allPerson;
	}
	

	public class PersonnelFieldFilter implements PropertyFilter{
		
		String[] whiteList=new String[]{"jobCode", "personnelName", "brancheCompany"};
		@Override
		public boolean apply(Object object, String name, Object value) {
			for(String f : whiteList){
				if(name.equals(f))
					return true;
			}
			return false;
		}
	}

	/**
	 * 刷新车辆和设备号对照数据
	 * @return
	 */
	@RequestMapping(value = "/refresh_nbbm2Device", method = RequestMethod.POST)
	public Map<String, Object> refreshNbbm2DeviceId(){
		Map<String, Object> rs = new HashMap<>();
		try {
			dataLoader.loadDeviceInfo();
			rs.put("status", ResponseCode.SUCCESS);
		}catch (Exception e){
			rs.put("status", ResponseCode.ERROR);
			rs.put("msg", e.getMessage());
			logger.error("", e);
		}
		return rs;
	}

	/**
	 * 刷新员工对照数据
	 * @return
	 */
	@RequestMapping(value = "/refresh_person_data", method = RequestMethod.POST)
	public Map<String, Object> refreshPersonData(){
		Map<String, Object> rs = new HashMap<>();
		try {
			dataLoader.loadPersonnelInfo();
			rs.put("status", ResponseCode.SUCCESS);
		}catch (Exception e){
			rs.put("status", ResponseCode.ERROR);
			rs.put("msg", e.getMessage());
			logger.error("", e);
		}
		return rs;
	}

	/**
	 * 车辆自编号和车牌号对照
	 * @return
	 */
	@RequestMapping("/nbbm2PlateNo")
	public Map<String, String> nbbm2PlateNo(){
		return basicData.getNbbm2PlateNo();
	}


	/**
	 * 获取线路配车信息
	 * @return
	 */
	@RequestMapping("/ccInfo")
	public Map<String, Collection<String>> ccInfo(){

		ArrayListMultimap<String, String> listMultimap = ArrayListMultimap.create();
		Set<String> ks = BasicData.nbbm2LineMap.keySet();

		Line line;
		for(String nbbm : ks){
			line = BasicData.nbbm2LineMap.get(nbbm);
			listMultimap.put(line.getLineCode(), nbbm);
		}
		return listMultimap.asMap();
	}
}