diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index ab3c71f..a08953c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -6,7 +6,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; -import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; /** * 机器人操作类 @@ -46,13 +45,6 @@ */ void initMonitor(RobotInfo info); - /** - * 开启循迹任务 - * - * @param request - * @return - */ - ResponseDataDTO startTrack(StartTrackRequest request); /** * 机器人控制 @@ -62,5 +54,14 @@ */ ResponseDataDTO appCmdVel(AppCmdVelRequest request); + /** + * 命令行执行 + * + * @param req 请求体 + * @param enums 执行命令 + * @param 请求体 + * @param 响应体 + * @return 执行结果 + */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index ab3c71f..a08953c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -6,7 +6,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; -import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; /** * 机器人操作类 @@ -46,13 +45,6 @@ */ void initMonitor(RobotInfo info); - /** - * 开启循迹任务 - * - * @param request - * @return - */ - ResponseDataDTO startTrack(StartTrackRequest request); /** * 机器人控制 @@ -62,5 +54,14 @@ */ ResponseDataDTO appCmdVel(AppCmdVelRequest request); + /** + * 命令行执行 + * + * @param req 请求体 + * @param enums 执行命令 + * @param 请求体 + * @param 响应体 + * @return 执行结果 + */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } 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 5ddb98f..2446169 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 @@ -42,43 +42,22 @@ @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @GetMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DATA_RECORD, messageDTO); - return list; - } + return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); + } @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @GetMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.SLAM, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @GetMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.CHANGE_PCD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); } - /** - * 机器人请求id - * - * @param robotId 机器人ID - * @return - */ @SneakyThrows @ApiOperation(value = "PCD下载接口") @GetMapping(value = "/pcdDownload") @@ -87,9 +66,6 @@ PcdDownUtil.downPcd(response, info.getPcdDownload()); } - /** - * 机器人速度设置 - */ @ApiOperation(value = "机器人设置") @PostMapping(value = "/setConfig") public ResponseDataDTO setConfig(@RequestBody RobotInfoSetDTO robotInfo) { @@ -97,12 +73,6 @@ return ResponseDataDTO.success(); } - /** - * 机器人循迹路线读取 - * - * @param request 循迹路线读取 - * @return - */ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -118,14 +88,7 @@ @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @GetMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.TRACK_RECORD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } /** @@ -137,8 +100,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { - ResponseDataDTO list = baseRobotService.startTrack(request); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); } /** @@ -217,12 +179,12 @@ @GetMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { RobotInfo info = robotInfoService.getById(request.getRobotId()); - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { return new ResponseDataDTO(false, 500, "指令不存在", 0); } + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); MessageRequestDTO messageDTO = new MessageRequestDTO(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index ab3c71f..a08953c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -6,7 +6,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; -import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; /** * 机器人操作类 @@ -46,13 +45,6 @@ */ void initMonitor(RobotInfo info); - /** - * 开启循迹任务 - * - * @param request - * @return - */ - ResponseDataDTO startTrack(StartTrackRequest request); /** * 机器人控制 @@ -62,5 +54,14 @@ */ ResponseDataDTO appCmdVel(AppCmdVelRequest request); + /** + * 命令行执行 + * + * @param req 请求体 + * @param enums 执行命令 + * @param 请求体 + * @param 响应体 + * @return 执行结果 + */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } 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 5ddb98f..2446169 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 @@ -42,43 +42,22 @@ @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @GetMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DATA_RECORD, messageDTO); - return list; - } + return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); + } @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @GetMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.SLAM, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @GetMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.CHANGE_PCD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); } - /** - * 机器人请求id - * - * @param robotId 机器人ID - * @return - */ @SneakyThrows @ApiOperation(value = "PCD下载接口") @GetMapping(value = "/pcdDownload") @@ -87,9 +66,6 @@ PcdDownUtil.downPcd(response, info.getPcdDownload()); } - /** - * 机器人速度设置 - */ @ApiOperation(value = "机器人设置") @PostMapping(value = "/setConfig") public ResponseDataDTO setConfig(@RequestBody RobotInfoSetDTO robotInfo) { @@ -97,12 +73,6 @@ return ResponseDataDTO.success(); } - /** - * 机器人循迹路线读取 - * - * @param request 循迹路线读取 - * @return - */ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -118,14 +88,7 @@ @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @GetMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.TRACK_RECORD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } /** @@ -137,8 +100,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { - ResponseDataDTO list = baseRobotService.startTrack(request); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); } /** @@ -217,12 +179,12 @@ @GetMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { RobotInfo info = robotInfoService.getById(request.getRobotId()); - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { return new ResponseDataDTO(false, 500, "指令不存在", 0); } + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); MessageRequestDTO messageDTO = new MessageRequestDTO(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java new file mode 100644 index 0000000..a04e0f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class ChangPcdCmdHandler extends AbstractCmdHandler { + + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.CHANGE_PCD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index ab3c71f..a08953c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -6,7 +6,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; -import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; /** * 机器人操作类 @@ -46,13 +45,6 @@ */ void initMonitor(RobotInfo info); - /** - * 开启循迹任务 - * - * @param request - * @return - */ - ResponseDataDTO startTrack(StartTrackRequest request); /** * 机器人控制 @@ -62,5 +54,14 @@ */ ResponseDataDTO appCmdVel(AppCmdVelRequest request); + /** + * 命令行执行 + * + * @param req 请求体 + * @param enums 执行命令 + * @param 请求体 + * @param 响应体 + * @return 执行结果 + */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } 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 5ddb98f..2446169 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 @@ -42,43 +42,22 @@ @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @GetMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DATA_RECORD, messageDTO); - return list; - } + return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); + } @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @GetMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.SLAM, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @GetMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.CHANGE_PCD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); } - /** - * 机器人请求id - * - * @param robotId 机器人ID - * @return - */ @SneakyThrows @ApiOperation(value = "PCD下载接口") @GetMapping(value = "/pcdDownload") @@ -87,9 +66,6 @@ PcdDownUtil.downPcd(response, info.getPcdDownload()); } - /** - * 机器人速度设置 - */ @ApiOperation(value = "机器人设置") @PostMapping(value = "/setConfig") public ResponseDataDTO setConfig(@RequestBody RobotInfoSetDTO robotInfo) { @@ -97,12 +73,6 @@ return ResponseDataDTO.success(); } - /** - * 机器人循迹路线读取 - * - * @param request 循迹路线读取 - * @return - */ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -118,14 +88,7 @@ @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @GetMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.TRACK_RECORD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } /** @@ -137,8 +100,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { - ResponseDataDTO list = baseRobotService.startTrack(request); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); } /** @@ -217,12 +179,12 @@ @GetMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { RobotInfo info = robotInfoService.getById(request.getRobotId()); - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { return new ResponseDataDTO(false, 500, "指令不存在", 0); } + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); MessageRequestDTO messageDTO = new MessageRequestDTO(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java new file mode 100644 index 0000000..a04e0f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class ChangPcdCmdHandler extends AbstractCmdHandler { + + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.CHANGE_PCD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java new file mode 100644 index 0000000..d50668e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java @@ -0,0 +1,55 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +/** + * 启动或关闭录包功能 + */ +@Component("DATA_RECORD") +public class DataRecordCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected DataRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.DATA_RECORD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index ab3c71f..a08953c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -6,7 +6,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; -import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; /** * 机器人操作类 @@ -46,13 +45,6 @@ */ void initMonitor(RobotInfo info); - /** - * 开启循迹任务 - * - * @param request - * @return - */ - ResponseDataDTO startTrack(StartTrackRequest request); /** * 机器人控制 @@ -62,5 +54,14 @@ */ ResponseDataDTO appCmdVel(AppCmdVelRequest request); + /** + * 命令行执行 + * + * @param req 请求体 + * @param enums 执行命令 + * @param 请求体 + * @param 响应体 + * @return 执行结果 + */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } 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 5ddb98f..2446169 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 @@ -42,43 +42,22 @@ @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @GetMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DATA_RECORD, messageDTO); - return list; - } + return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); + } @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @GetMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.SLAM, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @GetMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.CHANGE_PCD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); } - /** - * 机器人请求id - * - * @param robotId 机器人ID - * @return - */ @SneakyThrows @ApiOperation(value = "PCD下载接口") @GetMapping(value = "/pcdDownload") @@ -87,9 +66,6 @@ PcdDownUtil.downPcd(response, info.getPcdDownload()); } - /** - * 机器人速度设置 - */ @ApiOperation(value = "机器人设置") @PostMapping(value = "/setConfig") public ResponseDataDTO setConfig(@RequestBody RobotInfoSetDTO robotInfo) { @@ -97,12 +73,6 @@ return ResponseDataDTO.success(); } - /** - * 机器人循迹路线读取 - * - * @param request 循迹路线读取 - * @return - */ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -118,14 +88,7 @@ @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @GetMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.TRACK_RECORD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } /** @@ -137,8 +100,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { - ResponseDataDTO list = baseRobotService.startTrack(request); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); } /** @@ -217,12 +179,12 @@ @GetMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { RobotInfo info = robotInfoService.getById(request.getRobotId()); - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { return new ResponseDataDTO(false, 500, "指令不存在", 0); } + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); MessageRequestDTO messageDTO = new MessageRequestDTO(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java new file mode 100644 index 0000000..a04e0f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class ChangPcdCmdHandler extends AbstractCmdHandler { + + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.CHANGE_PCD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java new file mode 100644 index 0000000..d50668e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java @@ -0,0 +1,55 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +/** + * 启动或关闭录包功能 + */ +@Component("DATA_RECORD") +public class DataRecordCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected DataRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.DATA_RECORD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java new file mode 100644 index 0000000..a3ade4f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class SlamCmdHandler extends AbstractCmdHandler { + + protected SlamCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.SLAM, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index ab3c71f..a08953c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -6,7 +6,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; -import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; /** * 机器人操作类 @@ -46,13 +45,6 @@ */ void initMonitor(RobotInfo info); - /** - * 开启循迹任务 - * - * @param request - * @return - */ - ResponseDataDTO startTrack(StartTrackRequest request); /** * 机器人控制 @@ -62,5 +54,14 @@ */ ResponseDataDTO appCmdVel(AppCmdVelRequest request); + /** + * 命令行执行 + * + * @param req 请求体 + * @param enums 执行命令 + * @param 请求体 + * @param 响应体 + * @return 执行结果 + */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } 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 5ddb98f..2446169 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 @@ -42,43 +42,22 @@ @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @GetMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DATA_RECORD, messageDTO); - return list; - } + return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); + } @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @GetMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.SLAM, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @GetMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.CHANGE_PCD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); } - /** - * 机器人请求id - * - * @param robotId 机器人ID - * @return - */ @SneakyThrows @ApiOperation(value = "PCD下载接口") @GetMapping(value = "/pcdDownload") @@ -87,9 +66,6 @@ PcdDownUtil.downPcd(response, info.getPcdDownload()); } - /** - * 机器人速度设置 - */ @ApiOperation(value = "机器人设置") @PostMapping(value = "/setConfig") public ResponseDataDTO setConfig(@RequestBody RobotInfoSetDTO robotInfo) { @@ -97,12 +73,6 @@ return ResponseDataDTO.success(); } - /** - * 机器人循迹路线读取 - * - * @param request 循迹路线读取 - * @return - */ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -118,14 +88,7 @@ @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @GetMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.TRACK_RECORD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } /** @@ -137,8 +100,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { - ResponseDataDTO list = baseRobotService.startTrack(request); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); } /** @@ -217,12 +179,12 @@ @GetMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { RobotInfo info = robotInfoService.getById(request.getRobotId()); - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { return new ResponseDataDTO(false, 500, "指令不存在", 0); } + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); MessageRequestDTO messageDTO = new MessageRequestDTO(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java new file mode 100644 index 0000000..a04e0f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class ChangPcdCmdHandler extends AbstractCmdHandler { + + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.CHANGE_PCD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java new file mode 100644 index 0000000..d50668e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java @@ -0,0 +1,55 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +/** + * 启动或关闭录包功能 + */ +@Component("DATA_RECORD") +public class DataRecordCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected DataRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.DATA_RECORD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java new file mode 100644 index 0000000..a3ade4f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class SlamCmdHandler extends AbstractCmdHandler { + + protected SlamCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.SLAM, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/StartTrackCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/StartTrackCmdHandler.java new file mode 100644 index 0000000..8ecb7dd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/StartTrackCmdHandler.java @@ -0,0 +1,53 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.StartTrackRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; + +@Component("START_TRACK") +public class StartTrackCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + protected StartTrackCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(StartTrackRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.START_TRACK, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(StartTrackRequest request, ResponseDataDTO response) { + //增加循迹任务记录 + taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index ab3c71f..a08953c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -6,7 +6,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; -import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; /** * 机器人操作类 @@ -46,13 +45,6 @@ */ void initMonitor(RobotInfo info); - /** - * 开启循迹任务 - * - * @param request - * @return - */ - ResponseDataDTO startTrack(StartTrackRequest request); /** * 机器人控制 @@ -62,5 +54,14 @@ */ ResponseDataDTO appCmdVel(AppCmdVelRequest request); + /** + * 命令行执行 + * + * @param req 请求体 + * @param enums 执行命令 + * @param 请求体 + * @param 响应体 + * @return 执行结果 + */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } 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 5ddb98f..2446169 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 @@ -42,43 +42,22 @@ @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @GetMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DATA_RECORD, messageDTO); - return list; - } + return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); + } @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @GetMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.SLAM, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @GetMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.CHANGE_PCD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); } - /** - * 机器人请求id - * - * @param robotId 机器人ID - * @return - */ @SneakyThrows @ApiOperation(value = "PCD下载接口") @GetMapping(value = "/pcdDownload") @@ -87,9 +66,6 @@ PcdDownUtil.downPcd(response, info.getPcdDownload()); } - /** - * 机器人速度设置 - */ @ApiOperation(value = "机器人设置") @PostMapping(value = "/setConfig") public ResponseDataDTO setConfig(@RequestBody RobotInfoSetDTO robotInfo) { @@ -97,12 +73,6 @@ return ResponseDataDTO.success(); } - /** - * 机器人循迹路线读取 - * - * @param request 循迹路线读取 - * @return - */ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -118,14 +88,7 @@ @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @GetMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.TRACK_RECORD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } /** @@ -137,8 +100,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { - ResponseDataDTO list = baseRobotService.startTrack(request); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); } /** @@ -217,12 +179,12 @@ @GetMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { RobotInfo info = robotInfoService.getById(request.getRobotId()); - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { return new ResponseDataDTO(false, 500, "指令不存在", 0); } + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); MessageRequestDTO messageDTO = new MessageRequestDTO(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java new file mode 100644 index 0000000..a04e0f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class ChangPcdCmdHandler extends AbstractCmdHandler { + + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.CHANGE_PCD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java new file mode 100644 index 0000000..d50668e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java @@ -0,0 +1,55 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +/** + * 启动或关闭录包功能 + */ +@Component("DATA_RECORD") +public class DataRecordCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected DataRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.DATA_RECORD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java new file mode 100644 index 0000000..a3ade4f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class SlamCmdHandler extends AbstractCmdHandler { + + protected SlamCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.SLAM, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/StartTrackCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/StartTrackCmdHandler.java new file mode 100644 index 0000000..8ecb7dd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/StartTrackCmdHandler.java @@ -0,0 +1,53 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.StartTrackRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; + +@Component("START_TRACK") +public class StartTrackCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + protected StartTrackCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(StartTrackRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.START_TRACK, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(StartTrackRequest request, ResponseDataDTO response) { + //增加循迹任务记录 + taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java new file mode 100644 index 0000000..6fa567e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.TrackRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("TRACK_RECORD") +public class TrackRecordCmdHandler extends AbstractCmdHandler { + + protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.TRACK_RECORD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index ab3c71f..a08953c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -6,7 +6,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; -import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; /** * 机器人操作类 @@ -46,13 +45,6 @@ */ void initMonitor(RobotInfo info); - /** - * 开启循迹任务 - * - * @param request - * @return - */ - ResponseDataDTO startTrack(StartTrackRequest request); /** * 机器人控制 @@ -62,5 +54,14 @@ */ ResponseDataDTO appCmdVel(AppCmdVelRequest request); + /** + * 命令行执行 + * + * @param req 请求体 + * @param enums 执行命令 + * @param 请求体 + * @param 响应体 + * @return 执行结果 + */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } 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 5ddb98f..2446169 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 @@ -42,43 +42,22 @@ @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @GetMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DATA_RECORD, messageDTO); - return list; - } + return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); + } @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @GetMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.SLAM, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @GetMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - MessageRequestDTO messageDTO = new MessageRequestDTO(); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.CHANGE_PCD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); } - /** - * 机器人请求id - * - * @param robotId 机器人ID - * @return - */ @SneakyThrows @ApiOperation(value = "PCD下载接口") @GetMapping(value = "/pcdDownload") @@ -87,9 +66,6 @@ PcdDownUtil.downPcd(response, info.getPcdDownload()); } - /** - * 机器人速度设置 - */ @ApiOperation(value = "机器人设置") @PostMapping(value = "/setConfig") public ResponseDataDTO setConfig(@RequestBody RobotInfoSetDTO robotInfo) { @@ -97,12 +73,6 @@ return ResponseDataDTO.success(); } - /** - * 机器人循迹路线读取 - * - * @param request 循迹路线读取 - * @return - */ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -118,14 +88,7 @@ @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @GetMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setMsg(request); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.TRACK_RECORD, messageDTO); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } /** @@ -137,8 +100,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { - ResponseDataDTO list = baseRobotService.startTrack(request); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); } /** @@ -217,12 +179,12 @@ @GetMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { RobotInfo info = robotInfoService.getById(request.getRobotId()); - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { return new ResponseDataDTO(false, 500, "指令不存在", 0); } + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); MessageRequestDTO messageDTO = new MessageRequestDTO(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java new file mode 100644 index 0000000..a04e0f7 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class ChangPcdCmdHandler extends AbstractCmdHandler { + + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.CHANGE_PCD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java new file mode 100644 index 0000000..d50668e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/DataRecordCmdHandler.java @@ -0,0 +1,55 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +/** + * 启动或关闭录包功能 + */ +@Component("DATA_RECORD") +public class DataRecordCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected DataRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.DATA_RECORD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java new file mode 100644 index 0000000..a3ade4f --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/SlamCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.DataRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("SLAM") +public class SlamCmdHandler extends AbstractCmdHandler { + + protected SlamCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(DataRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.SLAM, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/StartTrackCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/StartTrackCmdHandler.java new file mode 100644 index 0000000..8ecb7dd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/StartTrackCmdHandler.java @@ -0,0 +1,53 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.StartTrackRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; + +@Component("START_TRACK") +public class StartTrackCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + protected StartTrackCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(StartTrackRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.START_TRACK, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(StartTrackRequest request, ResponseDataDTO response) { + //增加循迹任务记录 + taskInfoService.reloadTask(request, getRobotInfo()); + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java new file mode 100644 index 0000000..6fa567e --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import cn.hutool.core.util.StrUtil; +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.TrackRecordRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +@Component("TRACK_RECORD") +public class TrackRecordCmdHandler extends AbstractCmdHandler { + + protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackRecordRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + if (StrUtil.isEmpty(request.getSn())) { + request.setSn(request.getRobotId() + ""); + } + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.TRACK_RECORD, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackRecordRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java index accef13..d036e12 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java @@ -69,29 +69,6 @@ } } - /** - * 开启循迹任务 - * - * @param request 请求体 - * @return - */ - @Transactional - @Override - public ResponseDataDTO startTrack(StartTrackRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); - ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); - - //增加循迹任务记录 - taskInfoService.reloadTask(request, info); - - return list; - } /** * 机器人实时控制接口