SendUtils.java 7.34 KB
package com.bsth.websocket.handler;

import com.alibaba.fastjson.JSONObject;
import com.bsth.data.BasicData;
import com.bsth.data.LineConfigData;
import com.bsth.data.gpsdata_v2.entity.GpsEntity;
import com.bsth.data.maintenance_plan.MaintenancePlan;
import com.bsth.data.safe_driv.SafeDriv;
import com.bsth.entity.directive.D80;
import com.bsth.entity.realcontrol.ScheduleRealInfo;
import com.bsth.websocket.dto.WsScheduleRealInfo;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.*;

@Component
public class SendUtils{

	@Autowired
	private RealControlSocketHandler socketHandler;
	
	@Autowired
	LineConfigData lineConfigData;

	private static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");

	private static Logger logger = LoggerFactory.getLogger(SendUtils.class);

	/**
	 * @throws JsonProcessingException
	 *             TODO(推送发车信息)
	 */
	public void sendFcsj(ScheduleRealInfo sch) {
		
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "faChe");
		map.put("t", WsScheduleRealInfo.getInstance(sch));
		map.put("dataStr", sdf.format(new Date()));

		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToLine(sch.getXlBm(), mapper.writeValueAsString(map));
		} catch (Exception e) {
			logger.error("", e);
		}
	}
	
	/**
	 * 
	 * @Title: sendFcsjArtificial 
	 * @Description: TODO(要求页面刷新班次) 
	 * @throws
	 */
	public void refreshSch(List<ScheduleRealInfo> list){
		if(null == list || list.size() == 0)
			return;
			
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "refreshSch");
		map.put("ts", WsScheduleRealInfo.getMultiInstance(list));

		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToLine(list.get(0).getXlBm(), mapper.writeValueAsString(map));
		} catch (Exception e) {
			logger.error("", e);
		}
	}

	/**
	 * @throws JsonProcessingException
	 * 			@throws NumberFormatException @Title: sendFcsj @Description:
	 *             TODO(推送到达终点时间) @param @param schedule 班次 @throws
	 */
	public void sendZdsj(ScheduleRealInfo sch, ScheduleRealInfo nextSch, int finish) {

		Map<String, Object> map = new HashMap<>();
		map.put("fn", "zhongDian");
		map.put("t", WsScheduleRealInfo.getInstance(sch));
		map.put("nt", WsScheduleRealInfo.getInstance(nextSch));
		map.put("finish", finish);
		map.put("dataStr", sdf.format(new Date()));

		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToLine(sch.getXlBm(), mapper.writeValueAsString(map));
		} catch (Exception e) {
			logger.error("", e);
		}
	}

	/**
	 * 推送班次信号状态
	 * @param state

	public void sendSignalState(SignalState state){
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "signal_state");
		map.put("data", state);

		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToLine(state.getLineCode(), mapper.writeValueAsString(map));
		} catch (Exception e) {
			logger.error("", e);
		}
	}*/

	/**
	 * 
	 * @Title: sendDirectiveToPage 
	 * @Description: TODO(调度指令状态推送) 
	 */
	public void sendDirectiveToPage(ScheduleRealInfo sch) {
		
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "directive");
		map.put("t", WsScheduleRealInfo.getInstance(sch));;
		
		ObjectMapper mapper = new ObjectMapper();
		
		try {
			socketHandler.sendMessageToLine(sch.getXlBm(), mapper.writeValueAsString(map));
		} catch (JsonProcessingException e) {
			logger.error("", e);
		}
	}
	
	public void send80ToPage(D80 d80) {
		d80.getData().setNbbm(BasicData.deviceId2NbbmMap.get(d80.getDeviceId()));
		JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(d80));
		json.put("fn", "report80");
 		socketHandler.sendMessageToLine(d80.getData().getLineId().toString(), json.toJSONString());
	}

	public void refreshSch(ScheduleRealInfo sch) {
		List<ScheduleRealInfo> list = new ArrayList<>();
		list.add(sch);
		refreshSch(list);
	}

	public void deviceOffline(GpsEntity gps){
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "deviceOffline");
		map.put("gps", gps);
		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToLine(gps.getLineId().toString(), mapper.writeValueAsString(map));
		} catch (JsonProcessingException e) {
			logger.error("", e);
		}
	}

	public void sendSafeDriv(SafeDriv sd){
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "safeDriv");
		map.put("t", sd);;
		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToLine(sd.getXlbm(), mapper.writeValueAsString(map));
		} catch (JsonProcessingException e) {
			logger.error("", e);
		}
	}

	/**
	 * 通知客户端,开始进行误点调整
	 * @param sch
	 */
	public void sendAutoWdtz(ScheduleRealInfo sch, ScheduleRealInfo cancel){
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "auto_wdtz");
		map.put("id", sch.getId());
		if(cancel != null)
			map.put("cancelId", cancel.getId());
		map.put("lineCode", sch.getXlBm());
		map.put("minute", sch.getLateMinute());
		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToLine(sch.getXlBm() ,mapper.writeValueAsString(map));

		} catch (JsonProcessingException e) {
			logger.error("", e);
		}
	}

	/**
	 * 对所有线调用户进行广播
	 * @param t
	 */
	public void sendRadioText(String t, String lineCode){
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "admin_radio_text");
		map.put("t", t);
		ObjectMapper mapper = new ObjectMapper();

		try {
			if(StringUtils.isNotEmpty(lineCode))
				socketHandler.sendMessageToLine(lineCode, mapper.writeValueAsString(map));
			else
				socketHandler.sendMessage(mapper.writeValueAsString(map));
		} catch (JsonProcessingException e) {
			logger.error("", e);
		}
	}

	/**
	 * RFID有更新时发送数据至线调页面
	 * @param sch
	 */
	public void sendRfid(ScheduleRealInfo sch) {
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "rfid");
		map.put("data", WsScheduleRealInfo.getInstance(sch));
		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToLine(sch.getXlBm(), mapper.writeValueAsString(map));
		} catch (JsonProcessingException e) {
			logger.error("sendRfid", e);
		}
	}

	/**
	 * 将应急预案发送至线调页面
	 */
	public void sendContingencyPlan(Map<String, Object> cp) {
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "contingencyPlan");
		map.put("data", cp);
		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToUser((String)cp.get("instructionsPeopleCode"), mapper.writeValueAsString(map));
		} catch (JsonProcessingException e) {
			logger.error("sendContingencyPlan", e);
		}
	}

	/**
	 * 将维修保养计划发送至线调页面
	 */
	public void sendMaintenancePlan(MaintenancePlan maintenancePlan) {
		Map<String, Object> map = new HashMap<>();
		map.put("fn", "maintenancePlan");
		map.put("data", maintenancePlan);
		ObjectMapper mapper = new ObjectMapper();

		try {
			socketHandler.sendMessageToLine(maintenancePlan.getLine(), mapper.writeValueAsString(map));
		} catch (JsonProcessingException e) {
			logger.error("sendMaintenancePlan", e);
		}
	}
}