diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java index 9db7301..4c2ad6a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java @@ -27,6 +27,7 @@ HEAT_MAP("heat_map" , "机器人热力图"), GRID("grid" , "栅格推送"), TASK_END("task_end" , "任务结束"), + app_nav_stop("app_nav_stop" , "障碍物报警"), PCD_LOAD("pcd_load" , "pcd下载"); /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java index 9db7301..4c2ad6a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java @@ -27,6 +27,7 @@ HEAT_MAP("heat_map" , "机器人热力图"), GRID("grid" , "栅格推送"), TASK_END("task_end" , "任务结束"), + app_nav_stop("app_nav_stop" , "障碍物报警"), PCD_LOAD("pcd_load" , "pcd下载"); /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavStopMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavStopMsgHandler.java new file mode 100644 index 0000000..a443d5f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavStopMsgHandler.java @@ -0,0 +1,73 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.common.WebSocket; +import com.casic.missiles.modular.robot.opt.enums.InstructStatusMsgEnums; +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.WsMsgBaseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.ResultNavStopDTO; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_nav_stop") +public class AppNavStopMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + /** + * websocket 连接 + */ + @Resource + private WebSocket webSocket; + + + public AppNavStopMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + /** + * websocket 消息推送 + * + * @param enums 推送消息枚举 + * @param robotId 机器人连接 + * @param result 消息集合 + */ + protected void sendWebSocket(InstructStatusMsgEnums enums, String robotId, ResultNavStopDTO result) { + try { + WsMsgBaseDTO wsMsgBaseDTO = new WsMsgBaseDTO(); + wsMsgBaseDTO.setMsgKey(enums.getMsgKey()); + wsMsgBaseDTO.setData(result); + String msg = JSON.toJSONString(wsMsgBaseDTO); + log.info("推送{}消息:{}", enums.getRemarks(), msg); + webSocket.sendOneMessage(robotId, msg); + } catch (Exception e) { + log.error(e.getMessage()); + } + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + String json = new String(message.getPayload()); + if (StrUtil.isNotEmpty(json)) { + RobotMsgResponseDTO responseDTO = JSON.parseObject(json, new TypeReference>() { + }); + if ("1".equals(responseDTO.getMsg().getResult())) { + ResultNavStopDTO resultNavStopDTO = new ResultNavStopDTO(); + resultNavStopDTO.setResult("1"); + sendWebSocket(InstructStatusMsgEnums.app_nav_stop, robotId, resultNavStopDTO); + } + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java index 9db7301..4c2ad6a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java @@ -27,6 +27,7 @@ HEAT_MAP("heat_map" , "机器人热力图"), GRID("grid" , "栅格推送"), TASK_END("task_end" , "任务结束"), + app_nav_stop("app_nav_stop" , "障碍物报警"), PCD_LOAD("pcd_load" , "pcd下载"); /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavStopMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavStopMsgHandler.java new file mode 100644 index 0000000..a443d5f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavStopMsgHandler.java @@ -0,0 +1,73 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.casic.missiles.common.WebSocket; +import com.casic.missiles.modular.robot.opt.enums.InstructStatusMsgEnums; +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.WsMsgBaseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.ResultNavStopDTO; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_nav_stop") +public class AppNavStopMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + /** + * websocket 连接 + */ + @Resource + private WebSocket webSocket; + + + public AppNavStopMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + /** + * websocket 消息推送 + * + * @param enums 推送消息枚举 + * @param robotId 机器人连接 + * @param result 消息集合 + */ + protected void sendWebSocket(InstructStatusMsgEnums enums, String robotId, ResultNavStopDTO result) { + try { + WsMsgBaseDTO wsMsgBaseDTO = new WsMsgBaseDTO(); + wsMsgBaseDTO.setMsgKey(enums.getMsgKey()); + wsMsgBaseDTO.setData(result); + String msg = JSON.toJSONString(wsMsgBaseDTO); + log.info("推送{}消息:{}", enums.getRemarks(), msg); + webSocket.sendOneMessage(robotId, msg); + } catch (Exception e) { + log.error(e.getMessage()); + } + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + String json = new String(message.getPayload()); + if (StrUtil.isNotEmpty(json)) { + RobotMsgResponseDTO responseDTO = JSON.parseObject(json, new TypeReference>() { + }); + if ("1".equals(responseDTO.getMsg().getResult())) { + ResultNavStopDTO resultNavStopDTO = new ResultNavStopDTO(); + resultNavStopDTO.setResult("1"); + sendWebSocket(InstructStatusMsgEnums.app_nav_stop, robotId, resultNavStopDTO); + } + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/ResultNavStopDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/ResultNavStopDTO.java new file mode 100644 index 0000000..3dea3ba --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/ResultNavStopDTO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ResultNavStopDTO implements Serializable { + private String result; +}