package com.ld.igds.protocol.gps; import com.ld.igds.io.RemoteGpsMacService; import com.ld.igds.io.constant.OrderRespEnum; import com.ld.igds.io.request.GpsMacRequest; import com.ld.igds.io.response.ProtocolResponse; import com.ld.igds.oa.dto.GpsData; import com.ld.igds.protocol.utl.GpsUtils; import com.ld.igds.util.BytesUtil; import com.ld.io.api.InvokeResult; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; /** * GPS-808协议实现 * * @author Andy * */ @Slf4j @Component(RemoteGpsMacServiceImpl.BEAN_ID) public class RemoteGpsMacServiceImpl implements RemoteGpsMacService { public static final String BEAN_ID = "gps.remoteGpsMacServiceImpl"; @Override public String getProtocol() { return "GPS_808_PROTOCOL"; } /** * 查询位置请求 * * @param param * @return */ @Override public ProtocolResponse queryLocation(GpsMacRequest param) { // 7E 80 01 00 3C 01 38 20 03 63 16 00 01 D3 7E String msg = ""; // 消息头信息(消息ID+消息体属性+手机卡号+消息流水号) msg += GpsUtils.MSG_33; msg += "0000"; msg += param.getPhone(); msg += "0001"; // 获取校验码 String checkCode = GpsUtils.checkCode(msg); msg += checkCode; // 对消息整体转义:7D-->7D01,7E-->7D02 msg = GpsUtils.escapeCode1(msg); // 首尾添加标识符 msg = GpsUtils.addIdentifier(msg); byte[] mess = BytesUtil.hexStrToBytes(msg); InvokeResult result = Gps808ServerEngine.push(param.getIp(), param.getPort(), mess); log.debug("发送结果:{}", result.toString()); if (!InvokeResult.SUCCESS.getCode().equals(result.getCode())) { return new ProtocolResponse(OrderRespEnum.MSG_ERROR, "命令执行异常:" + result.getMessage()); } return new ProtocolResponse(OrderRespEnum.ORDER_SUCCESS, "命令发送完成,等待结果!"); } }