GpsController.java 8.45 KB
package com.bsth.controller.gps;

import com.bsth.data.BasicData;
import com.bsth.data.gpsdata_v2.GpsRealData;
import com.bsth.data.gpsdata_v2.entity.GpsEntity;
import com.bsth.data.gpsdata_v2.handlers.overspeed.GpsOverspeed;
import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess;
import com.bsth.data.kl.KlData;
import com.bsth.data.schedule.e_state_check.ScheduleStationCodeChecker;
import com.bsth.data.schedule.e_state_check.entity.SCodeInfo;
import com.bsth.service.gps.GpsService;
import com.bsth.service.gps.entity.GpsSpeed;
import com.google.common.base.Splitter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("gps")
public class GpsController {

    @Autowired
    GpsRealData gpsRealData;

    @Autowired
    GpsService gpsService;

    @Autowired
    OverspeedProcess overspeedProcess;

    @RequestMapping(value = "/real/all")
    public Map<String, Object> search(@RequestParam Map<String, Object> map,
                                      @RequestParam(defaultValue = "0") int page,
                                      @RequestParam(defaultValue = "15") int size,
                                      @RequestParam(defaultValue = "timestamp") String order,
                                      @RequestParam(defaultValue = "DESC") String direction) {


        return gpsService.search(map, page, size, order, direction);
    }

    @RequestMapping(value = "/real/line/{lineCode}")
    public List<GpsEntity> findByLineCode(@PathVariable("lineCode") String lineCode) {
        return gpsRealData.getByLine(lineCode);
    }

    @RequestMapping(value = "/real/line")
    public Map<String, Object> findByLineCodes(@RequestParam String lineCodes) {
        Map<String, Object> rs = new HashMap();
        List<String> lineArray = Splitter.on(",").splitToList(lineCodes);
        //实时gps
        List<GpsEntity> gpsList = gpsRealData.get(lineArray);

        //超速信息
        List<GpsOverspeed> overspeedList = overspeedProcess.findByLines(lineArray);

        //班次站点检查信息
        List<SCodeInfo> scis = ScheduleStationCodeChecker.findByLineIdx(lineArray);

        for (GpsEntity gpsEntity : gpsList) {
            gpsEntity.setKl(KlData.getKl(gpsEntity.getDeviceId()));
        }
        rs.put("gpsList", gpsList);
        rs.put("overspeedList", overspeedList);
        rs.put("scis", scis);
        return rs;
    }

    @RequestMapping(value = "/allDevices")
    public Iterable<String> allDevices() {
        return gpsRealData.allDevices();
    }

    @RequestMapping(value = "/removeRealGps", method = RequestMethod.POST)
    public Map<String, Object> removeRealGps(@RequestParam String device) {
        return gpsService.removeRealGps(device);
    }

    /**
     * @Title: history @Description: TODO(这个方法给测试页面用) @throws
     */
    @RequestMapping(value = "/history/{device}")
    public List<Map<String, Object>> history(@PathVariable("device") String device, @RequestParam Long startTime,
                                             @RequestParam Long endTime, @RequestParam int directions) {

        return gpsService.history(device, startTime, endTime, directions);
    }

    @RequestMapping(value = "/gpsHistory/multiple")
    public List<Map<String, Object>> gpsHistory(@RequestParam String[] nbbmArray, @RequestParam Long st,
                                                @RequestParam Long et) {
        return (List<Map<String, Object>>) gpsService.history(nbbmArray, st, et).get("list");
    }

	/*@RequestMapping(value = "/analyse/ram")
    public List<ArrivalInfo> ramData(@RequestParam String nbbm) {
		return ArrivalDataBuffer.allMap.get(nbbm);
	}*/

    @RequestMapping(value = "/Car2DeviceId")
    public Map<String, String> findCarDeviceIdMap() {
        return BasicData.deviceId2NbbmMap.inverse();
    }

    @RequestMapping(value = "/buffAera")
    public Map<String, Object> findBuffAeraByCode(@RequestParam String lineCode, @RequestParam String code, @RequestParam String type) {
        return gpsService.findBuffAeraByCode(lineCode, code, type);
    }

    @RequestMapping(value = "/findRoadSpeed")
    public Map<String, Object> findRoadSpeed(@RequestParam String lineCode) {
        return gpsService.findRoadSpeed(lineCode);
    }

