diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 40c885a..e0f946d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -152,4 +152,13 @@ + "robotPassword=" + robotPassword + "}"; } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + RobotInfo robotInfo = (RobotInfo) obj; + return robotInfo.getId().equals(id); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 40c885a..e0f946d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -152,4 +152,13 @@ + "robotPassword=" + robotPassword + "}"; } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + RobotInfo robotInfo = (RobotInfo) obj; + return robotInfo.getId().equals(id); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index de09c54..684ba69 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -51,6 +51,8 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 40c885a..e0f946d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -152,4 +152,13 @@ + "robotPassword=" + robotPassword + "}"; } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + RobotInfo robotInfo = (RobotInfo) obj; + return robotInfo.getId().equals(id); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index de09c54..684ba69 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -51,6 +51,8 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java new file mode 100644 index 0000000..d6139dc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java @@ -0,0 +1,56 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargentPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + //增加循迹任务记录 +// taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 40c885a..e0f946d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -152,4 +152,13 @@ + "robotPassword=" + robotPassword + "}"; } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + RobotInfo robotInfo = (RobotInfo) obj; + return robotInfo.getId().equals(id); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index de09c54..684ba69 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -51,6 +51,8 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java new file mode 100644 index 0000000..d6139dc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java @@ -0,0 +1,56 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargentPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + //增加循迹任务记录 +// taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java new file mode 100644 index 0000000..1ff3ddc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 获取循迹路线下发指令 + */ +@Data +public class TargetPointRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "x坐标", dataType = "String") + private String x; + @ApiModelProperty(value = "y坐标", dataType = "String") + private String y; + @ApiModelProperty(value = "z坐标", dataType = "String") + private String z; + @ApiModelProperty(value = "theta", dataType = "String") + private String theta; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 40c885a..e0f946d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -152,4 +152,13 @@ + "robotPassword=" + robotPassword + "}"; } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + RobotInfo robotInfo = (RobotInfo) obj; + return robotInfo.getId().equals(id); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index de09c54..684ba69 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -51,6 +51,8 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java new file mode 100644 index 0000000..d6139dc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java @@ -0,0 +1,56 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargentPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + //增加循迹任务记录 +// taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java new file mode 100644 index 0000000..1ff3ddc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 获取循迹路线下发指令 + */ +@Data +public class TargetPointRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "x坐标", dataType = "String") + private String x; + @ApiModelProperty(value = "y坐标", dataType = "String") + private String y; + @ApiModelProperty(value = "z坐标", dataType = "String") + private String z; + @ApiModelProperty(value = "theta", dataType = "String") + private String theta; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java index 060c2fc..6e42f41 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java @@ -38,7 +38,7 @@ @Override public void connectionLost(Throwable throwable) { statusInfoService.updateConnStatus(mqttClientId, 0); - log.info("断开了MQTT连接", throwable); + log.info("mqtt close----------------------"); } /** @@ -54,6 +54,7 @@ */ @Override public void messageArrived(String topic, MqttMessage message) throws Exception { + log.info("{} msg:{}",topic,message.toString()); if (SpringContextHolder.containsBean(topic)) { IBaseMsgHandler cls = SpringContextHolder.getBean(topic); cls.process(mqttClientId, topic, message); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 40c885a..e0f946d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -152,4 +152,13 @@ + "robotPassword=" + robotPassword + "}"; } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + RobotInfo robotInfo = (RobotInfo) obj; + return robotInfo.getId().equals(id); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index de09c54..684ba69 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -51,6 +51,8 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java new file mode 100644 index 0000000..d6139dc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java @@ -0,0 +1,56 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargentPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + //增加循迹任务记录 +// taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java new file mode 100644 index 0000000..1ff3ddc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 获取循迹路线下发指令 + */ +@Data +public class TargetPointRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "x坐标", dataType = "String") + private String x; + @ApiModelProperty(value = "y坐标", dataType = "String") + private String y; + @ApiModelProperty(value = "z坐标", dataType = "String") + private String z; + @ApiModelProperty(value = "theta", dataType = "String") + private String theta; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java index 060c2fc..6e42f41 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java @@ -38,7 +38,7 @@ @Override public void connectionLost(Throwable throwable) { statusInfoService.updateConnStatus(mqttClientId, 0); - log.info("断开了MQTT连接", throwable); + log.info("mqtt close----------------------"); } /** @@ -54,6 +54,7 @@ */ @Override public void messageArrived(String topic, MqttMessage message) throws Exception { + log.info("{} msg:{}",topic,message.toString()); if (SpringContextHolder.containsBean(topic)) { IBaseMsgHandler cls = SpringContextHolder.getBean(topic); cls.process(mqttClientId, topic, message); diff --git a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java index f523b64..85d7f20 100644 --- a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java +++ b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java @@ -1,11 +1,13 @@ package com.casic.missiles.mqtt.config; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.listener.MqttMsgReceiver; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +16,7 @@ import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -43,22 +46,53 @@ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.isNotNull("robot_url"); List robotInfos = robotService.list(queryWrapper); + List errors = new ArrayList<>(); robotInfos.forEach(robotInfo -> { - MqttClientConnection mqttClientConnect = new MqttClientConnection(); - mqttClientConnect.setMqttClientId(robotInfo.getId() + ""); - try { - statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); - mqttClientConnect.setMqttClient(robotInfo.getRobotUrl(), robotInfo.getId() + "", robotInfo.getRobotAdmin(), robotInfo.getRobotPassword(), false, new MqttMsgReceiver(robotInfo.getId() + "", statusInfoService)); - MqttClientConnection.mqttClients.put(robotInfo.getId() + "", mqttClientConnect); - log.info("{}--连接成功!!", robotInfo.getRobotUrl()); - //加载路线信息 - baseRobotService.initMonitor(robotInfo); - statusInfoService.updateConnStatus(robotInfo.getId() + "", 1); - } catch (MqttException e) { - e.printStackTrace(); - log.info("{}--连接失败!!", robotInfo.getRobotUrl()); - statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + if (!createMqtt(robotInfo)) { + errors.add(robotInfo); } + ; }); + //持续重连 + if (CollectionUtil.isNotEmpty(errors)) { + new Thread(() -> { + while (CollectionUtil.isNotEmpty(errors)) { + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + List rms = new ArrayList<>(); + for (RobotInfo error : errors) { + if (createMqtt(error)) { + log.info("mqtt 重连:{}",error.getId()); + rms.add(error); + }; + } + errors.removeAll(rms); + } + + }).run(); + } + + } + + private boolean createMqtt(RobotInfo robotInfo) { + MqttClientConnection mqttClientConnect = new MqttClientConnection(); + mqttClientConnect.setMqttClientId(robotInfo.getId() + ""); + try { + statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + mqttClientConnect.setMqttClient(robotInfo.getRobotUrl(), robotInfo.getId() + "", robotInfo.getRobotAdmin(), robotInfo.getRobotPassword(), false, new MqttMsgReceiver(robotInfo.getId() + "", statusInfoService)); + MqttClientConnection.mqttClients.put(robotInfo.getId() + "", mqttClientConnect); + log.info("{}--连接成功!!", robotInfo.getRobotUrl()); + //加载路线信息 + baseRobotService.initMonitor(robotInfo); + statusInfoService.updateConnStatus(robotInfo.getId() + "", 1); + return true; + } catch (Exception e) { + log.error("机器人:{}--连接失败!!", robotInfo.getRobotUrl()); + statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + return false; + } } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 40c885a..e0f946d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -152,4 +152,13 @@ + "robotPassword=" + robotPassword + "}"; } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + RobotInfo robotInfo = (RobotInfo) obj; + return robotInfo.getId().equals(id); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index de09c54..684ba69 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -51,6 +51,8 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java new file mode 100644 index 0000000..d6139dc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java @@ -0,0 +1,56 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargentPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + //增加循迹任务记录 +// taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java new file mode 100644 index 0000000..1ff3ddc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 获取循迹路线下发指令 + */ +@Data +public class TargetPointRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "x坐标", dataType = "String") + private String x; + @ApiModelProperty(value = "y坐标", dataType = "String") + private String y; + @ApiModelProperty(value = "z坐标", dataType = "String") + private String z; + @ApiModelProperty(value = "theta", dataType = "String") + private String theta; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java index 060c2fc..6e42f41 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java @@ -38,7 +38,7 @@ @Override public void connectionLost(Throwable throwable) { statusInfoService.updateConnStatus(mqttClientId, 0); - log.info("断开了MQTT连接", throwable); + log.info("mqtt close----------------------"); } /** @@ -54,6 +54,7 @@ */ @Override public void messageArrived(String topic, MqttMessage message) throws Exception { + log.info("{} msg:{}",topic,message.toString()); if (SpringContextHolder.containsBean(topic)) { IBaseMsgHandler cls = SpringContextHolder.getBean(topic); cls.process(mqttClientId, topic, message); diff --git a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java index f523b64..85d7f20 100644 --- a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java +++ b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java @@ -1,11 +1,13 @@ package com.casic.missiles.mqtt.config; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.listener.MqttMsgReceiver; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +16,7 @@ import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -43,22 +46,53 @@ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.isNotNull("robot_url"); List robotInfos = robotService.list(queryWrapper); + List errors = new ArrayList<>(); robotInfos.forEach(robotInfo -> { - MqttClientConnection mqttClientConnect = new MqttClientConnection(); - mqttClientConnect.setMqttClientId(robotInfo.getId() + ""); - try { - statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); - mqttClientConnect.setMqttClient(robotInfo.getRobotUrl(), robotInfo.getId() + "", robotInfo.getRobotAdmin(), robotInfo.getRobotPassword(), false, new MqttMsgReceiver(robotInfo.getId() + "", statusInfoService)); - MqttClientConnection.mqttClients.put(robotInfo.getId() + "", mqttClientConnect); - log.info("{}--连接成功!!", robotInfo.getRobotUrl()); - //加载路线信息 - baseRobotService.initMonitor(robotInfo); - statusInfoService.updateConnStatus(robotInfo.getId() + "", 1); - } catch (MqttException e) { - e.printStackTrace(); - log.info("{}--连接失败!!", robotInfo.getRobotUrl()); - statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + if (!createMqtt(robotInfo)) { + errors.add(robotInfo); } + ; }); + //持续重连 + if (CollectionUtil.isNotEmpty(errors)) { + new Thread(() -> { + while (CollectionUtil.isNotEmpty(errors)) { + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + List rms = new ArrayList<>(); + for (RobotInfo error : errors) { + if (createMqtt(error)) { + log.info("mqtt 重连:{}",error.getId()); + rms.add(error); + }; + } + errors.removeAll(rms); + } + + }).run(); + } + + } + + private boolean createMqtt(RobotInfo robotInfo) { + MqttClientConnection mqttClientConnect = new MqttClientConnection(); + mqttClientConnect.setMqttClientId(robotInfo.getId() + ""); + try { + statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + mqttClientConnect.setMqttClient(robotInfo.getRobotUrl(), robotInfo.getId() + "", robotInfo.getRobotAdmin(), robotInfo.getRobotPassword(), false, new MqttMsgReceiver(robotInfo.getId() + "", statusInfoService)); + MqttClientConnection.mqttClients.put(robotInfo.getId() + "", mqttClientConnect); + log.info("{}--连接成功!!", robotInfo.getRobotUrl()); + //加载路线信息 + baseRobotService.initMonitor(robotInfo); + statusInfoService.updateConnStatus(robotInfo.getId() + "", 1); + return true; + } catch (Exception e) { + log.error("机器人:{}--连接失败!!", robotInfo.getRobotUrl()); + statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + return false; + } } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java index ec8b692..27f9d82 100644 --- a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java +++ b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java @@ -62,9 +62,10 @@ options.setPassword(passWord.toCharArray()); } options.setConnectionTimeout(60);///默认:30 - options.setAutomaticReconnect(true);//默认:false options.setCleanSession(cleanSession);//默认:true options.setKeepAliveInterval(60); + options.setAutomaticReconnect(true);//默认:false + return options; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 40c885a..e0f946d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -152,4 +152,13 @@ + "robotPassword=" + robotPassword + "}"; } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + RobotInfo robotInfo = (RobotInfo) obj; + return robotInfo.getId().equals(id); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index de09c54..684ba69 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -51,6 +51,8 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java new file mode 100644 index 0000000..d6139dc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java @@ -0,0 +1,56 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargentPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + //增加循迹任务记录 +// taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java new file mode 100644 index 0000000..1ff3ddc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 获取循迹路线下发指令 + */ +@Data +public class TargetPointRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "x坐标", dataType = "String") + private String x; + @ApiModelProperty(value = "y坐标", dataType = "String") + private String y; + @ApiModelProperty(value = "z坐标", dataType = "String") + private String z; + @ApiModelProperty(value = "theta", dataType = "String") + private String theta; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java index 060c2fc..6e42f41 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java @@ -38,7 +38,7 @@ @Override public void connectionLost(Throwable throwable) { statusInfoService.updateConnStatus(mqttClientId, 0); - log.info("断开了MQTT连接", throwable); + log.info("mqtt close----------------------"); } /** @@ -54,6 +54,7 @@ */ @Override public void messageArrived(String topic, MqttMessage message) throws Exception { + log.info("{} msg:{}",topic,message.toString()); if (SpringContextHolder.containsBean(topic)) { IBaseMsgHandler cls = SpringContextHolder.getBean(topic); cls.process(mqttClientId, topic, message); diff --git a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java index f523b64..85d7f20 100644 --- a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java +++ b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java @@ -1,11 +1,13 @@ package com.casic.missiles.mqtt.config; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.listener.MqttMsgReceiver; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +16,7 @@ import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -43,22 +46,53 @@ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.isNotNull("robot_url"); List robotInfos = robotService.list(queryWrapper); + List errors = new ArrayList<>(); robotInfos.forEach(robotInfo -> { - MqttClientConnection mqttClientConnect = new MqttClientConnection(); - mqttClientConnect.setMqttClientId(robotInfo.getId() + ""); - try { - statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); - mqttClientConnect.setMqttClient(robotInfo.getRobotUrl(), robotInfo.getId() + "", robotInfo.getRobotAdmin(), robotInfo.getRobotPassword(), false, new MqttMsgReceiver(robotInfo.getId() + "", statusInfoService)); - MqttClientConnection.mqttClients.put(robotInfo.getId() + "", mqttClientConnect); - log.info("{}--连接成功!!", robotInfo.getRobotUrl()); - //加载路线信息 - baseRobotService.initMonitor(robotInfo); - statusInfoService.updateConnStatus(robotInfo.getId() + "", 1); - } catch (MqttException e) { - e.printStackTrace(); - log.info("{}--连接失败!!", robotInfo.getRobotUrl()); - statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + if (!createMqtt(robotInfo)) { + errors.add(robotInfo); } + ; }); + //持续重连 + if (CollectionUtil.isNotEmpty(errors)) { + new Thread(() -> { + while (CollectionUtil.isNotEmpty(errors)) { + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + List rms = new ArrayList<>(); + for (RobotInfo error : errors) { + if (createMqtt(error)) { + log.info("mqtt 重连:{}",error.getId()); + rms.add(error); + }; + } + errors.removeAll(rms); + } + + }).run(); + } + + } + + private boolean createMqtt(RobotInfo robotInfo) { + MqttClientConnection mqttClientConnect = new MqttClientConnection(); + mqttClientConnect.setMqttClientId(robotInfo.getId() + ""); + try { + statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + mqttClientConnect.setMqttClient(robotInfo.getRobotUrl(), robotInfo.getId() + "", robotInfo.getRobotAdmin(), robotInfo.getRobotPassword(), false, new MqttMsgReceiver(robotInfo.getId() + "", statusInfoService)); + MqttClientConnection.mqttClients.put(robotInfo.getId() + "", mqttClientConnect); + log.info("{}--连接成功!!", robotInfo.getRobotUrl()); + //加载路线信息 + baseRobotService.initMonitor(robotInfo); + statusInfoService.updateConnStatus(robotInfo.getId() + "", 1); + return true; + } catch (Exception e) { + log.error("机器人:{}--连接失败!!", robotInfo.getRobotUrl()); + statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + return false; + } } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java index ec8b692..27f9d82 100644 --- a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java +++ b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java @@ -62,9 +62,10 @@ options.setPassword(passWord.toCharArray()); } options.setConnectionTimeout(60);///默认:30 - options.setAutomaticReconnect(true);//默认:false options.setCleanSession(cleanSession);//默认:true options.setKeepAliveInterval(60); + options.setAutomaticReconnect(true);//默认:false + return options; } diff --git a/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java b/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java index 4e49c8e..a850f9a 100644 --- a/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java @@ -41,7 +41,7 @@ @Override public void channelRead(ChannelHandlerContext ctx, Object msg) { - log.info(String.format("客户端读取到从服务器端:%s 发送过来的数据:%s", ctx.channel().remoteAddress(), msg.toString())); +// log.info(String.format("客户端读取到从服务器端:%s 发送过来的数据:%s", ctx.channel().remoteAddress(), msg.toString())); //解析数据 try { neutronOptService.analysis(ctx.channel().remoteAddress().toString(), msg.toString(), userId); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index c34cd78..2763a3a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -103,7 +103,17 @@ public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } - + /** + * 机器人请求id + * + * @param request + * @return + */ + @ApiOperation(value = "寻点指令" , notes = "") + @PostMapping(value = "/targetPoint") + public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); + } /** * 机器人请求id * diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java index 40c885a..e0f946d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotInfo.java @@ -152,4 +152,13 @@ + "robotPassword=" + robotPassword + "}"; } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + RobotInfo robotInfo = (RobotInfo) obj; + return robotInfo.getId().equals(id); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index de09c54..684ba69 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -51,6 +51,8 @@ }), SET_SPEED("/set_speed" , "/set_speed_response" , "最大运动速度设置" , true, new TypeReference>() { }), + SET_TARGETPOINT("/set_targetpoint" , "/set_targetpoint_response" , "设置导航目标点" , true, new TypeReference>() { + }), GET_DATA_LIST("/get_data_list" , "/get_data_list_response" , "获取数据包列表" , true, new TypeReference>>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java new file mode 100644 index 0000000..d6139dc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java @@ -0,0 +1,56 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargentPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + //增加循迹任务记录 +// taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java new file mode 100644 index 0000000..1ff3ddc --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TargetPointRequest.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 获取循迹路线下发指令 + */ +@Data +public class TargetPointRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "x坐标", dataType = "String") + private String x; + @ApiModelProperty(value = "y坐标", dataType = "String") + private String y; + @ApiModelProperty(value = "z坐标", dataType = "String") + private String z; + @ApiModelProperty(value = "theta", dataType = "String") + private String theta; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java index 060c2fc..6e42f41 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/listener/MqttMsgReceiver.java @@ -38,7 +38,7 @@ @Override public void connectionLost(Throwable throwable) { statusInfoService.updateConnStatus(mqttClientId, 0); - log.info("断开了MQTT连接", throwable); + log.info("mqtt close----------------------"); } /** @@ -54,6 +54,7 @@ */ @Override public void messageArrived(String topic, MqttMessage message) throws Exception { + log.info("{} msg:{}",topic,message.toString()); if (SpringContextHolder.containsBean(topic)) { IBaseMsgHandler cls = SpringContextHolder.getBean(topic); cls.process(mqttClientId, topic, message); diff --git a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java index f523b64..85d7f20 100644 --- a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java +++ b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConfigListener.java @@ -1,11 +1,13 @@ package com.casic.missiles.mqtt.config; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.listener.MqttMsgReceiver; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +16,7 @@ import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -43,22 +46,53 @@ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.isNotNull("robot_url"); List robotInfos = robotService.list(queryWrapper); + List errors = new ArrayList<>(); robotInfos.forEach(robotInfo -> { - MqttClientConnection mqttClientConnect = new MqttClientConnection(); - mqttClientConnect.setMqttClientId(robotInfo.getId() + ""); - try { - statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); - mqttClientConnect.setMqttClient(robotInfo.getRobotUrl(), robotInfo.getId() + "", robotInfo.getRobotAdmin(), robotInfo.getRobotPassword(), false, new MqttMsgReceiver(robotInfo.getId() + "", statusInfoService)); - MqttClientConnection.mqttClients.put(robotInfo.getId() + "", mqttClientConnect); - log.info("{}--连接成功!!", robotInfo.getRobotUrl()); - //加载路线信息 - baseRobotService.initMonitor(robotInfo); - statusInfoService.updateConnStatus(robotInfo.getId() + "", 1); - } catch (MqttException e) { - e.printStackTrace(); - log.info("{}--连接失败!!", robotInfo.getRobotUrl()); - statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + if (!createMqtt(robotInfo)) { + errors.add(robotInfo); } + ; }); + //持续重连 + if (CollectionUtil.isNotEmpty(errors)) { + new Thread(() -> { + while (CollectionUtil.isNotEmpty(errors)) { + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + List rms = new ArrayList<>(); + for (RobotInfo error : errors) { + if (createMqtt(error)) { + log.info("mqtt 重连:{}",error.getId()); + rms.add(error); + }; + } + errors.removeAll(rms); + } + + }).run(); + } + + } + + private boolean createMqtt(RobotInfo robotInfo) { + MqttClientConnection mqttClientConnect = new MqttClientConnection(); + mqttClientConnect.setMqttClientId(robotInfo.getId() + ""); + try { + statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + mqttClientConnect.setMqttClient(robotInfo.getRobotUrl(), robotInfo.getId() + "", robotInfo.getRobotAdmin(), robotInfo.getRobotPassword(), false, new MqttMsgReceiver(robotInfo.getId() + "", statusInfoService)); + MqttClientConnection.mqttClients.put(robotInfo.getId() + "", mqttClientConnect); + log.info("{}--连接成功!!", robotInfo.getRobotUrl()); + //加载路线信息 + baseRobotService.initMonitor(robotInfo); + statusInfoService.updateConnStatus(robotInfo.getId() + "", 1); + return true; + } catch (Exception e) { + log.error("机器人:{}--连接失败!!", robotInfo.getRobotUrl()); + statusInfoService.updateConnStatus(robotInfo.getId() + "", 0); + return false; + } } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java index ec8b692..27f9d82 100644 --- a/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java +++ b/casic-server/src/main/java/com/casic/missiles/mqtt/config/MqttClientConnection.java @@ -62,9 +62,10 @@ options.setPassword(passWord.toCharArray()); } options.setConnectionTimeout(60);///默认:30 - options.setAutomaticReconnect(true);//默认:false options.setCleanSession(cleanSession);//默认:true options.setKeepAliveInterval(60); + options.setAutomaticReconnect(true);//默认:false + return options; } diff --git a/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java b/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java index 4e49c8e..a850f9a 100644 --- a/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java @@ -41,7 +41,7 @@ @Override public void channelRead(ChannelHandlerContext ctx, Object msg) { - log.info(String.format("客户端读取到从服务器端:%s 发送过来的数据:%s", ctx.channel().remoteAddress(), msg.toString())); +// log.info(String.format("客户端读取到从服务器端:%s 发送过来的数据:%s", ctx.channel().remoteAddress(), msg.toString())); //解析数据 try { neutronOptService.analysis(ctx.channel().remoteAddress().toString(), msg.toString(), userId); diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 7e5b423..627e36f 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -226,6 +226,7 @@ /config/*/* /config/*-*.yml + /config/**/*.exe true