ScheduleRealInfoController.java 11.8 KB
package com.bsth.controller.realcontrol;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.bsth.controller.BaseController;
import com.bsth.entity.realcontrol.ScheduleRealInfo;
import com.bsth.security.util.SecurityUtils;
import com.bsth.service.realcontrol.ScheduleRealInfoService;
import com.bsth.service.realcontrol.buffer.GetSchedulePlanThread;
import com.bsth.service.realcontrol.buffer.ScheduleBuffer;
import com.bsth.vehicle.common.CommonMapped;
import com.google.common.base.Splitter;

@RestController
@RequestMapping("/realSchedule")
public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, Long> {

	@Autowired
	GetSchedulePlanThread getSchedulePlanThread;
	
	@Autowired
	ScheduleRealInfoService scheduleRealInfoService;

	@RequestMapping(value = "/lines")
	public Map<String, Collection<ScheduleRealInfo>> findByLines(@RequestParam String lines) {
		return scheduleRealInfoService.findByLines(lines);
	}

	/**
	 * 
	 * @Title: registerLine @Description: TODO(注册线路,后续才能收到数据推送) @param @param
	 * lineCodes @throws
	 * 用GET 防止监控模式下被拦截
	 */
	@RequestMapping(value = "/registerLine", method = RequestMethod.GET)
	public int registerLine(@RequestParam String lineCodes) {
		List<String> list = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(lineCodes);
		String userName = SecurityUtils.getCurrentUser().getUserName();
		// 注销之前的绑定
		for (String line : list)
			CommonMapped.lineUserMap.get(Integer.parseInt(line)).remove(userName);
		// 重新绑定
		for (String line : list)
			CommonMapped.lineUserMap.put(Integer.parseInt(line), userName);

		return 0;
	}

	/**
	 * 
	 * @Title: outgoAdjust @Description: TODO(待发调整) @param @param id
	 * 主键 @param @param remarks 备注 @param @param dfsj 待发时间(HH:mm) @throws
	 */
	@RequestMapping(value = "/outgoAdjust", method = RequestMethod.POST)
	public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks,
			@RequestParam String dfsj, String clZbh, String jsy, String spy) {
		return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, clZbh, jsy, spy);
	}

	/**
	 * 
	 * @Title: destroy @Description: TODO(销毁,烂班) @param @param idsStr 要烂掉的班次ID
	 * ,分隔 @param @param spaceAdjust 自动调整后续间隔(1 是 -1 否) @param @param remarks
	 * 备注 @param @param reason 理由 @param @param spaceNum 间隔(分钟) @throws
	 */
	@RequestMapping(value = "/destroy", method = RequestMethod.POST)
	public Map<String, Object> destroy(@RequestParam String idsStr, @RequestParam(defaultValue = "-1") int spaceAdjust,
			@RequestParam String remarks, @RequestParam String reason, @RequestParam(defaultValue = "0") int spaceNum) {
		return scheduleRealInfoService.destroy(idsStr, spaceAdjust, remarks, reason, spaceNum);
	}

	/**
	 * 
	 * @Title: carDeviceMapp @Description: TODO(获取车辆自编号和设备号对照,从缓存取) @throws
	 */
	@RequestMapping(value = "/carDeviceMapp", method = RequestMethod.GET)
	public Map<String, String> carDeviceMapp() {
		return CommonMapped.vehicDeviceBiMap.inverse();
	}

	/**
	 * 
	 * @Title: findPersionByLine @Description: TODO(根据线路主键获取驾驶员) @param @param
	 * lineId @throws
	 */
	@RequestMapping(value = "/driver", method = RequestMethod.GET)
	public List<Map<String, String>> findDriverByLine(@RequestParam String lineCode) {
		return scheduleRealInfoService.findDriverByLine(lineCode);
	}

	/**
	 * 
	 * @Title: findPersionByLine @Description: TODO(根据线路主键获取售票员) @param @param
	 * lineId @throws
	 */
	@RequestMapping(value = "/conductor", method = RequestMethod.GET)
	public List<Map<String, String>> findConductorByLine(@RequestParam String lineCode) {
		return scheduleRealInfoService.findConductorByLine(lineCode);
	}

	/**
	 * 
	 * @Title: findPersionByLine @Description: TODO(根据线路主键获取车辆) @param @param
	 * lineId @throws
	 */
	@RequestMapping(value = "/cars", method = RequestMethod.GET)
	public List<Map<String, String>> findCarByLine(@RequestParam String lineCode) {
		return scheduleRealInfoService.findCarByLine(lineCode);
	}

	/**
	 * 
	 * @Title: sreachNbbm @Description: TODO(搜索车辆内部编码) @throws
	 */
	@RequestMapping(value = "/sreachVehic", method = RequestMethod.GET)
	public List<Map<String, String>> sreachVehic(@RequestParam String nbbm) {
		return scheduleRealInfoService.sreachVehic(nbbm);
	}

	/**
	 * 
	 * @Title: adjust @Description: TODO(调整人车) @param @param id
	 * 班次ID @param @param nbbm 内部编码 @param @param jsy 驾驶员 @param @param spy
	 * 售票员 @throws
	 */
	@RequestMapping(value = "/adjust", method = RequestMethod.POST)
	public Map<String, Object> adjust(@RequestParam Long id, String nbbm, String jsy,
			String spy, Integer revertLine, Integer borrowLine, String borrowTimeStr, String revertTimeStr) {
		return scheduleRealInfoService.adjust(id, nbbm, jsy, spy, revertLine, borrowLine, borrowTimeStr, revertTimeStr);
	}

	/**
	 * 
	 * @Title: realOutAdjust 
	 * @Description: TODO(实发调整) 
	 * @param @param id 班次ID
	 * @param @param fcsjActual 实际发车时间 HH:mm
	 * @param @param remarks 备注
	 * @throws
	 */
	@RequestMapping(value = "/realOutAdjust", method = RequestMethod.POST)
	public Map<String, Object> realOutAdjust(@RequestParam Long id, @RequestParam String fcsjActual,
			@RequestParam String remarks) {
		return scheduleRealInfoService.realOutAdjust(id, fcsjActual, remarks);
	}
	
	/**
	 * 
	 * @Title: revokeDestroy 
	 * @Description: TODO(撤销烂班) 
	 * @param @param id
	 * @throws
	 */
	@RequestMapping(value = "/revokeDestroy", method = RequestMethod.POST)
	public Map<String, Object> revokeDestroy(@RequestParam Long id){
		return scheduleRealInfoService.revokeDestroy(id);
	}
	
	/**
	 * 
	 * @Title: revokeRealOutgo 
	 * @Description: TODO(撤销实发) 
	 * @param @param id
	 * @throws
	 */
	@RequestMapping(value = "/revokeRealOutgo", method = RequestMethod.POST)
	public Map<String, Object> revokeRealOutgo(@RequestParam Long id){
		return scheduleRealInfoService.revokeRealOutgo(id);
	}

	/**
	 * 
	 * @Title: spaceAdjust 
	 * @Description: TODO(间隔调整) 
	 * @param @param ids 要调整的班次数组ID
	 * @param @param space 间隔
	 * @throws
	 */
	@RequestMapping(value = "/spaceAdjust", method = RequestMethod.POST)
	public Map<String, Object> spaceAdjust(Long[] ids, Integer space){
		return scheduleRealInfoService.spaceAdjust(ids, space);
	}
	
	/**
	 * 
	 * @Title: schInfoFineTune 
	 * @Description: TODO(发车信息微调) 
	 * @param @param map
	 * @throws
	 */
	@RequestMapping(value = "/schInfoFineTune", method = RequestMethod.POST)
	public Map<String, Object> schInfoFineTune(@RequestParam Map<String, String> map){
		return scheduleRealInfoService.schInfoFineTune(map);
	}
	
	/**
	 * 
	 * @Title: trustStatus @Description: TODO(线路托管状态) @param @param lineCodes
	 * 线路编码 @throws
	 */
	@RequestMapping(value = "/trustStatus")
	public Map<Integer, Integer> trustStatus(@RequestParam String lineCodes) {
		return scheduleRealInfoService.trustStatus(lineCodes);
	}
	
	/**
	 * 
	 * @Title: outgoAdjustAll 
	 * @Description: TODO(批量待发调整) 
	 * @param @param list
	 * @throws
	 */
	@RequestMapping(value = "/outgoAdjustAll", method = RequestMethod.POST)
	public Map<String, Object> outgoAdjustAll(@RequestParam String params){
		return scheduleRealInfoService.outgoAdjustAll(params);
	}

	/**
	 * 
	 * @Title: changeTrustStatus @Description: TODO(切换线路托管状态) @param @param
	 * lineCode 线路编码 @param @param status 托管状态 @throws
	 */
	@RequestMapping(value = "/trustStatus/change", method = RequestMethod.POST)
	public int changeTrustStatus(@RequestParam Integer lineCode, @RequestParam Integer status) {
		ScheduleBuffer.trustMap.put(lineCode, status);
		return 200;
	}
	
	/**
	 * 
	 * @Title: findByLineAndUpDown 
	 * @Description: TODO(根据线路和走向获取班次) 
	 * @param @param line
	 * @param @param upDown
	 */
	@RequestMapping(value = "/findByLineAndUpDown")
	public List<ScheduleRealInfo> findByLineAndUpDown(@RequestParam Integer line,@RequestParam Integer upDown){
		return ScheduleBuffer.findByLineAndUpDown(line, upDown);
	}
	
	/**
	 * 
	 * @Title: findRouteByLine 
	 * @Description: TODO(获取线路的站点,路段路由) 
	 * @param @param lineCode
	 * @throws
	 */
	@RequestMapping(value = "/findRouteByLine")
	public Map<String, Object> findRouteByLine(@RequestParam Integer lineId){
		return scheduleRealInfoService.findRouteByLine(lineId);
	}
	
	@RequestMapping(value = "/test/getSch")
	public int getSch(){
		getSchedulePlanThread.start();
		return 1;
	}

	/**
	 * 
	 * @Title: findByLineCode 
	 * @Description: TODO(根据线路获取班次信息) 
	 * @param @param lineCode
	 */
	@RequestMapping(value = "/lineCode/{lineCode}")
	public List<ScheduleRealInfo> findByLineCode(@PathVariable("lineCode") String lineCode){
		return ScheduleBuffer.realSchedulListMap.get(lineCode);
	}

	@RequestMapping(value = "/queryUserInfo")
	public List<ScheduleRealInfo> queryUserInfo(@RequestParam String line, @RequestParam String date) {
		return scheduleRealInfoService.queryUserInfo(line, date);
	}

	@RequestMapping(value = "/exportWaybill")
	public List<ScheduleRealInfo> exportWaybill(@RequestParam String jName, @RequestParam String clZbh,
			@RequestParam String lpName) {
		return scheduleRealInfoService.exportWaybill(jName, clZbh, lpName);
	}

	@RequestMapping(value = "/dailyInfo")
	public List<Map<String, Object>> dailyInfo(@RequestParam String line, @RequestParam String date) {
		return scheduleRealInfoService.dailyInfo(line, date);
	}

	@RequestMapping(value = "/historyMessage")
	public List<Object[]> historyMessage(@RequestParam String line, @RequestParam String date,
			@RequestParam String code) {
		return scheduleRealInfoService.historyMessage(line, date, code);
	}
	
	@RequestMapping(value="/findLine")
	public List<Map<String,String>> findLine(@RequestParam String line){
		return scheduleRealInfoService.findLine(line);
	}
	
	@RequestMapping(value="/findKMBC")
	public Map<String,Object> findKMBC(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName){
		return scheduleRealInfoService.findKMBC(jName, clZbh,lpName);
	}
	
	@RequestMapping(value="/findLpName")
	public List<Map<String,String>> findLpName(@RequestParam String lpName){
		return scheduleRealInfoService.findLpName(lpName);
	}
	
	@RequestMapping(value = "/account")
	public List<Map<String,Object>> account(@RequestParam String line, @RequestParam String date,
			@RequestParam String code,@RequestParam String xlName) {
		return scheduleRealInfoService.account(line, date, code,xlName);
	}
	
	@RequestMapping(value = "/correctForm")
	public List<ScheduleRealInfo> correctForm(@RequestParam String line, @RequestParam String startDate,
			@RequestParam String endDate,@RequestParam String lpName,@RequestParam String code) {
		return scheduleRealInfoService.correctForm(line, startDate, endDate, lpName, code);
	}
	
	@RequestMapping(value="/queryListWaybill")
	public List<ScheduleRealInfo> queryListWaybill(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName){
		return scheduleRealInfoService.queryListWaybill(jName, clZbh,lpName);
	}
}