    /**
     * gps补全
     * type 0 : 实时GPS 1:走补传
     * @return
     */
    @RequestMapping(value = "/gpsCompletion", method = RequestMethod.POST)
    public Map<String, Object> gpsCompletion(@RequestParam long schId, @RequestParam int type) {
        return gpsService.gpsCompletion(schId, type);
    }

    /**
     * 历史GPS查询 ,第二版轨迹回放用
     * @param nbbm
     * @param st
     * @param et
     * @return
     */
    @RequestMapping(value = "/history_v2/{nbbm}")
    public Map<String, Object> history_v2(@PathVariable("nbbm") String nbbm, @RequestParam long st, @RequestParam long et){
        return gpsService.history_v2(nbbm, st, et);
    }

    /**
     * 历史GPS查询 ,第三版轨迹回放用
     * @param nbbm
     * @param st
     * @param et
     * @return
     */
    @RequestMapping(value = "/history_v3/{nbbm}")
    public Map<String, Object> history_v3(@PathVariable("nbbm") String nbbm, @RequestParam long st, @RequestParam long et){
        return gpsService.history_v3(nbbm, st, et);
    }

    /**
     * 轨迹导出
     * @param nbbm
     * @param st
     * @param et
     * @return
     */
    @RequestMapping(value = "/history_v3/excel/{nbbm}")
    public void trailExcel(@PathVariable("nbbm") String nbbm, @RequestParam long st, @RequestParam long et, HttpServletResponse resp){
        gpsService.trailExcel(nbbm, st, et, resp);
    }

    /**
     * 轨迹异常数据导出
     * @param nbbm
     * @param st
     * @param et
     * @return
     */
    @RequestMapping(value = "/history_v3/excel_abnormal/{nbbm}")
    public void abnormalExcel(@PathVariable("nbbm") String nbbm, @RequestParam long st, @RequestParam long et, HttpServletResponse resp){
        gpsService.abnormalExcel(nbbm, st, et, resp);
    }

    /**
     * 到离站数据导出
     * @param nbbm
     * @param st
     * @param et
     * @return
     */
    @RequestMapping(value = "/history_v3/excel_arrival/{nbbm}")
    public void arrivalExcel(@PathVariable("nbbm") String nbbm, @RequestParam long st, @RequestParam long et, HttpServletResponse resp){
        gpsService.arrivalExcel(nbbm, st, et, resp);
    }




    /**
     * 安全驾驶数据 分页查询
     * @param map
     * @param page
     * @param size
     * @param order
     * @param direction
     * @return
     */
    @RequestMapping(value = "/safeDriv")
    public Map<String, Object> safeDrivList(@RequestParam Map<String, Object> map,
                                       @RequestParam(defaultValue = "0") int page,
                                       @RequestParam(defaultValue = "15") int size,
                                       @RequestParam(defaultValue = "timestamp") String order,
                                       @RequestParam(defaultValue = "DESC") String direction){
        return gpsService.safeDrivList(map , page, size, order, direction);
    }
    
    @RequestMapping(value = "/findPosition", method = RequestMethod.GET)
    public List<GpsSpeed> findPosition(@RequestParam String vehicle,@RequestParam String startdate,@RequestParam String enddate) throws ParseException {
    	String deviceid = BasicData.deviceId2NbbmMap.inverse().get(vehicle);
    	List<GpsSpeed> listGpsSpeed = new ArrayList<GpsSpeed>();
    	listGpsSpeed = gpsService.findPosition(deviceid,startdate,enddate);
    	return listGpsSpeed;
    }
    
	@RequestMapping(value = "/pagequery",method = RequestMethod.GET)
	public Map<String, Object> pagequery(@RequestParam Map<String, Object> map){
		map.put("curPage", map.get("page").toString());
		map.put("pageData","10");
		return gpsService.Pagequery(map);
	}

    /**
     * 获取线路下所有车辆,包括实时设备 和 计划排班
     * @param lineCode
     * @return
     */
    @RequestMapping(value = "/allCarsByLine",method = RequestMethod.GET)
	public Map<String, Object> allCarsByLine(String lineCode){
        return gpsService.allCarsByLine(lineCode);
    }

    @RequestMapping(value = "/all/fuzzy")
    public Map<String, Object> fuzzy(@RequestParam Map<String, Object> map) {
        return gpsService.fuzzy(map);
    }
}