diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(id)); diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java index 71c030f..0463880 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java @@ -5,9 +5,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.AlarmRecordMapper; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -21,10 +26,41 @@ */ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + private final IRobotInfoService robotInfoService; + + public AlarmRecordServiceImpl(@Lazy IRobotInfoService robotInfoService) { + this.robotInfoService = robotInfoService; + } @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { - return this.baseMapper.selectAlarmRecordPage(page, query); + List records = this.baseMapper.selectAlarmRecordPage(page, query); + records.forEach(this::wrapRecord); + return records; + } + + private void wrapRecord(AlarmRecord record) { + //判断是否有检测值 + record.setMonitorValStatus("无"); + if (record.getAlarmThreshold() == null) { + record.setAlarmThreshold(new BigDecimal(0)); + } + if (record.getAlarmThreshold().compareTo(record.getMonitorVal()) <= 0) { + record.setMonitorValStatus("有"); + } + } + + @Override + public Integer selectCountByTaskId(Long id, Long robotId) { + RobotInfo robotInfo = robotInfoService.getById(robotId); + + QueryWrapper query = new QueryWrapper<>(); + query.eq("task_id", id); + if (robotInfo.getAlarmThreshold() != null) { + query.ge("monitor_val", robotInfo.getAlarmThreshold()); + } + Integer num = this.count(query); + return num; } } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java index 71c030f..0463880 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java @@ -5,9 +5,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.AlarmRecordMapper; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -21,10 +26,41 @@ */ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + private final IRobotInfoService robotInfoService; + + public AlarmRecordServiceImpl(@Lazy IRobotInfoService robotInfoService) { + this.robotInfoService = robotInfoService; + } @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { - return this.baseMapper.selectAlarmRecordPage(page, query); + List records = this.baseMapper.selectAlarmRecordPage(page, query); + records.forEach(this::wrapRecord); + return records; + } + + private void wrapRecord(AlarmRecord record) { + //判断是否有检测值 + record.setMonitorValStatus("无"); + if (record.getAlarmThreshold() == null) { + record.setAlarmThreshold(new BigDecimal(0)); + } + if (record.getAlarmThreshold().compareTo(record.getMonitorVal()) <= 0) { + record.setMonitorValStatus("有"); + } + } + + @Override + public Integer selectCountByTaskId(Long id, Long robotId) { + RobotInfo robotInfo = robotInfoService.getById(robotId); + + QueryWrapper query = new QueryWrapper<>(); + query.eq("task_id", id); + if (robotInfo.getAlarmThreshold() != null) { + query.ge("monitor_val", robotInfo.getAlarmThreshold()); + } + Integer num = this.count(query); + return num; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index 7531811..c405c9b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -44,6 +45,15 @@ } @Override + public void updateSpeed(RobotInfo robotInfo) { + UpdateWrapper update = new UpdateWrapper<>(); + update.set("conf_v", robotInfo.getConfV()); + update.set("conf_w", robotInfo.getConfW()); + update.eq("id", robotInfo.getId()); + update(update); + } + + @Override public List list(Wrapper queryWrapper) { List robotInfos = super.list(queryWrapper); robotInfos.forEach(this::wrapRobotInfo); diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java index 71c030f..0463880 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java @@ -5,9 +5,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.AlarmRecordMapper; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -21,10 +26,41 @@ */ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + private final IRobotInfoService robotInfoService; + + public AlarmRecordServiceImpl(@Lazy IRobotInfoService robotInfoService) { + this.robotInfoService = robotInfoService; + } @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { - return this.baseMapper.selectAlarmRecordPage(page, query); + List records = this.baseMapper.selectAlarmRecordPage(page, query); + records.forEach(this::wrapRecord); + return records; + } + + private void wrapRecord(AlarmRecord record) { + //判断是否有检测值 + record.setMonitorValStatus("无"); + if (record.getAlarmThreshold() == null) { + record.setAlarmThreshold(new BigDecimal(0)); + } + if (record.getAlarmThreshold().compareTo(record.getMonitorVal()) <= 0) { + record.setMonitorValStatus("有"); + } + } + + @Override + public Integer selectCountByTaskId(Long id, Long robotId) { + RobotInfo robotInfo = robotInfoService.getById(robotId); + + QueryWrapper query = new QueryWrapper<>(); + query.eq("task_id", id); + if (robotInfo.getAlarmThreshold() != null) { + query.ge("monitor_val", robotInfo.getAlarmThreshold()); + } + Integer num = this.count(query); + return num; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index 7531811..c405c9b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -44,6 +45,15 @@ } @Override + public void updateSpeed(RobotInfo robotInfo) { + UpdateWrapper update = new UpdateWrapper<>(); + update.set("conf_v", robotInfo.getConfV()); + update.set("conf_w", robotInfo.getConfW()); + update.eq("id", robotInfo.getId()); + update(update); + } + + @Override public List list(Wrapper queryWrapper) { List robotInfos = super.list(queryWrapper); robotInfos.forEach(this::wrapRobotInfo); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 6692c5d..2afae14 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -10,9 +10,9 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; import com.casic.missiles.modular.robot.model.RobotStatusInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; @@ -57,20 +57,21 @@ } private void wrapInfo(RobotStatusInfo statusInfo) { - statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getTrackStatus())); + statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getDiscernType())); //暂停状态 statusInfo.setAppNavPauseName(getDictName("appNavPause", statusInfo.getAppNavPause())); //开启状态 statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); - statusInfo.setNavigationStatusName(getDictName("trackStatus", statusInfo.getNavigationStatus())); + String statusName = getDictName("trackStatus", statusInfo.getNavigationStatus()); + statusInfo.setNavigationStatusName(statusName); statusInfo.setDataRecordName(getDictName("trackStatus", statusInfo.getDataRecord())); statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); statusInfo.setTrackName(getDictName("trackStatus", statusInfo.getTrack())); statusInfo.setInsStatusName(getDictName("trackStatus", statusInfo.getInsStatus())); statusInfo.setAppStopNavtrackName(getDictName("trackStatus", statusInfo.getAppStopNavtrack())); - + statusInfo.setTrackRecordName(getDictName("trackStatus", statusInfo.getTrackRecord())); //收到状态 statusInfo.setLidarMsgName(getDictName("lidarMsg", statusInfo.getLidarMsg())); statusInfo.setImuMsgName(getDictName("lidarMsg", statusInfo.getImuMsg())); @@ -110,10 +111,10 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); SensorStatusDTO msg = responseDTO.getMsg(); - query.set("lidar_msg", msg.getLidarMsg()); - query.set("imu_msg", msg.getImuMsg()); - query.set("charge_msg", msg.getChargeMsg()); - query.set("gps_msg", msg.getGpsMsg()); + query.set("lidar_msg", msg.getLidarMsg() == null ? 0 : msg.getLidarMsg()); + query.set("imu_msg", msg.getImuMsg() == null ? 0 : msg.getImuMsg()); + query.set("charge_msg", msg.getChargeMsg() == null ? 0 : msg.getChargeMsg()); + query.set("gps_msg", msg.getGpsMsg() == null ? 0 : msg.getGpsMsg()); query.eq("robot_id", robotId); update(query); } @@ -172,4 +173,20 @@ update(query); } } + + @Override + public void updateCurrTask(String robotId, Long currRouteId, Long currTaskId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("curr_route_id", currRouteId); + query.set("curr_task_id", currTaskId); + query.eq("robot_id", robotId); + update(query); + } + + @Override + public RobotStatusInfo getStatusByRobotId(String robotId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("robot_id", robotId); + return getOne(query); + } } \ No newline at end of file diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java index 71c030f..0463880 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java @@ -5,9 +5,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.AlarmRecordMapper; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -21,10 +26,41 @@ */ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + private final IRobotInfoService robotInfoService; + + public AlarmRecordServiceImpl(@Lazy IRobotInfoService robotInfoService) { + this.robotInfoService = robotInfoService; + } @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { - return this.baseMapper.selectAlarmRecordPage(page, query); + List records = this.baseMapper.selectAlarmRecordPage(page, query); + records.forEach(this::wrapRecord); + return records; + } + + private void wrapRecord(AlarmRecord record) { + //判断是否有检测值 + record.setMonitorValStatus("无"); + if (record.getAlarmThreshold() == null) { + record.setAlarmThreshold(new BigDecimal(0)); + } + if (record.getAlarmThreshold().compareTo(record.getMonitorVal()) <= 0) { + record.setMonitorValStatus("有"); + } + } + + @Override + public Integer selectCountByTaskId(Long id, Long robotId) { + RobotInfo robotInfo = robotInfoService.getById(robotId); + + QueryWrapper query = new QueryWrapper<>(); + query.eq("task_id", id); + if (robotInfo.getAlarmThreshold() != null) { + query.ge("monitor_val", robotInfo.getAlarmThreshold()); + } + Integer num = this.count(query); + return num; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index 7531811..c405c9b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -44,6 +45,15 @@ } @Override + public void updateSpeed(RobotInfo robotInfo) { + UpdateWrapper update = new UpdateWrapper<>(); + update.set("conf_v", robotInfo.getConfV()); + update.set("conf_w", robotInfo.getConfW()); + update.eq("id", robotInfo.getId()); + update(update); + } + + @Override public List list(Wrapper queryWrapper) { List robotInfos = super.list(queryWrapper); robotInfos.forEach(this::wrapRobotInfo); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 6692c5d..2afae14 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -10,9 +10,9 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; import com.casic.missiles.modular.robot.model.RobotStatusInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; @@ -57,20 +57,21 @@ } private void wrapInfo(RobotStatusInfo statusInfo) { - statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getTrackStatus())); + statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getDiscernType())); //暂停状态 statusInfo.setAppNavPauseName(getDictName("appNavPause", statusInfo.getAppNavPause())); //开启状态 statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); - statusInfo.setNavigationStatusName(getDictName("trackStatus", statusInfo.getNavigationStatus())); + String statusName = getDictName("trackStatus", statusInfo.getNavigationStatus()); + statusInfo.setNavigationStatusName(statusName); statusInfo.setDataRecordName(getDictName("trackStatus", statusInfo.getDataRecord())); statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); statusInfo.setTrackName(getDictName("trackStatus", statusInfo.getTrack())); statusInfo.setInsStatusName(getDictName("trackStatus", statusInfo.getInsStatus())); statusInfo.setAppStopNavtrackName(getDictName("trackStatus", statusInfo.getAppStopNavtrack())); - + statusInfo.setTrackRecordName(getDictName("trackStatus", statusInfo.getTrackRecord())); //收到状态 statusInfo.setLidarMsgName(getDictName("lidarMsg", statusInfo.getLidarMsg())); statusInfo.setImuMsgName(getDictName("lidarMsg", statusInfo.getImuMsg())); @@ -110,10 +111,10 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); SensorStatusDTO msg = responseDTO.getMsg(); - query.set("lidar_msg", msg.getLidarMsg()); - query.set("imu_msg", msg.getImuMsg()); - query.set("charge_msg", msg.getChargeMsg()); - query.set("gps_msg", msg.getGpsMsg()); + query.set("lidar_msg", msg.getLidarMsg() == null ? 0 : msg.getLidarMsg()); + query.set("imu_msg", msg.getImuMsg() == null ? 0 : msg.getImuMsg()); + query.set("charge_msg", msg.getChargeMsg() == null ? 0 : msg.getChargeMsg()); + query.set("gps_msg", msg.getGpsMsg() == null ? 0 : msg.getGpsMsg()); query.eq("robot_id", robotId); update(query); } @@ -172,4 +173,20 @@ update(query); } } + + @Override + public void updateCurrTask(String robotId, Long currRouteId, Long currTaskId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("curr_route_id", currRouteId); + query.set("curr_task_id", currTaskId); + query.eq("robot_id", robotId); + update(query); + } + + @Override + public RobotStatusInfo getStatusByRobotId(String robotId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("robot_id", robotId); + return getOne(query); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java index 278415a..4de13dc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.RobotTrajectoryInfoMapper; import com.casic.missiles.modular.robot.model.RobotTrajectoryInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; import org.eclipse.paho.client.mqttv3.MqttMessage; diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java index 71c030f..0463880 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java @@ -5,9 +5,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.AlarmRecordMapper; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -21,10 +26,41 @@ */ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + private final IRobotInfoService robotInfoService; + + public AlarmRecordServiceImpl(@Lazy IRobotInfoService robotInfoService) { + this.robotInfoService = robotInfoService; + } @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { - return this.baseMapper.selectAlarmRecordPage(page, query); + List records = this.baseMapper.selectAlarmRecordPage(page, query); + records.forEach(this::wrapRecord); + return records; + } + + private void wrapRecord(AlarmRecord record) { + //判断是否有检测值 + record.setMonitorValStatus("无"); + if (record.getAlarmThreshold() == null) { + record.setAlarmThreshold(new BigDecimal(0)); + } + if (record.getAlarmThreshold().compareTo(record.getMonitorVal()) <= 0) { + record.setMonitorValStatus("有"); + } + } + + @Override + public Integer selectCountByTaskId(Long id, Long robotId) { + RobotInfo robotInfo = robotInfoService.getById(robotId); + + QueryWrapper query = new QueryWrapper<>(); + query.eq("task_id", id); + if (robotInfo.getAlarmThreshold() != null) { + query.ge("monitor_val", robotInfo.getAlarmThreshold()); + } + Integer num = this.count(query); + return num; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index 7531811..c405c9b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -44,6 +45,15 @@ } @Override + public void updateSpeed(RobotInfo robotInfo) { + UpdateWrapper update = new UpdateWrapper<>(); + update.set("conf_v", robotInfo.getConfV()); + update.set("conf_w", robotInfo.getConfW()); + update.eq("id", robotInfo.getId()); + update(update); + } + + @Override public List list(Wrapper queryWrapper) { List robotInfos = super.list(queryWrapper); robotInfos.forEach(this::wrapRobotInfo); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 6692c5d..2afae14 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -10,9 +10,9 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; import com.casic.missiles.modular.robot.model.RobotStatusInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; @@ -57,20 +57,21 @@ } private void wrapInfo(RobotStatusInfo statusInfo) { - statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getTrackStatus())); + statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getDiscernType())); //暂停状态 statusInfo.setAppNavPauseName(getDictName("appNavPause", statusInfo.getAppNavPause())); //开启状态 statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); - statusInfo.setNavigationStatusName(getDictName("trackStatus", statusInfo.getNavigationStatus())); + String statusName = getDictName("trackStatus", statusInfo.getNavigationStatus()); + statusInfo.setNavigationStatusName(statusName); statusInfo.setDataRecordName(getDictName("trackStatus", statusInfo.getDataRecord())); statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); statusInfo.setTrackName(getDictName("trackStatus", statusInfo.getTrack())); statusInfo.setInsStatusName(getDictName("trackStatus", statusInfo.getInsStatus())); statusInfo.setAppStopNavtrackName(getDictName("trackStatus", statusInfo.getAppStopNavtrack())); - + statusInfo.setTrackRecordName(getDictName("trackStatus", statusInfo.getTrackRecord())); //收到状态 statusInfo.setLidarMsgName(getDictName("lidarMsg", statusInfo.getLidarMsg())); statusInfo.setImuMsgName(getDictName("lidarMsg", statusInfo.getImuMsg())); @@ -110,10 +111,10 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); SensorStatusDTO msg = responseDTO.getMsg(); - query.set("lidar_msg", msg.getLidarMsg()); - query.set("imu_msg", msg.getImuMsg()); - query.set("charge_msg", msg.getChargeMsg()); - query.set("gps_msg", msg.getGpsMsg()); + query.set("lidar_msg", msg.getLidarMsg() == null ? 0 : msg.getLidarMsg()); + query.set("imu_msg", msg.getImuMsg() == null ? 0 : msg.getImuMsg()); + query.set("charge_msg", msg.getChargeMsg() == null ? 0 : msg.getChargeMsg()); + query.set("gps_msg", msg.getGpsMsg() == null ? 0 : msg.getGpsMsg()); query.eq("robot_id", robotId); update(query); } @@ -172,4 +173,20 @@ update(query); } } + + @Override + public void updateCurrTask(String robotId, Long currRouteId, Long currTaskId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("curr_route_id", currRouteId); + query.set("curr_task_id", currTaskId); + query.eq("robot_id", robotId); + update(query); + } + + @Override + public RobotStatusInfo getStatusByRobotId(String robotId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("robot_id", robotId); + return getOne(query); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java index 278415a..4de13dc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.RobotTrajectoryInfoMapper; import com.casic.missiles.modular.robot.model.RobotTrajectoryInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; import org.eclipse.paho.client.mqttv3.MqttMessage; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java index a965283..894fc75 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java @@ -5,12 +5,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.dao.RouteInfoMapper; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.DeleteTrackRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -28,6 +34,11 @@ */ @Service public class RouteInfoServiceImpl extends ServiceImpl implements IRouteInfoService { + private final IBaseRobotService robotService; + + public RouteInfoServiceImpl(@Lazy IBaseRobotService robotService) { + this.robotService = robotService; + } @Override public List selectRouteInfoPage(Page page, QueryWrapper query) { @@ -40,6 +51,23 @@ } @Override + public boolean removeById(Serializable id) { + RouteInfo routeInfo = getById(id); + + RobotInfo info = new RobotInfo(); + info.setId(routeInfo.getRobotId()); + MessageRequestDTO messageDTO = new MessageRequestDTO(); + DeleteTrackRequest deleteTrackRequest = new DeleteTrackRequest(); + deleteTrackRequest.setSn(info.getId() + ""); + deleteTrackRequest.setTrack_name(routeInfo.getTargetId()); + messageDTO.setMsg(deleteTrackRequest); + robotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DELETE_TRACK, messageDTO); + super.removeById(id); + //删除轨迹文件 + return super.removeById(id); + } + + @Override public List saveListByRouteTargetIds(RobotInfo robotInfo, List result) { //检索当前库中机器人信息表 QueryWrapper query = new QueryWrapper<>(); diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java index 71c030f..0463880 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java @@ -5,9 +5,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.AlarmRecordMapper; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -21,10 +26,41 @@ */ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + private final IRobotInfoService robotInfoService; + + public AlarmRecordServiceImpl(@Lazy IRobotInfoService robotInfoService) { + this.robotInfoService = robotInfoService; + } @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { - return this.baseMapper.selectAlarmRecordPage(page, query); + List records = this.baseMapper.selectAlarmRecordPage(page, query); + records.forEach(this::wrapRecord); + return records; + } + + private void wrapRecord(AlarmRecord record) { + //判断是否有检测值 + record.setMonitorValStatus("无"); + if (record.getAlarmThreshold() == null) { + record.setAlarmThreshold(new BigDecimal(0)); + } + if (record.getAlarmThreshold().compareTo(record.getMonitorVal()) <= 0) { + record.setMonitorValStatus("有"); + } + } + + @Override + public Integer selectCountByTaskId(Long id, Long robotId) { + RobotInfo robotInfo = robotInfoService.getById(robotId); + + QueryWrapper query = new QueryWrapper<>(); + query.eq("task_id", id); + if (robotInfo.getAlarmThreshold() != null) { + query.ge("monitor_val", robotInfo.getAlarmThreshold()); + } + Integer num = this.count(query); + return num; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index 7531811..c405c9b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -44,6 +45,15 @@ } @Override + public void updateSpeed(RobotInfo robotInfo) { + UpdateWrapper update = new UpdateWrapper<>(); + update.set("conf_v", robotInfo.getConfV()); + update.set("conf_w", robotInfo.getConfW()); + update.eq("id", robotInfo.getId()); + update(update); + } + + @Override public List list(Wrapper queryWrapper) { List robotInfos = super.list(queryWrapper); robotInfos.forEach(this::wrapRobotInfo); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 6692c5d..2afae14 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -10,9 +10,9 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; import com.casic.missiles.modular.robot.model.RobotStatusInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; @@ -57,20 +57,21 @@ } private void wrapInfo(RobotStatusInfo statusInfo) { - statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getTrackStatus())); + statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getDiscernType())); //暂停状态 statusInfo.setAppNavPauseName(getDictName("appNavPause", statusInfo.getAppNavPause())); //开启状态 statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); - statusInfo.setNavigationStatusName(getDictName("trackStatus", statusInfo.getNavigationStatus())); + String statusName = getDictName("trackStatus", statusInfo.getNavigationStatus()); + statusInfo.setNavigationStatusName(statusName); statusInfo.setDataRecordName(getDictName("trackStatus", statusInfo.getDataRecord())); statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); statusInfo.setTrackName(getDictName("trackStatus", statusInfo.getTrack())); statusInfo.setInsStatusName(getDictName("trackStatus", statusInfo.getInsStatus())); statusInfo.setAppStopNavtrackName(getDictName("trackStatus", statusInfo.getAppStopNavtrack())); - + statusInfo.setTrackRecordName(getDictName("trackStatus", statusInfo.getTrackRecord())); //收到状态 statusInfo.setLidarMsgName(getDictName("lidarMsg", statusInfo.getLidarMsg())); statusInfo.setImuMsgName(getDictName("lidarMsg", statusInfo.getImuMsg())); @@ -110,10 +111,10 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); SensorStatusDTO msg = responseDTO.getMsg(); - query.set("lidar_msg", msg.getLidarMsg()); - query.set("imu_msg", msg.getImuMsg()); - query.set("charge_msg", msg.getChargeMsg()); - query.set("gps_msg", msg.getGpsMsg()); + query.set("lidar_msg", msg.getLidarMsg() == null ? 0 : msg.getLidarMsg()); + query.set("imu_msg", msg.getImuMsg() == null ? 0 : msg.getImuMsg()); + query.set("charge_msg", msg.getChargeMsg() == null ? 0 : msg.getChargeMsg()); + query.set("gps_msg", msg.getGpsMsg() == null ? 0 : msg.getGpsMsg()); query.eq("robot_id", robotId); update(query); } @@ -172,4 +173,20 @@ update(query); } } + + @Override + public void updateCurrTask(String robotId, Long currRouteId, Long currTaskId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("curr_route_id", currRouteId); + query.set("curr_task_id", currTaskId); + query.eq("robot_id", robotId); + update(query); + } + + @Override + public RobotStatusInfo getStatusByRobotId(String robotId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("robot_id", robotId); + return getOne(query); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java index 278415a..4de13dc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.RobotTrajectoryInfoMapper; import com.casic.missiles.modular.robot.model.RobotTrajectoryInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; import org.eclipse.paho.client.mqttv3.MqttMessage; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java index a965283..894fc75 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java @@ -5,12 +5,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.dao.RouteInfoMapper; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.DeleteTrackRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -28,6 +34,11 @@ */ @Service public class RouteInfoServiceImpl extends ServiceImpl implements IRouteInfoService { + private final IBaseRobotService robotService; + + public RouteInfoServiceImpl(@Lazy IBaseRobotService robotService) { + this.robotService = robotService; + } @Override public List selectRouteInfoPage(Page page, QueryWrapper query) { @@ -40,6 +51,23 @@ } @Override + public boolean removeById(Serializable id) { + RouteInfo routeInfo = getById(id); + + RobotInfo info = new RobotInfo(); + info.setId(routeInfo.getRobotId()); + MessageRequestDTO messageDTO = new MessageRequestDTO(); + DeleteTrackRequest deleteTrackRequest = new DeleteTrackRequest(); + deleteTrackRequest.setSn(info.getId() + ""); + deleteTrackRequest.setTrack_name(routeInfo.getTargetId()); + messageDTO.setMsg(deleteTrackRequest); + robotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DELETE_TRACK, messageDTO); + super.removeById(id); + //删除轨迹文件 + return super.removeById(id); + } + + @Override public List saveListByRouteTargetIds(RobotInfo robotInfo, List result) { //检索当前库中机器人信息表 QueryWrapper query = new QueryWrapper<>(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java index c12a903..c16c954 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java @@ -1,15 +1,33 @@ package com.casic.missiles.modular.robot.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import java.util.List; - +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dao.TaskInfoMapper; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; +import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; /** @@ -22,10 +40,98 @@ */ @Service public class TaskInfoServiceImpl extends ServiceImpl implements ITaskInfoService { + private final IRouteInfoService routeInfoService; + private final IRobotStatusInfoService statusInfoService; + private final AbstractDictService dictService; + private final IAlarmRecordService recordService; - @Override - public List selectTaskInfoPage(Page page,QueryWrapper query) { - return this.baseMapper.selectTaskInfoPage(page,query); + public TaskInfoServiceImpl(@Lazy IRouteInfoService routeInfoService, IRobotStatusInfoService statusInfoService, AbstractDictService dictService, @Lazy IAlarmRecordService recordService) { + this.routeInfoService = routeInfoService; + this.statusInfoService = statusInfoService; + this.dictService = dictService; + this.recordService = recordService; } -} + @Override + public List selectTaskInfoPage(Page page, QueryWrapper query) { + return this.baseMapper.selectTaskInfoPage(page, query); + } + + @Override + public TaskInfo getById(Serializable id) { + TaskInfo taskInfo = super.getById(id); + wrapTaskInfo(taskInfo); + return taskInfo; + } + + @Override + public > E page(E page, Wrapper queryWrapper) { + E infoIPage = super.page(page, queryWrapper); + infoIPage.getRecords().forEach(this::wrapTaskInfo); + return infoIPage; + } + + private void wrapTaskInfo(TaskInfo taskInfo) { + taskInfo.setDiscernTypeName(dictService.getDictNameByCode(RobotDictConstants.DISCERN_TYPE, taskInfo.getDiscernType() + "")); + taskInfo.setTaskTypeName(dictService.getDictNameByCode(RobotDictConstants.TASK_TYPE, taskInfo.getTaskType() + "")); + //检索当前任务告警数量 + taskInfo.setAlarmNum(recordService.selectCountByTaskId(taskInfo.getId(),taskInfo.getRobotId())); + } + + @Transactional + @Override + public void reloadTask(StartTrackRequest request, RobotInfo info) { + String robotId = info.getId() + ""; + + //开启操作 + if (request.getAction() == 1) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("target_id", request.getTrack_name()); + List routeInfos = routeInfoService.list(query); + + if (CollectionUtil.isEmpty(routeInfos)) { + throw new ServiceException(500, "路线不存在,请及时更新"); + } + RouteInfo routeInfo = routeInfos.get(0); + //No.2 新增任务信息 + TaskInfo taskInfo = new TaskInfo(); + String currDate = DateUtil.format(new Date(), "yyyyMMdd"); + Long maxNo = this.baseMapper.selectMaxNo(currDate + "%"); + if (new Long(0L).equals(maxNo)) { + maxNo = new Long(currDate + String.format("%07d", 1)); + } else { + maxNo = maxNo + 1; + } + taskInfo.setTaskNo(maxNo); + taskInfo.setCreateTime(new Date()); + //任务类型 中子源 + taskInfo.setTaskType(1); + taskInfo.setDiscernType(1); + taskInfo.setTaskName(routeInfo.getRouteName() + "巡线任务"); + //执行状态 未完成 + taskInfo.setTaskStatus(0); + taskInfo.setStartTime(new Date()); + taskInfo.setRouteId(routeInfo.getId()); + taskInfo.setRobotId(info.getId()); + save(taskInfo); + + //No.3 更新 + Long currRouteId = routeInfo.getId(); + Long currTaskId = taskInfo.getId(); + statusInfoService.updateCurrTask(robotId, currRouteId, currTaskId); + } else { + //关闭操作 + RobotStatusInfo statusInfo = statusInfoService.getStatusByRobotId(robotId); + if (statusInfo.getCurrTaskId() != null) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("update_time", new Date()); + updateWrapper.set("task_status", 1); + updateWrapper.set("end_time", new Date()); + updateWrapper.eq("id", statusInfo.getCurrTaskId()); + update(updateWrapper); + } + //清空当前任务 + statusInfoService.updateCurrTask(robotId, null, null); + } + } +} \ No newline at end of file diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java index 71c030f..0463880 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java @@ -5,9 +5,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.AlarmRecordMapper; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -21,10 +26,41 @@ */ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + private final IRobotInfoService robotInfoService; + + public AlarmRecordServiceImpl(@Lazy IRobotInfoService robotInfoService) { + this.robotInfoService = robotInfoService; + } @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { - return this.baseMapper.selectAlarmRecordPage(page, query); + List records = this.baseMapper.selectAlarmRecordPage(page, query); + records.forEach(this::wrapRecord); + return records; + } + + private void wrapRecord(AlarmRecord record) { + //判断是否有检测值 + record.setMonitorValStatus("无"); + if (record.getAlarmThreshold() == null) { + record.setAlarmThreshold(new BigDecimal(0)); + } + if (record.getAlarmThreshold().compareTo(record.getMonitorVal()) <= 0) { + record.setMonitorValStatus("有"); + } + } + + @Override + public Integer selectCountByTaskId(Long id, Long robotId) { + RobotInfo robotInfo = robotInfoService.getById(robotId); + + QueryWrapper query = new QueryWrapper<>(); + query.eq("task_id", id); + if (robotInfo.getAlarmThreshold() != null) { + query.ge("monitor_val", robotInfo.getAlarmThreshold()); + } + Integer num = this.count(query); + return num; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index 7531811..c405c9b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -44,6 +45,15 @@ } @Override + public void updateSpeed(RobotInfo robotInfo) { + UpdateWrapper update = new UpdateWrapper<>(); + update.set("conf_v", robotInfo.getConfV()); + update.set("conf_w", robotInfo.getConfW()); + update.eq("id", robotInfo.getId()); + update(update); + } + + @Override public List list(Wrapper queryWrapper) { List robotInfos = super.list(queryWrapper); robotInfos.forEach(this::wrapRobotInfo); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 6692c5d..2afae14 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -10,9 +10,9 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; import com.casic.missiles.modular.robot.model.RobotStatusInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; @@ -57,20 +57,21 @@ } private void wrapInfo(RobotStatusInfo statusInfo) { - statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getTrackStatus())); + statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getDiscernType())); //暂停状态 statusInfo.setAppNavPauseName(getDictName("appNavPause", statusInfo.getAppNavPause())); //开启状态 statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); - statusInfo.setNavigationStatusName(getDictName("trackStatus", statusInfo.getNavigationStatus())); + String statusName = getDictName("trackStatus", statusInfo.getNavigationStatus()); + statusInfo.setNavigationStatusName(statusName); statusInfo.setDataRecordName(getDictName("trackStatus", statusInfo.getDataRecord())); statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); statusInfo.setTrackName(getDictName("trackStatus", statusInfo.getTrack())); statusInfo.setInsStatusName(getDictName("trackStatus", statusInfo.getInsStatus())); statusInfo.setAppStopNavtrackName(getDictName("trackStatus", statusInfo.getAppStopNavtrack())); - + statusInfo.setTrackRecordName(getDictName("trackStatus", statusInfo.getTrackRecord())); //收到状态 statusInfo.setLidarMsgName(getDictName("lidarMsg", statusInfo.getLidarMsg())); statusInfo.setImuMsgName(getDictName("lidarMsg", statusInfo.getImuMsg())); @@ -110,10 +111,10 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); SensorStatusDTO msg = responseDTO.getMsg(); - query.set("lidar_msg", msg.getLidarMsg()); - query.set("imu_msg", msg.getImuMsg()); - query.set("charge_msg", msg.getChargeMsg()); - query.set("gps_msg", msg.getGpsMsg()); + query.set("lidar_msg", msg.getLidarMsg() == null ? 0 : msg.getLidarMsg()); + query.set("imu_msg", msg.getImuMsg() == null ? 0 : msg.getImuMsg()); + query.set("charge_msg", msg.getChargeMsg() == null ? 0 : msg.getChargeMsg()); + query.set("gps_msg", msg.getGpsMsg() == null ? 0 : msg.getGpsMsg()); query.eq("robot_id", robotId); update(query); } @@ -172,4 +173,20 @@ update(query); } } + + @Override + public void updateCurrTask(String robotId, Long currRouteId, Long currTaskId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("curr_route_id", currRouteId); + query.set("curr_task_id", currTaskId); + query.eq("robot_id", robotId); + update(query); + } + + @Override + public RobotStatusInfo getStatusByRobotId(String robotId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("robot_id", robotId); + return getOne(query); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java index 278415a..4de13dc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.RobotTrajectoryInfoMapper; import com.casic.missiles.modular.robot.model.RobotTrajectoryInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; import org.eclipse.paho.client.mqttv3.MqttMessage; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java index a965283..894fc75 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java @@ -5,12 +5,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.dao.RouteInfoMapper; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.DeleteTrackRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -28,6 +34,11 @@ */ @Service public class RouteInfoServiceImpl extends ServiceImpl implements IRouteInfoService { + private final IBaseRobotService robotService; + + public RouteInfoServiceImpl(@Lazy IBaseRobotService robotService) { + this.robotService = robotService; + } @Override public List selectRouteInfoPage(Page page, QueryWrapper query) { @@ -40,6 +51,23 @@ } @Override + public boolean removeById(Serializable id) { + RouteInfo routeInfo = getById(id); + + RobotInfo info = new RobotInfo(); + info.setId(routeInfo.getRobotId()); + MessageRequestDTO messageDTO = new MessageRequestDTO(); + DeleteTrackRequest deleteTrackRequest = new DeleteTrackRequest(); + deleteTrackRequest.setSn(info.getId() + ""); + deleteTrackRequest.setTrack_name(routeInfo.getTargetId()); + messageDTO.setMsg(deleteTrackRequest); + robotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DELETE_TRACK, messageDTO); + super.removeById(id); + //删除轨迹文件 + return super.removeById(id); + } + + @Override public List saveListByRouteTargetIds(RobotInfo robotInfo, List result) { //检索当前库中机器人信息表 QueryWrapper query = new QueryWrapper<>(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java index c12a903..c16c954 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java @@ -1,15 +1,33 @@ package com.casic.missiles.modular.robot.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import java.util.List; - +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dao.TaskInfoMapper; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; +import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; /** @@ -22,10 +40,98 @@ */ @Service public class TaskInfoServiceImpl extends ServiceImpl implements ITaskInfoService { + private final IRouteInfoService routeInfoService; + private final IRobotStatusInfoService statusInfoService; + private final AbstractDictService dictService; + private final IAlarmRecordService recordService; - @Override - public List selectTaskInfoPage(Page page,QueryWrapper query) { - return this.baseMapper.selectTaskInfoPage(page,query); + public TaskInfoServiceImpl(@Lazy IRouteInfoService routeInfoService, IRobotStatusInfoService statusInfoService, AbstractDictService dictService, @Lazy IAlarmRecordService recordService) { + this.routeInfoService = routeInfoService; + this.statusInfoService = statusInfoService; + this.dictService = dictService; + this.recordService = recordService; } -} + @Override + public List selectTaskInfoPage(Page page, QueryWrapper query) { + return this.baseMapper.selectTaskInfoPage(page, query); + } + + @Override + public TaskInfo getById(Serializable id) { + TaskInfo taskInfo = super.getById(id); + wrapTaskInfo(taskInfo); + return taskInfo; + } + + @Override + public > E page(E page, Wrapper queryWrapper) { + E infoIPage = super.page(page, queryWrapper); + infoIPage.getRecords().forEach(this::wrapTaskInfo); + return infoIPage; + } + + private void wrapTaskInfo(TaskInfo taskInfo) { + taskInfo.setDiscernTypeName(dictService.getDictNameByCode(RobotDictConstants.DISCERN_TYPE, taskInfo.getDiscernType() + "")); + taskInfo.setTaskTypeName(dictService.getDictNameByCode(RobotDictConstants.TASK_TYPE, taskInfo.getTaskType() + "")); + //检索当前任务告警数量 + taskInfo.setAlarmNum(recordService.selectCountByTaskId(taskInfo.getId(),taskInfo.getRobotId())); + } + + @Transactional + @Override + public void reloadTask(StartTrackRequest request, RobotInfo info) { + String robotId = info.getId() + ""; + + //开启操作 + if (request.getAction() == 1) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("target_id", request.getTrack_name()); + List routeInfos = routeInfoService.list(query); + + if (CollectionUtil.isEmpty(routeInfos)) { + throw new ServiceException(500, "路线不存在,请及时更新"); + } + RouteInfo routeInfo = routeInfos.get(0); + //No.2 新增任务信息 + TaskInfo taskInfo = new TaskInfo(); + String currDate = DateUtil.format(new Date(), "yyyyMMdd"); + Long maxNo = this.baseMapper.selectMaxNo(currDate + "%"); + if (new Long(0L).equals(maxNo)) { + maxNo = new Long(currDate + String.format("%07d", 1)); + } else { + maxNo = maxNo + 1; + } + taskInfo.setTaskNo(maxNo); + taskInfo.setCreateTime(new Date()); + //任务类型 中子源 + taskInfo.setTaskType(1); + taskInfo.setDiscernType(1); + taskInfo.setTaskName(routeInfo.getRouteName() + "巡线任务"); + //执行状态 未完成 + taskInfo.setTaskStatus(0); + taskInfo.setStartTime(new Date()); + taskInfo.setRouteId(routeInfo.getId()); + taskInfo.setRobotId(info.getId()); + save(taskInfo); + + //No.3 更新 + Long currRouteId = routeInfo.getId(); + Long currTaskId = taskInfo.getId(); + statusInfoService.updateCurrTask(robotId, currRouteId, currTaskId); + } else { + //关闭操作 + RobotStatusInfo statusInfo = statusInfoService.getStatusByRobotId(robotId); + if (statusInfo.getCurrTaskId() != null) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("update_time", new Date()); + updateWrapper.set("task_status", 1); + updateWrapper.set("end_time", new Date()); + updateWrapper.eq("id", statusInfo.getCurrTaskId()); + update(updateWrapper); + } + //清空当前任务 + statusInfoService.updateCurrTask(robotId, null, null); + } + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java index 2f55ae2..d09a438 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java @@ -1,12 +1,11 @@ package com.casic.missiles.modular.robot.vo; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.robot.model.AlarmRecord; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.math.BigDecimal; - /** * 告警记录对象VO * @@ -22,21 +21,6 @@ */ @ApiModelProperty(value = "机器人主键", dataType = "Long") private Long robotId; - /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - private Integer taskType; - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - private Integer discernType; - /** - * 监测值 - */ - @ApiModelProperty(value = "监测值", dataType = "BigDecimal") - private BigDecimal monitorVal; /** * 机器人任务ID @@ -44,19 +28,39 @@ @ApiModelProperty(value = "机器人任务ID", dataType = "Long") private Long taskId; + @ApiModelProperty(value = "路线ID", dataType = "Long") + private Long routeId; + + @ApiModelProperty(value = "有无监测值类型(0 无 1 有)", dataType = "Long") + private Integer valType; + @ApiModelProperty(value = "开始时间(yyyy-MM-dd HH:mm:ss)", dataType = "String") + private String startTime; + @ApiModelProperty(value = "结束时间(yyyy-MM-dd HH:mm:ss)", dataType = "String") + private String endTime; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (robotId != null) { - query.eq("robot_id", robotId); - } - if (taskType != null) { - query.eq("task_type", taskType); - } - if (discernType != null) { - query.eq("discern_type", discernType); + query.eq("a.robot_id", robotId); } if (taskId != null) { - query.eq("task_id", taskId); + query.eq("a.task_id", taskId); + } + if (routeId != null) { + query.eq("d.id", routeId); + } + if (StrUtil.isNotEmpty(startTime)) { + query.ge("a.alarm_time", startTime); + } + if (StrUtil.isNotEmpty((endTime))) { + query.le("a.alarm_time", endTime); + } + if (valType != null) { + if (1 == valType) { + query.eq("(a.monitor_val>=b.alarm_threshold)", true); + } else { + query.eq("(a.monitor_val preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java index 71c030f..0463880 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java @@ -5,9 +5,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.AlarmRecordMapper; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -21,10 +26,41 @@ */ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + private final IRobotInfoService robotInfoService; + + public AlarmRecordServiceImpl(@Lazy IRobotInfoService robotInfoService) { + this.robotInfoService = robotInfoService; + } @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { - return this.baseMapper.selectAlarmRecordPage(page, query); + List records = this.baseMapper.selectAlarmRecordPage(page, query); + records.forEach(this::wrapRecord); + return records; + } + + private void wrapRecord(AlarmRecord record) { + //判断是否有检测值 + record.setMonitorValStatus("无"); + if (record.getAlarmThreshold() == null) { + record.setAlarmThreshold(new BigDecimal(0)); + } + if (record.getAlarmThreshold().compareTo(record.getMonitorVal()) <= 0) { + record.setMonitorValStatus("有"); + } + } + + @Override + public Integer selectCountByTaskId(Long id, Long robotId) { + RobotInfo robotInfo = robotInfoService.getById(robotId); + + QueryWrapper query = new QueryWrapper<>(); + query.eq("task_id", id); + if (robotInfo.getAlarmThreshold() != null) { + query.ge("monitor_val", robotInfo.getAlarmThreshold()); + } + Integer num = this.count(query); + return num; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index 7531811..c405c9b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -44,6 +45,15 @@ } @Override + public void updateSpeed(RobotInfo robotInfo) { + UpdateWrapper update = new UpdateWrapper<>(); + update.set("conf_v", robotInfo.getConfV()); + update.set("conf_w", robotInfo.getConfW()); + update.eq("id", robotInfo.getId()); + update(update); + } + + @Override public List list(Wrapper queryWrapper) { List robotInfos = super.list(queryWrapper); robotInfos.forEach(this::wrapRobotInfo); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 6692c5d..2afae14 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -10,9 +10,9 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; import com.casic.missiles.modular.robot.model.RobotStatusInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; @@ -57,20 +57,21 @@ } private void wrapInfo(RobotStatusInfo statusInfo) { - statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getTrackStatus())); + statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getDiscernType())); //暂停状态 statusInfo.setAppNavPauseName(getDictName("appNavPause", statusInfo.getAppNavPause())); //开启状态 statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); - statusInfo.setNavigationStatusName(getDictName("trackStatus", statusInfo.getNavigationStatus())); + String statusName = getDictName("trackStatus", statusInfo.getNavigationStatus()); + statusInfo.setNavigationStatusName(statusName); statusInfo.setDataRecordName(getDictName("trackStatus", statusInfo.getDataRecord())); statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); statusInfo.setTrackName(getDictName("trackStatus", statusInfo.getTrack())); statusInfo.setInsStatusName(getDictName("trackStatus", statusInfo.getInsStatus())); statusInfo.setAppStopNavtrackName(getDictName("trackStatus", statusInfo.getAppStopNavtrack())); - + statusInfo.setTrackRecordName(getDictName("trackStatus", statusInfo.getTrackRecord())); //收到状态 statusInfo.setLidarMsgName(getDictName("lidarMsg", statusInfo.getLidarMsg())); statusInfo.setImuMsgName(getDictName("lidarMsg", statusInfo.getImuMsg())); @@ -110,10 +111,10 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); SensorStatusDTO msg = responseDTO.getMsg(); - query.set("lidar_msg", msg.getLidarMsg()); - query.set("imu_msg", msg.getImuMsg()); - query.set("charge_msg", msg.getChargeMsg()); - query.set("gps_msg", msg.getGpsMsg()); + query.set("lidar_msg", msg.getLidarMsg() == null ? 0 : msg.getLidarMsg()); + query.set("imu_msg", msg.getImuMsg() == null ? 0 : msg.getImuMsg()); + query.set("charge_msg", msg.getChargeMsg() == null ? 0 : msg.getChargeMsg()); + query.set("gps_msg", msg.getGpsMsg() == null ? 0 : msg.getGpsMsg()); query.eq("robot_id", robotId); update(query); } @@ -172,4 +173,20 @@ update(query); } } + + @Override + public void updateCurrTask(String robotId, Long currRouteId, Long currTaskId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("curr_route_id", currRouteId); + query.set("curr_task_id", currTaskId); + query.eq("robot_id", robotId); + update(query); + } + + @Override + public RobotStatusInfo getStatusByRobotId(String robotId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("robot_id", robotId); + return getOne(query); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java index 278415a..4de13dc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.RobotTrajectoryInfoMapper; import com.casic.missiles.modular.robot.model.RobotTrajectoryInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; import org.eclipse.paho.client.mqttv3.MqttMessage; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java index a965283..894fc75 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java @@ -5,12 +5,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.dao.RouteInfoMapper; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.DeleteTrackRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -28,6 +34,11 @@ */ @Service public class RouteInfoServiceImpl extends ServiceImpl implements IRouteInfoService { + private final IBaseRobotService robotService; + + public RouteInfoServiceImpl(@Lazy IBaseRobotService robotService) { + this.robotService = robotService; + } @Override public List selectRouteInfoPage(Page page, QueryWrapper query) { @@ -40,6 +51,23 @@ } @Override + public boolean removeById(Serializable id) { + RouteInfo routeInfo = getById(id); + + RobotInfo info = new RobotInfo(); + info.setId(routeInfo.getRobotId()); + MessageRequestDTO messageDTO = new MessageRequestDTO(); + DeleteTrackRequest deleteTrackRequest = new DeleteTrackRequest(); + deleteTrackRequest.setSn(info.getId() + ""); + deleteTrackRequest.setTrack_name(routeInfo.getTargetId()); + messageDTO.setMsg(deleteTrackRequest); + robotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DELETE_TRACK, messageDTO); + super.removeById(id); + //删除轨迹文件 + return super.removeById(id); + } + + @Override public List saveListByRouteTargetIds(RobotInfo robotInfo, List result) { //检索当前库中机器人信息表 QueryWrapper query = new QueryWrapper<>(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java index c12a903..c16c954 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java @@ -1,15 +1,33 @@ package com.casic.missiles.modular.robot.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import java.util.List; - +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dao.TaskInfoMapper; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; +import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; /** @@ -22,10 +40,98 @@ */ @Service public class TaskInfoServiceImpl extends ServiceImpl implements ITaskInfoService { + private final IRouteInfoService routeInfoService; + private final IRobotStatusInfoService statusInfoService; + private final AbstractDictService dictService; + private final IAlarmRecordService recordService; - @Override - public List selectTaskInfoPage(Page page,QueryWrapper query) { - return this.baseMapper.selectTaskInfoPage(page,query); + public TaskInfoServiceImpl(@Lazy IRouteInfoService routeInfoService, IRobotStatusInfoService statusInfoService, AbstractDictService dictService, @Lazy IAlarmRecordService recordService) { + this.routeInfoService = routeInfoService; + this.statusInfoService = statusInfoService; + this.dictService = dictService; + this.recordService = recordService; } -} + @Override + public List selectTaskInfoPage(Page page, QueryWrapper query) { + return this.baseMapper.selectTaskInfoPage(page, query); + } + + @Override + public TaskInfo getById(Serializable id) { + TaskInfo taskInfo = super.getById(id); + wrapTaskInfo(taskInfo); + return taskInfo; + } + + @Override + public > E page(E page, Wrapper queryWrapper) { + E infoIPage = super.page(page, queryWrapper); + infoIPage.getRecords().forEach(this::wrapTaskInfo); + return infoIPage; + } + + private void wrapTaskInfo(TaskInfo taskInfo) { + taskInfo.setDiscernTypeName(dictService.getDictNameByCode(RobotDictConstants.DISCERN_TYPE, taskInfo.getDiscernType() + "")); + taskInfo.setTaskTypeName(dictService.getDictNameByCode(RobotDictConstants.TASK_TYPE, taskInfo.getTaskType() + "")); + //检索当前任务告警数量 + taskInfo.setAlarmNum(recordService.selectCountByTaskId(taskInfo.getId(),taskInfo.getRobotId())); + } + + @Transactional + @Override + public void reloadTask(StartTrackRequest request, RobotInfo info) { + String robotId = info.getId() + ""; + + //开启操作 + if (request.getAction() == 1) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("target_id", request.getTrack_name()); + List routeInfos = routeInfoService.list(query); + + if (CollectionUtil.isEmpty(routeInfos)) { + throw new ServiceException(500, "路线不存在,请及时更新"); + } + RouteInfo routeInfo = routeInfos.get(0); + //No.2 新增任务信息 + TaskInfo taskInfo = new TaskInfo(); + String currDate = DateUtil.format(new Date(), "yyyyMMdd"); + Long maxNo = this.baseMapper.selectMaxNo(currDate + "%"); + if (new Long(0L).equals(maxNo)) { + maxNo = new Long(currDate + String.format("%07d", 1)); + } else { + maxNo = maxNo + 1; + } + taskInfo.setTaskNo(maxNo); + taskInfo.setCreateTime(new Date()); + //任务类型 中子源 + taskInfo.setTaskType(1); + taskInfo.setDiscernType(1); + taskInfo.setTaskName(routeInfo.getRouteName() + "巡线任务"); + //执行状态 未完成 + taskInfo.setTaskStatus(0); + taskInfo.setStartTime(new Date()); + taskInfo.setRouteId(routeInfo.getId()); + taskInfo.setRobotId(info.getId()); + save(taskInfo); + + //No.3 更新 + Long currRouteId = routeInfo.getId(); + Long currTaskId = taskInfo.getId(); + statusInfoService.updateCurrTask(robotId, currRouteId, currTaskId); + } else { + //关闭操作 + RobotStatusInfo statusInfo = statusInfoService.getStatusByRobotId(robotId); + if (statusInfo.getCurrTaskId() != null) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("update_time", new Date()); + updateWrapper.set("task_status", 1); + updateWrapper.set("end_time", new Date()); + updateWrapper.eq("id", statusInfo.getCurrTaskId()); + update(updateWrapper); + } + //清空当前任务 + statusInfoService.updateCurrTask(robotId, null, null); + } + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java index 2f55ae2..d09a438 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java @@ -1,12 +1,11 @@ package com.casic.missiles.modular.robot.vo; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.robot.model.AlarmRecord; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.math.BigDecimal; - /** * 告警记录对象VO * @@ -22,21 +21,6 @@ */ @ApiModelProperty(value = "机器人主键", dataType = "Long") private Long robotId; - /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - private Integer taskType; - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - private Integer discernType; - /** - * 监测值 - */ - @ApiModelProperty(value = "监测值", dataType = "BigDecimal") - private BigDecimal monitorVal; /** * 机器人任务ID @@ -44,19 +28,39 @@ @ApiModelProperty(value = "机器人任务ID", dataType = "Long") private Long taskId; + @ApiModelProperty(value = "路线ID", dataType = "Long") + private Long routeId; + + @ApiModelProperty(value = "有无监测值类型(0 无 1 有)", dataType = "Long") + private Integer valType; + @ApiModelProperty(value = "开始时间(yyyy-MM-dd HH:mm:ss)", dataType = "String") + private String startTime; + @ApiModelProperty(value = "结束时间(yyyy-MM-dd HH:mm:ss)", dataType = "String") + private String endTime; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (robotId != null) { - query.eq("robot_id", robotId); - } - if (taskType != null) { - query.eq("task_type", taskType); - } - if (discernType != null) { - query.eq("discern_type", discernType); + query.eq("a.robot_id", robotId); } if (taskId != null) { - query.eq("task_id", taskId); + query.eq("a.task_id", taskId); + } + if (routeId != null) { + query.eq("d.id", routeId); + } + if (StrUtil.isNotEmpty(startTime)) { + query.ge("a.alarm_time", startTime); + } + if (StrUtil.isNotEmpty((endTime))) { + query.le("a.alarm_time", endTime); + } + if (valType != null) { + if (1 == valType) { + query.eq("(a.monitor_val>=b.alarm_threshold)", true); + } else { + query.eq("(a.monitor_val genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (routeId != null) { - query.eq("route_id", routeId); + if (robotId != null) { + query.eq("robot_id", robotId); } if (taskType != null) { query.eq("task_type", taskType); @@ -43,6 +50,13 @@ if (taskStatus != null) { query.eq("task_status", taskStatus); } + if (StrUtil.isNotEmpty(startTime)) { + query.ge("start_time", startTime); + } + if (StrUtil.isNotEmpty((endTime))) { + query.le("end_time", endTime); + } + query.orderByDesc("create_time"); return query; } } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java index ceb3b95..d1cff15 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java @@ -44,7 +44,7 @@ /** * 预览设备(前端不再调用) */ - @ApiOperation("预留设备") + @ApiOperation("预览设备") @GetMapping("/preview") @ResponseBody public ResponseDataDTO preview(@ApiParam("注册ID") Long userId) { @@ -134,11 +134,11 @@ * 实时云台控制(不带速度) * * @param deviceIp 设备ip - * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小) + * @param command 控制指令类型(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小) * @param isStop 开始控制还是结束控制 0-开始, 1-结束 * @return 调用 不需要预览的不带速度控制接口 NET_DVR_PTZControl_Other */ - @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoonOut-视频缩小)") + @ApiOperation("设备控制-(clean-镜头清洁,zoomIn-视频放大,zoomOut-视频缩小)") @GetMapping("/control") @ResponseBody public Object control(@ApiParam("机器人ID") String robotId, @ApiParam("设备ip") String deviceIp, @ApiParam("指令") String command, @ApiParam("0-开始, 1-结束") Integer isStop) { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java new file mode 100644 index 0000000..bc99a9a --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.constants; + +public interface RobotDictConstants { + /** + * 巡线类型 + */ + String DISCERN_TYPE = "discernType"; + /** + * 任务类型 + */ + String TASK_TYPE = "taskType"; +} 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 d92a081..ab3c71f 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 @@ -1,7 +1,12 @@ package com.casic.missiles.modular.robot; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +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; /** * 机器人操作类 @@ -40,4 +45,22 @@ * @param info 机器信息 */ void initMonitor(RobotInfo info); + + /** + * 开启循迹任务 + * + * @param request + * @return + */ + ResponseDataDTO startTrack(StartTrackRequest request); + + /** + * 机器人控制 + * + * @param request + * @return + */ + ResponseDataDTO appCmdVel(AppCmdVelRequest request); + + ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java index 56c3cb4..f7ca84c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/AlarmRecordController.java @@ -50,8 +50,8 @@ public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - query.orderByDesc("create_time"); - page = alarmRecordService.page(page, query); + List alarmRecords = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(alarmRecords); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java index 5f32155..77ed723 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotInfoController.java @@ -45,7 +45,7 @@ /** * 机器人信息管理分页列表 */ - @ApiOperation(value = "分页查询",hidden = true) + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(RobotInfoVO robotInfoVO) { Page page = PageFactory.defaultPage(); @@ -55,9 +55,19 @@ } /** + * 机器人速度设置 + */ + @ApiOperation(value = "机器人设置", hidden = true) + @PostMapping(value = "/setConfig") + public ResponseDataDTO setConfig(@RequestBody RobotInfo robotInfo) { + robotInfoService.updateSpeed(robotInfo); + return ResponseDataDTO.success(); + } + + /** * 新增机器人信息管理 */ - @ApiOperation(value = "新增接口" , hidden = true) + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody RobotInfo robotInfo) { robotInfoService.save(robotInfo); @@ -67,7 +77,7 @@ /** * 修改机器人信息管理 */ - @ApiOperation(value = "修改接口" , hidden = true) + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody RobotInfo robotInfo) { robotInfoService.updateById(robotInfo); @@ -77,7 +87,7 @@ /** * 删除机器人信息管理 */ - @ApiOperation(value = "删除接口" , hidden = true) + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { robotInfoService.removeById(id); @@ -87,7 +97,7 @@ /** * 机器人信息管理详情 */ - @ApiOperation(value = "详情查询" , hidden = true) + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(robotInfoService.getById(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 eedf651..6e959bf 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 @@ -1,14 +1,13 @@ package com.casic.missiles.modular.robot.controller; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.*; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.utils.PcdDownUtil; @@ -96,12 +95,7 @@ @ApiOperation(value = "循迹列表读取") @GetMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { - if (StrUtil.isEmpty(request.getSn())) { - request.setSn(request.getRobotId() + ""); - } - RobotInfo info = robotInfoService.getById(request.getRobotId()); - ResponseDataDTO> list = baseRobotService.getRobotRouteOptService().getTrackList(info); - return list; + return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST); } /** @@ -132,13 +126,7 @@ @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @GetMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest 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.START_TRACK, messageDTO); + ResponseDataDTO list = baseRobotService.startTrack(request); return list; } @@ -174,14 +162,8 @@ @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @GetMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - messageDTO.setPriority(request.getPriority()); - RobotInfo info = robotInfoService.getById(request.getRobotId()); - messageDTO.setMsg(request); - System.out.println(JSON.toJSONString(messageDTO)); -// return ResponseDataDTO.success(); - ResponseDataDTO list = baseRobotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); - return list; + ResponseDataDTO dto = baseRobotService.appCmdVel(request); + return dto; } @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java index b72209d..674079a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RouteInfoController.java @@ -77,7 +77,7 @@ /** * 删除线路信息管理(其他信息待定) */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { routeInfoService.removeById(id); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java index 42f12dc..eab236d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/TaskInfoController.java @@ -75,12 +75,12 @@ } /** - * 删除任务管理(其他信息待定) + * 删除任务管理 */ - @ApiOperation(value = "删除接口", hidden = true) + @ApiOperation(value = "删除接口") @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - taskInfoService.removeById(id); + public ResponseDataDTO delete(@RequestBody List ids) { + taskInfoService.removeByIds(ids); return ResponseDataDTO.success(); } @@ -92,4 +92,14 @@ public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(taskInfoService.getById(id)); } + + /** + * 导出巡检报告 + */ + @ApiOperation(value = "导出接口-模板待定TO-DO") + @GetMapping(value = "/export") + public ResponseDataDTO export(@RequestBody List ids) { + taskInfoService.removeByIds(ids); + return ResponseDataDTO.success(); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java index d206427..24f7228 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/TaskInfoMapper.java @@ -1,15 +1,18 @@ package com.casic.missiles.modular.robot.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.robot.model.TaskInfo; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Select; + import java.util.List; + /** *

- * 任务管理(其他信息待定) Mapper 接口 + * 任务管理(其他信息待定) Mapper 接口 *

* * @author lwh @@ -19,5 +22,8 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + List selectTaskInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + @Select("select IFNULL(max(task_no),0) as maxNo from task_info where task_no like #{taskNo}") + Long selectMaxNo(@Param("taskNo") String taskNo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml index 9de434a..bac9599 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dao/mapping/AlarmRecordMapper.xml @@ -8,8 +8,6 @@ - - @@ -24,8 +22,6 @@ create_time as createTime , update_time as updateTime , robot_id as robotId , - task_type as taskType , - discern_type as discernType , monitor_val as monitorVal , x , y , @@ -39,18 +35,25 @@ a.create_time as createTime , a.update_time as updateTime , a.robot_id as robotId , - a.task_type as taskType , - a.discern_type as discernType , a.monitor_val as monitorVal , a.x , a.y , a.alarm_time as alarmTime , - a.task_id as taskId + a.task_id as taskId, + b.robot_name as robotName, + c.start_time as startTime, + c.end_time as endTime, + d.route_name as routeName, + b.alarm_threshold as alarmThreshold from alarm_record a + inner join robot_info b on a.robot_id = b.id + inner join task_info c on a.task_id = c.id + inner join route_info d on d.id = c.route_id ${ew.sqlSegment} + order by a.create_time desc diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java index 66dcf70..f5aa959 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.robot.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,26 +52,15 @@ private Long robotId; /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - @TableField("task_type") - private Integer taskType; - - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - @TableField("discern_type") - private Integer discernType; - - /** * 监测值 */ @ApiModelProperty(value = "监测值", dataType = "BigDecimal") @TableField("monitor_val") private BigDecimal monitorVal; + @ApiModelProperty(value = "有无监测值", dataType = "BigDecimal") + @TableField(exist = false) + private String monitorValStatus; /** * 监测坐标x */ @@ -89,6 +80,7 @@ */ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; @@ -99,6 +91,25 @@ @TableField("task_id") private Long taskId; + @ApiModelProperty(value = "机器人名称", dataType = "String") + @TableField(exist = false) + private String robotName; + + @ApiModelProperty(value = "巡航路线名称", dataType = "String") + @TableField(exist = false) + private String routeName; + + @ApiModelProperty(value = "开始时间", dataType = "String") + @TableField(exist = false) + private String startTime; + + @ApiModelProperty(value = "结束时间", dataType = "String") + @TableField(exist = false) + private String endTime; + + @ApiModelProperty(value = "阈值", dataType = "String", hidden = true) + @TableField(exist = false) + private BigDecimal alarmThreshold; @Override public String toString() { @@ -107,8 +118,6 @@ + "createTime=" + createTime + "updateTime=" + updateTime + "robotId=" + robotId - + "taskType=" + taskType - + "discernType=" + discernType + "monitorVal=" + monitorVal + "x=" + x + "y=" + y 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 ebfb7af..f39a436 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 @@ -112,6 +112,10 @@ @TableField("default_topic") private String defaultTopic; + @ApiModelProperty(value = "告警阈值配置", dataType = "String") + @TableField("alarm_threshold") + private BigDecimal alarmThreshold; + @Override public String toString() { return "RobotInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java index 894ce90..2d8d705 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/RobotStatusInfo.java @@ -241,6 +241,9 @@ @TableField(exist = false) private String connStatusName; + @ApiModelProperty(value = "当前任务信息ID", dataType = "Long") + @TableField("curr_task_id") + private Long currTaskId; @Override public String toString() { return "RobotStatusInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java index af2cfc6..60e8143 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java @@ -55,21 +55,27 @@ /** * 任务类型(1巡检任务) */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") + @ApiModelProperty(value = "任务类型(taskType 1巡检任务)", dataType = "Integer") @TableField("task_type") private Integer taskType; - + @ApiModelProperty(value = "任务类型字典名称", dataType = "String") + @TableField(exist = false) + private String taskTypeName; /** * 识别类型(1中子源识别) */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") + @ApiModelProperty(value = "识别类型(discernType 1中子源识别)", dataType = "Integer") @TableField("discern_type") private Integer discernType; + @ApiModelProperty(value = "识别类型字典名称", dataType = "String") + @TableField(exist = false) + private String discernTypeName; + /** * 任务编号(yyyyMMdd+四位) */ - @ApiModelProperty(value = "任务编号(yyyyMMdd+四位)", dataType = "Long") + @ApiModelProperty(value = "任务编号(yyyyMMdd+七位)", dataType = "Long") @TableField("task_no") private Long taskNo; @@ -86,6 +92,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务开始时间", dataType = "Date") @TableField("start_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date startTime; /** @@ -94,6 +101,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "任务结束时间", dataType = "Date") @TableField("end_time") + @JSONField(serializeUsing = DateDeserializer.class) private Date endTime; /** @@ -103,7 +111,13 @@ @TableField("task_status") private Integer taskStatus; + @ApiModelProperty(value = "机器人ID", dataType = "Long") + @TableField("robot_id") + private Long robotId; + @ApiModelProperty(value = "告警数量", dataType = "Integer") + @TableField(exist = false) + private Integer alarmNum; @Override public String toString() { return "TaskInfo{" diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java index 6ffb7f2..b0f52f8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/IRobotRouteOptService.java @@ -2,7 +2,7 @@ import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.dto.RouteOptDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; 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 6d5118c..aed577f 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 @@ -1,7 +1,7 @@ package com.casic.missiles.modular.robot.opt.enums; import com.alibaba.fastjson.TypeReference; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; import java.util.HashMap; @@ -31,6 +31,8 @@ }), START_TRACK("/start_track", "/start_track_response", "启动或关闭循迹功能", true, new TypeReference>() { }), + DELETE_TRACK("/delete_track", "/delete_track_response", "删除路线", false, new TypeReference>() { + }), GET_NAVIGATION("/get_navigation", "/get_navigation_response", "导航开启/关闭状态读取", true, new TypeReference>() { }), GET_DATA_RECORD("/get_data_record", "/get_data_record_response", "获取录包状态", true, new TypeReference>() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java new file mode 100644 index 0000000..53b508c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; + +/** + * 指令抽象实现,增加机器人获取 + * + * @param + * @param + */ +public abstract class AbstractCmdHandler implements IBaseCmdHandler { + private RobotInfo robotInfo; + protected final IRobotRouteOptService optService; + protected final IRobotInfoService service; + + protected AbstractCmdHandler(@Lazy IRobotRouteOptService optService, @Lazy IRobotInfoService service) { + this.optService = optService; + this.service = service; + } + + @Override + public void initHandler(BaseRobotCmdDTO baseRobotCmdDTO) { + robotInfo = service.getById(baseRobotCmdDTO.getRobotId()); + } + + public RobotInfo getRobotInfo() { + return robotInfo; + } + + public void setRobotInfo(RobotInfo robotInfo) { + this.robotInfo = robotInfo; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java new file mode 100644 index 0000000..077f783 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseCmdHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.modular.robot.opt.handler; + +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.RobotBaseMsg; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; + + +/** + * 指令处理器 + * + * @param 命令泛型 + */ +public interface IBaseCmdHandler { + /** + * 资源初始化 + * + * @param baseRobotCmdDTO 基类 + */ + void initHandler(BaseRobotCmdDTO baseRobotCmdDTO); + + /** + * 指令发送 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + R senderCmd(T request, InstructCodeEnums enums); + + /** + * 其他操作 + * + * @param request 消息请求体 + * @param response 响应体 + */ + R afterInvoke(T request, R response); +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java index 7ad12e3..b8e561d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/IBaseMsgHandler.java @@ -3,7 +3,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; /** - * 业务消息处理 + * 业务消息处理器 */ public interface IBaseMsgHandler { /** diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java new file mode 100644 index 0000000..e69ee28 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackListCmdHandler.java @@ -0,0 +1,60 @@ +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.TrackListRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("TRACK_LIST") +public class TrackListCmdHandler extends AbstractCmdHandler { + private final IRouteInfoService routeInfoService; + + protected TrackListCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, IRouteInfoService routeInfoService) { + super(optService, service); + this.routeInfoService = routeInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(TrackListRequest 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.TRACK_LIST, messageDTO); + + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TrackListRequest request, ResponseDataDTO response) { + if (response.getData() != null) { + List list = (List) response.getData(); + return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(getRobotInfo(), list)); + } else { + return ResponseDataDTO.success(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java deleted file mode 100644 index e4b2b7e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppNavPauseMsgHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/app_nav_pause") -public class AppNavPauseMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppNavPause(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java deleted file mode 100644 index 59cdaa8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/AppStopNavtrackMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 停障状态实时接收器 - */ -@Slf4j -@Component("/app_stop_navtrack") -public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - - public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); - statusInfoService.saveAppStopNavtrack(robotId,message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java deleted file mode 100644 index b8df20e..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/PoseMessageMsgHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -/** - * 实时位置接收器 - */ -@Slf4j -@Component("/pose_message") -public class PoseMessageMsgHandler implements IBaseMsgHandler { - - private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { - this.robotTrajectoryInfoService = robotTrajectoryInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} - log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); - robotTrajectoryInfoService.savePoseMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java deleted file mode 100644 index 75f63c5..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/ProcessMessageMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 暂停状态实时接收器 - */ -@Slf4j -@Component("/process_message") -public class ProcessMessageMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("建图进度:{}", message); - statusInfoService.saveProcessMessage(robotId, message); - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java deleted file mode 100644 index 5f07bd8..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/impl/SensorStatusMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.casic.missiles.modular.robot.opt.handler.impl; - -import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; -import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 传感器状态 - */ -@Slf4j -@Component("/sensor_status") -public class SensorStatusMsgHandler implements IBaseMsgHandler { - private final IRobotStatusInfoService statusInfoService; - private static Map index = new ConcurrentHashMap<>(); - - static { - index.put("index", 0); - } - - public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { - this.statusInfoService = statusInfoService; - } - - @Override - public void process(String robotId, String topic, MqttMessage message) { - log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); - Integer val = index.get("index") + 1; - index.put("index", val); - - if (val > 20) { - index.put("index", 0); - statusInfoService.saveSensorStatus(robotId,message); - } - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java new file mode 100644 index 0000000..aba1a57 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppNavPauseMsgHandler.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/app_nav_pause") +public class AppNavPauseMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public AppNavPauseMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},暂停状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppNavPause(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java new file mode 100644 index 0000000..9bf1ce4 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppStopNavtrackMsgHandler.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 停障状态实时接收器 + */ +@Slf4j +@Component("/app_stop_navtrack") +public class AppStopNavtrackMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + + public AppStopNavtrackMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},停障状态topic:{},消息内容:{}", robotId, topic, message.toString()); + statusInfoService.saveAppStopNavtrack(robotId,message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java new file mode 100644 index 0000000..b389e01 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +/** + * 实时位置接收器 + */ +@Slf4j +@Component("/pose_message") +public class PoseMessageMsgHandler implements IBaseMsgHandler { + + private final IRobotTrajectoryInfoService robotTrajectoryInfoService; + + public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { + this.robotTrajectoryInfoService = robotTrajectoryInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + // {"msg": {"y": -20.73847741021961, "x": -1.958316040901666, "z": 0.4921659690312511, "theta": -2.494841778370823}} + log.info("主键:{},实时位置topic:{},消息内容:{}", robotId, topic, message.toString()); + robotTrajectoryInfoService.savePoseMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java new file mode 100644 index 0000000..702c091 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/ProcessMessageMsgHandler.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 暂停状态实时接收器 + */ +@Slf4j +@Component("/process_message") +public class ProcessMessageMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public ProcessMessageMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("建图进度:{}", message); + statusInfoService.saveProcessMessage(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java new file mode 100644 index 0000000..da02b69 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/SensorStatusMsgHandler.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.IBaseMsgHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 传感器状态 + */ +@Slf4j +@Component("/sensor_status") +public class SensorStatusMsgHandler implements IBaseMsgHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + static { + index.put("index", 0); + } + + public SensorStatusMsgHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + log.info("主键:{},传感器状态topic:{},消息内容:{}", robotId, topic, message.toString()); + Integer val = index.get("index") + 1; + index.put("index", val); + + if (val > 20) { + index.put("index", 0); + statusInfoService.saveSensorStatus(robotId,message); + } + } +} 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 58d9941..5f77817 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 @@ -1,13 +1,26 @@ package com.casic.missiles.modular.robot.opt.impl; import cn.hutool.core.util.StrUtil; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.model.RobotInfo; 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.IBaseCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +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.BaseRobotCmdDTO; +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 com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import org.eclipse.paho.client.mqttv3.MqttClient; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 机器人操作实现 @@ -15,9 +28,13 @@ @Service public class RobotOptServiceImpl implements IBaseRobotService { private final IRobotRouteOptService robotRouteOptService; + private final IRobotInfoService robotInfoService; + private final ITaskInfoService taskInfoService; - public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService) { + public RobotOptServiceImpl(IRobotRouteOptService robotRouteOptService, @Lazy IRobotInfoService robotInfoService, ITaskInfoService taskInfoService) { this.robotRouteOptService = robotRouteOptService; + this.robotInfoService = robotInfoService; + this.taskInfoService = taskInfoService; } @Override @@ -51,6 +68,49 @@ } } + /** + * 开启循迹任务 + * + * @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); + ResponseDataDTO list = robotRouteOptService.robotCmd(info, InstructCodeEnums.START_TRACK, messageDTO); + + //增加循迹任务记录 + taskInfoService.reloadTask(request, info); + + return list; + } + + @Override + public ResponseDataDTO appCmdVel(AppCmdVelRequest request) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setPriority(request.getPriority()); + RobotInfo info = robotInfoService.getById(request.getRobotId()); + messageDTO.setMsg(request); + ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO); + return responseDataDTO; + } + + @Transactional + @Override + public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums) { + IBaseCmdHandler cmdHandler = SpringContextHolder.getBean(enums.name()); + cmdHandler.initHandler((BaseRobotCmdDTO) request); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, InstructCodeEnums.TRACK_LIST); + result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); + return result; + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java index 00581fe..8f66f8d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotRouteOptServiceImpl.java @@ -6,8 +6,8 @@ import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.MapListRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.TrackListRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; @@ -56,7 +56,7 @@ messageDTO.setMsg(request); RobotMsgResponseDTO> result = MsgUtils.senMsg(mqttClient, InstructCodeEnums.TRACK_LIST, messageDTO); - if (result != null) { + if (result != null&&result.getMsg()!=null) { //机器人路线更新至表中 return ResponseDataDTO.success(routeInfoService.saveListByRouteTargetIds(robotInfo, result.getMsg().getResult())); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java deleted file mode 100644 index f445171..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/MessageRequestDTO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -/** - * 机器人消息请求体 - */ -@Data -public class MessageRequestDTO implements Serializable { - private T msg; - - @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") - private Integer priority; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java new file mode 100644 index 0000000..8cb6f05 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotBaseMsg.java @@ -0,0 +1,7 @@ +package com.casic.missiles.modular.robot.opt.instruct.base; + +/** + * 指令回复定义 + */ +public interface RobotBaseMsg { +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java deleted file mode 100644 index 7b516ba..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/RobotMsgDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.casic.missiles.modular.robot.opt.instruct.base; - -import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -public class RobotMsgDTO { - /** - * 消息编码 - */ - @ApiModelProperty(value = "消息编码", dataType = "String") - @JSONField(name = "error_code") - private String errorCode; - /** - * 错误消息 - */ - @ApiModelProperty(value = "错误消息", dataType = "String") - @JSONField(name = "error_msg") - private String errorMsg; - @ApiModelProperty(value = "返回结果") - private T result; - - /** - * 机器人上传map - */ - @JSONField(name = "map_name") - private String mapName; - - private String x; - private String y; - private String z; - private String theta; - - @ApiModelProperty(value = "当前速度限制设置", dataType = "String") - @JSONField(name = "get_speed") - private Float getSpeed; -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java new file mode 100644 index 0000000..4efaf84 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/MessageRequestDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 机器人消息请求体 + */ +@Data +public class MessageRequestDTO implements Serializable { + private T msg; + + @ApiModelProperty(value = "优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3", dataType = "String") + private Integer priority; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java new file mode 100644 index 0000000..8f7ba24 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/base/dto/RobotMsgDTO.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.robot.opt.instruct.base.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RobotMsgDTO { + /** + * 消息编码 + */ + @ApiModelProperty(value = "消息编码", dataType = "String") + @JSONField(name = "error_code") + private String errorCode; + /** + * 错误消息 + */ + @ApiModelProperty(value = "错误消息", dataType = "String") + @JSONField(name = "error_msg") + private String errorMsg; + @ApiModelProperty(value = "返回结果") + private T result; + + /** + * 机器人上传map + */ + @JSONField(name = "map_name") + private String mapName; + + + @ApiModelProperty(value = "当前速度限制设置", dataType = "String") + @JSONField(name = "get_speed") + private Float getSpeed; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java new file mode 100644 index 0000000..ee41289 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/DeleteTrackRequest.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 删除路线 + */ +@Data +public class DeleteTrackRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "sn编码(可不填 默认机器ID)", dataType = "String") + private String sn; + + @ApiModelProperty(value = "下发状态 1:开启 0:关闭", dataType = "String") + private String track_name; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java index ec55a85..50a3536 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/StartTrackRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,11 +15,11 @@ private Integer action; @ApiModelProperty(value = "等待状态 1:等待 0:不等待", dataType = "String") private Integer wait; - @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "taskpoint_name") - private String taskpointName; + private String track_name; + + @ApiModelProperty(value = "轨迹名称", dataType = "String") + private String taskpoint_name; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java index 21b9112..bbb3c0c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/TrackRecordRequest.java @@ -1,6 +1,5 @@ package com.casic.missiles.modular.robot.opt.instruct.dto; -import com.alibaba.fastjson.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,6 +15,5 @@ private Integer action; @ApiModelProperty(value = "轨迹名称", dataType = "String") - @JSONField(name = "track_name") - private String tracName; + private String track_name; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java index e029be4..ed384a0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IAlarmRecordService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; import java.util.List; @@ -21,4 +22,12 @@ * 告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 根据任务ID查询报警总数 + * + * @param id 任务ID + * @return + */ + Integer selectCountByTaskId(Long id,Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java index fe9af27..e3bb91c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.RobotInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; + import java.util.List; @@ -19,5 +20,12 @@ /** * 机器人信息管理 分页检索 */ - List selectRobotInfoPage(Page page,QueryWrapper query); + List selectRobotInfoPage(Page page, QueryWrapper query); + + /** + * 机器人速度设置 + * + * @param robotInfo 机器信息 + */ + void updateSpeed(RobotInfo robotInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6552038..4cfeccf 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -62,4 +62,15 @@ * @param message 消息体 */ void saveAppStopNavtrack(String robotId, MqttMessage message); + + /** + * 更新车辆路线及任务信息 + * + * @param currRouteId 当前路线信息 + * @param currTaskId 当前任务信息 + */ + void updateCurrTask(String robotId,Long currRouteId, Long currTaskId); + + RobotStatusInfo getStatusByRobotId(String robotId); + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java index f048fa2..ff145c2 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/ITaskInfoService.java @@ -1,9 +1,12 @@ package com.casic.missiles.modular.robot.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.robot.model.TaskInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; + import java.util.List; @@ -19,5 +22,13 @@ /** * 任务管理(其他信息待定) 分页检索 */ - List selectTaskInfoPage(Page page,QueryWrapper query); + List selectTaskInfoPage(Page page, QueryWrapper query); + + /** + * 启动循迹任务后 保存循迹任务信息 + * + * @param request 循迹任务请求体 + * @param info 机器信息 + */ + void reloadTask(StartTrackRequest request, RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java index 71c030f..0463880 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlarmRecordServiceImpl.java @@ -5,9 +5,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.AlarmRecordMapper; import com.casic.missiles.modular.robot.model.AlarmRecord; +import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.vo.AlarmRecordVO; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @@ -21,10 +26,41 @@ */ @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + private final IRobotInfoService robotInfoService; + + public AlarmRecordServiceImpl(@Lazy IRobotInfoService robotInfoService) { + this.robotInfoService = robotInfoService; + } @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { - return this.baseMapper.selectAlarmRecordPage(page, query); + List records = this.baseMapper.selectAlarmRecordPage(page, query); + records.forEach(this::wrapRecord); + return records; + } + + private void wrapRecord(AlarmRecord record) { + //判断是否有检测值 + record.setMonitorValStatus("无"); + if (record.getAlarmThreshold() == null) { + record.setAlarmThreshold(new BigDecimal(0)); + } + if (record.getAlarmThreshold().compareTo(record.getMonitorVal()) <= 0) { + record.setMonitorValStatus("有"); + } + } + + @Override + public Integer selectCountByTaskId(Long id, Long robotId) { + RobotInfo robotInfo = robotInfoService.getById(robotId); + + QueryWrapper query = new QueryWrapper<>(); + query.eq("task_id", id); + if (robotInfo.getAlarmThreshold() != null) { + query.ge("monitor_val", robotInfo.getAlarmThreshold()); + } + Integer num = this.count(query); + return num; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java index 7531811..c405c9b 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotInfoServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -44,6 +45,15 @@ } @Override + public void updateSpeed(RobotInfo robotInfo) { + UpdateWrapper update = new UpdateWrapper<>(); + update.set("conf_v", robotInfo.getConfV()); + update.set("conf_w", robotInfo.getConfW()); + update.eq("id", robotInfo.getId()); + update(update); + } + + @Override public List list(Wrapper queryWrapper) { List robotInfos = super.list(queryWrapper); robotInfos.forEach(this::wrapRobotInfo); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 6692c5d..2afae14 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -10,9 +10,9 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.robot.dao.RobotStatusInfoMapper; import com.casic.missiles.modular.robot.model.RobotStatusInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; @@ -57,20 +57,21 @@ } private void wrapInfo(RobotStatusInfo statusInfo) { - statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getTrackStatus())); + statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getDiscernType())); //暂停状态 statusInfo.setAppNavPauseName(getDictName("appNavPause", statusInfo.getAppNavPause())); //开启状态 statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); - statusInfo.setNavigationStatusName(getDictName("trackStatus", statusInfo.getNavigationStatus())); + String statusName = getDictName("trackStatus", statusInfo.getNavigationStatus()); + statusInfo.setNavigationStatusName(statusName); statusInfo.setDataRecordName(getDictName("trackStatus", statusInfo.getDataRecord())); statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); statusInfo.setTrackName(getDictName("trackStatus", statusInfo.getTrack())); statusInfo.setInsStatusName(getDictName("trackStatus", statusInfo.getInsStatus())); statusInfo.setAppStopNavtrackName(getDictName("trackStatus", statusInfo.getAppStopNavtrack())); - + statusInfo.setTrackRecordName(getDictName("trackStatus", statusInfo.getTrackRecord())); //收到状态 statusInfo.setLidarMsgName(getDictName("lidarMsg", statusInfo.getLidarMsg())); statusInfo.setImuMsgName(getDictName("lidarMsg", statusInfo.getImuMsg())); @@ -110,10 +111,10 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); SensorStatusDTO msg = responseDTO.getMsg(); - query.set("lidar_msg", msg.getLidarMsg()); - query.set("imu_msg", msg.getImuMsg()); - query.set("charge_msg", msg.getChargeMsg()); - query.set("gps_msg", msg.getGpsMsg()); + query.set("lidar_msg", msg.getLidarMsg() == null ? 0 : msg.getLidarMsg()); + query.set("imu_msg", msg.getImuMsg() == null ? 0 : msg.getImuMsg()); + query.set("charge_msg", msg.getChargeMsg() == null ? 0 : msg.getChargeMsg()); + query.set("gps_msg", msg.getGpsMsg() == null ? 0 : msg.getGpsMsg()); query.eq("robot_id", robotId); update(query); } @@ -172,4 +173,20 @@ update(query); } } + + @Override + public void updateCurrTask(String robotId, Long currRouteId, Long currTaskId) { + UpdateWrapper query = new UpdateWrapper<>(); + query.set("curr_route_id", currRouteId); + query.set("curr_task_id", currTaskId); + query.eq("robot_id", robotId); + update(query); + } + + @Override + public RobotStatusInfo getStatusByRobotId(String robotId) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("robot_id", robotId); + return getOne(query); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java index 278415a..4de13dc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotTrajectoryInfoServiceImpl.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.robot.dao.RobotTrajectoryInfoMapper; import com.casic.missiles.modular.robot.model.RobotTrajectoryInfo; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; import org.eclipse.paho.client.mqttv3.MqttMessage; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java index a965283..894fc75 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RouteInfoServiceImpl.java @@ -5,12 +5,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; import com.casic.missiles.modular.robot.dao.RouteInfoMapper; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.model.RouteInfo; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.DeleteTrackRequest; import com.casic.missiles.modular.robot.service.IRouteInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -28,6 +34,11 @@ */ @Service public class RouteInfoServiceImpl extends ServiceImpl implements IRouteInfoService { + private final IBaseRobotService robotService; + + public RouteInfoServiceImpl(@Lazy IBaseRobotService robotService) { + this.robotService = robotService; + } @Override public List selectRouteInfoPage(Page page, QueryWrapper query) { @@ -40,6 +51,23 @@ } @Override + public boolean removeById(Serializable id) { + RouteInfo routeInfo = getById(id); + + RobotInfo info = new RobotInfo(); + info.setId(routeInfo.getRobotId()); + MessageRequestDTO messageDTO = new MessageRequestDTO(); + DeleteTrackRequest deleteTrackRequest = new DeleteTrackRequest(); + deleteTrackRequest.setSn(info.getId() + ""); + deleteTrackRequest.setTrack_name(routeInfo.getTargetId()); + messageDTO.setMsg(deleteTrackRequest); + robotService.getRobotRouteOptService().robotCmd(info, InstructCodeEnums.DELETE_TRACK, messageDTO); + super.removeById(id); + //删除轨迹文件 + return super.removeById(id); + } + + @Override public List saveListByRouteTargetIds(RobotInfo robotInfo, List result) { //检索当前库中机器人信息表 QueryWrapper query = new QueryWrapper<>(); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java index c12a903..c16c954 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/TaskInfoServiceImpl.java @@ -1,15 +1,33 @@ package com.casic.missiles.modular.robot.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import java.util.List; - +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dao.TaskInfoMapper; +import com.casic.missiles.modular.robot.model.RobotInfo; +import com.casic.missiles.modular.robot.model.RobotStatusInfo; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.opt.instruct.dto.StartTrackRequest; +import com.casic.missiles.modular.robot.service.IAlarmRecordService; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import com.casic.missiles.modular.robot.service.IRouteInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; /** @@ -22,10 +40,98 @@ */ @Service public class TaskInfoServiceImpl extends ServiceImpl implements ITaskInfoService { + private final IRouteInfoService routeInfoService; + private final IRobotStatusInfoService statusInfoService; + private final AbstractDictService dictService; + private final IAlarmRecordService recordService; - @Override - public List selectTaskInfoPage(Page page,QueryWrapper query) { - return this.baseMapper.selectTaskInfoPage(page,query); + public TaskInfoServiceImpl(@Lazy IRouteInfoService routeInfoService, IRobotStatusInfoService statusInfoService, AbstractDictService dictService, @Lazy IAlarmRecordService recordService) { + this.routeInfoService = routeInfoService; + this.statusInfoService = statusInfoService; + this.dictService = dictService; + this.recordService = recordService; } -} + @Override + public List selectTaskInfoPage(Page page, QueryWrapper query) { + return this.baseMapper.selectTaskInfoPage(page, query); + } + + @Override + public TaskInfo getById(Serializable id) { + TaskInfo taskInfo = super.getById(id); + wrapTaskInfo(taskInfo); + return taskInfo; + } + + @Override + public > E page(E page, Wrapper queryWrapper) { + E infoIPage = super.page(page, queryWrapper); + infoIPage.getRecords().forEach(this::wrapTaskInfo); + return infoIPage; + } + + private void wrapTaskInfo(TaskInfo taskInfo) { + taskInfo.setDiscernTypeName(dictService.getDictNameByCode(RobotDictConstants.DISCERN_TYPE, taskInfo.getDiscernType() + "")); + taskInfo.setTaskTypeName(dictService.getDictNameByCode(RobotDictConstants.TASK_TYPE, taskInfo.getTaskType() + "")); + //检索当前任务告警数量 + taskInfo.setAlarmNum(recordService.selectCountByTaskId(taskInfo.getId(),taskInfo.getRobotId())); + } + + @Transactional + @Override + public void reloadTask(StartTrackRequest request, RobotInfo info) { + String robotId = info.getId() + ""; + + //开启操作 + if (request.getAction() == 1) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("target_id", request.getTrack_name()); + List routeInfos = routeInfoService.list(query); + + if (CollectionUtil.isEmpty(routeInfos)) { + throw new ServiceException(500, "路线不存在,请及时更新"); + } + RouteInfo routeInfo = routeInfos.get(0); + //No.2 新增任务信息 + TaskInfo taskInfo = new TaskInfo(); + String currDate = DateUtil.format(new Date(), "yyyyMMdd"); + Long maxNo = this.baseMapper.selectMaxNo(currDate + "%"); + if (new Long(0L).equals(maxNo)) { + maxNo = new Long(currDate + String.format("%07d", 1)); + } else { + maxNo = maxNo + 1; + } + taskInfo.setTaskNo(maxNo); + taskInfo.setCreateTime(new Date()); + //任务类型 中子源 + taskInfo.setTaskType(1); + taskInfo.setDiscernType(1); + taskInfo.setTaskName(routeInfo.getRouteName() + "巡线任务"); + //执行状态 未完成 + taskInfo.setTaskStatus(0); + taskInfo.setStartTime(new Date()); + taskInfo.setRouteId(routeInfo.getId()); + taskInfo.setRobotId(info.getId()); + save(taskInfo); + + //No.3 更新 + Long currRouteId = routeInfo.getId(); + Long currTaskId = taskInfo.getId(); + statusInfoService.updateCurrTask(robotId, currRouteId, currTaskId); + } else { + //关闭操作 + RobotStatusInfo statusInfo = statusInfoService.getStatusByRobotId(robotId); + if (statusInfo.getCurrTaskId() != null) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("update_time", new Date()); + updateWrapper.set("task_status", 1); + updateWrapper.set("end_time", new Date()); + updateWrapper.eq("id", statusInfo.getCurrTaskId()); + update(updateWrapper); + } + //清空当前任务 + statusInfoService.updateCurrTask(robotId, null, null); + } + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java index 2f55ae2..d09a438 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/vo/AlarmRecordVO.java @@ -1,12 +1,11 @@ package com.casic.missiles.modular.robot.vo; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.robot.model.AlarmRecord; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.math.BigDecimal; - /** * 告警记录对象VO * @@ -22,21 +21,6 @@ */ @ApiModelProperty(value = "机器人主键", dataType = "Long") private Long robotId; - /** - * 任务类型(1巡检任务) - */ - @ApiModelProperty(value = "任务类型(1巡检任务)", dataType = "Integer") - private Integer taskType; - /** - * 识别类型(1中子源识别) - */ - @ApiModelProperty(value = "识别类型(1中子源识别)", dataType = "Integer") - private Integer discernType; - /** - * 监测值 - */ - @ApiModelProperty(value = "监测值", dataType = "BigDecimal") - private BigDecimal monitorVal; /** * 机器人任务ID @@ -44,19 +28,39 @@ @ApiModelProperty(value = "机器人任务ID", dataType = "Long") private Long taskId; + @ApiModelProperty(value = "路线ID", dataType = "Long") + private Long routeId; + + @ApiModelProperty(value = "有无监测值类型(0 无 1 有)", dataType = "Long") + private Integer valType; + @ApiModelProperty(value = "开始时间(yyyy-MM-dd HH:mm:ss)", dataType = "String") + private String startTime; + @ApiModelProperty(value = "结束时间(yyyy-MM-dd HH:mm:ss)", dataType = "String") + private String endTime; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (robotId != null) { - query.eq("robot_id", robotId); - } - if (taskType != null) { - query.eq("task_type", taskType); - } - if (discernType != null) { - query.eq("discern_type", discernType); + query.eq("a.robot_id", robotId); } if (taskId != null) { - query.eq("task_id", taskId); + query.eq("a.task_id", taskId); + } + if (routeId != null) { + query.eq("d.id", routeId); + } + if (StrUtil.isNotEmpty(startTime)) { + query.ge("a.alarm_time", startTime); + } + if (StrUtil.isNotEmpty((endTime))) { + query.le("a.alarm_time", endTime); + } + if (valType != null) { + if (1 == valType) { + query.eq("(a.monitor_val>=b.alarm_threshold)", true); + } else { + query.eq("(a.monitor_val genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (routeId != null) { - query.eq("route_id", routeId); + if (robotId != null) { + query.eq("robot_id", robotId); } if (taskType != null) { query.eq("task_type", taskType); @@ -43,6 +50,13 @@ if (taskStatus != null) { query.eq("task_status", taskStatus); } + if (StrUtil.isNotEmpty(startTime)) { + query.ge("start_time", startTime); + } + if (StrUtil.isNotEmpty((endTime))) { + query.le("end_time", endTime); + } + query.orderByDesc("create_time"); return query; } } diff --git a/casic-server/src/main/java/com/casic/missiles/mqtt/MsgUtils.java b/casic-server/src/main/java/com/casic/missiles/mqtt/MsgUtils.java index 14502f6..d5a1c13 100644 --- a/casic-server/src/main/java/com/casic/missiles/mqtt/MsgUtils.java +++ b/casic-server/src/main/java/com/casic/missiles/mqtt/MsgUtils.java @@ -5,8 +5,8 @@ import com.alibaba.fastjson.TypeReference; import com.casic.missiles.model.exception.ServiceException; import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; -import com.casic.missiles.modular.robot.opt.instruct.base.MessageRequestDTO; -import com.casic.missiles.modular.robot.opt.instruct.base.RobotMsgResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotMsgResponseDTO; import com.casic.missiles.mqtt.config.MqttClientConnection; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j;