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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } 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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 7f86cba..8067aa8 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 @@ -33,31 +33,9 @@ public class RouteInfoController extends BaseController { private final IRouteInfoService routeInfoService; - private final IAlgorithmService algorithmService; - public RouteInfoController(IRouteInfoService routeInfoService, IAlgorithmService algorithmService) { + public RouteInfoController(IRouteInfoService routeInfoService) { this.routeInfoService = routeInfoService; - this.algorithmService = algorithmService; - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "测试", hidden = true) - @GetMapping(value = "/test") - public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { - Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); - return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "栅格转换", hidden = true) - @GetMapping(value = "/testGrid") - public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); - return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); } /** 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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 7f86cba..8067aa8 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 @@ -33,31 +33,9 @@ public class RouteInfoController extends BaseController { private final IRouteInfoService routeInfoService; - private final IAlgorithmService algorithmService; - public RouteInfoController(IRouteInfoService routeInfoService, IAlgorithmService algorithmService) { + public RouteInfoController(IRouteInfoService routeInfoService) { this.routeInfoService = routeInfoService; - this.algorithmService = algorithmService; - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "测试", hidden = true) - @GetMapping(value = "/test") - public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { - Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); - return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "栅格转换", hidden = true) - @GetMapping(value = "/testGrid") - public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); - return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); } /** 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 eab236d..2534991 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 @@ -3,16 +3,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.constants.RobotDictConstants; +import com.casic.missiles.modular.robot.dto.GridPointDTO; +import com.casic.missiles.modular.robot.dto.PathInitDTO; +import com.casic.missiles.modular.robot.dto.PathPlanDTO; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.service.IAlgorithmService; import com.casic.missiles.modular.robot.service.ITaskInfoService; import com.casic.missiles.modular.robot.vo.TaskInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; /** @@ -27,9 +35,10 @@ public class TaskInfoController extends BaseController { private final ITaskInfoService taskInfoService; - - public TaskInfoController(ITaskInfoService taskInfoService) { + private final IAlgorithmService algorithmService; + public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) { this.taskInfoService = taskInfoService; + this.algorithmService = algorithmService; } /** @@ -41,7 +50,33 @@ QueryWrapper query = taskInfoVO.genQuery(); return ResponseDataDTO.success(taskInfoService.list(query)); } - + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/test") + public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/testPlanning") + public ResponseDataDTO> testPlanning(@RequestBody PathPlanDTO pathPlanDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "栅格转换", hidden = true) + @GetMapping(value = "/testGrid") + public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); + return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); + } /** * 任务管理(其他信息待定)分页列表 */ 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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 7f86cba..8067aa8 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 @@ -33,31 +33,9 @@ public class RouteInfoController extends BaseController { private final IRouteInfoService routeInfoService; - private final IAlgorithmService algorithmService; - public RouteInfoController(IRouteInfoService routeInfoService, IAlgorithmService algorithmService) { + public RouteInfoController(IRouteInfoService routeInfoService) { this.routeInfoService = routeInfoService; - this.algorithmService = algorithmService; - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "测试", hidden = true) - @GetMapping(value = "/test") - public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { - Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); - return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "栅格转换", hidden = true) - @GetMapping(value = "/testGrid") - public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); - return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); } /** 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 eab236d..2534991 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 @@ -3,16 +3,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.constants.RobotDictConstants; +import com.casic.missiles.modular.robot.dto.GridPointDTO; +import com.casic.missiles.modular.robot.dto.PathInitDTO; +import com.casic.missiles.modular.robot.dto.PathPlanDTO; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.service.IAlgorithmService; import com.casic.missiles.modular.robot.service.ITaskInfoService; import com.casic.missiles.modular.robot.vo.TaskInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; /** @@ -27,9 +35,10 @@ public class TaskInfoController extends BaseController { private final ITaskInfoService taskInfoService; - - public TaskInfoController(ITaskInfoService taskInfoService) { + private final IAlgorithmService algorithmService; + public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) { this.taskInfoService = taskInfoService; + this.algorithmService = algorithmService; } /** @@ -41,7 +50,33 @@ QueryWrapper query = taskInfoVO.genQuery(); return ResponseDataDTO.success(taskInfoService.list(query)); } - + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/test") + public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/testPlanning") + public ResponseDataDTO> testPlanning(@RequestBody PathPlanDTO pathPlanDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "栅格转换", hidden = true) + @GetMapping(value = "/testGrid") + public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); + return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); + } /** * 任务管理(其他信息待定)分页列表 */ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java index 4112415..109e95c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java @@ -21,6 +21,7 @@ List list = new ArrayList<>(); list.add(getXMax()); list.add(getYMax()); + list.add(open); list.add(getCount()); list.add(getX()); list.add(getY()); 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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 7f86cba..8067aa8 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 @@ -33,31 +33,9 @@ public class RouteInfoController extends BaseController { private final IRouteInfoService routeInfoService; - private final IAlgorithmService algorithmService; - public RouteInfoController(IRouteInfoService routeInfoService, IAlgorithmService algorithmService) { + public RouteInfoController(IRouteInfoService routeInfoService) { this.routeInfoService = routeInfoService; - this.algorithmService = algorithmService; - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "测试", hidden = true) - @GetMapping(value = "/test") - public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { - Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); - return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "栅格转换", hidden = true) - @GetMapping(value = "/testGrid") - public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); - return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); } /** 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 eab236d..2534991 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 @@ -3,16 +3,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.constants.RobotDictConstants; +import com.casic.missiles.modular.robot.dto.GridPointDTO; +import com.casic.missiles.modular.robot.dto.PathInitDTO; +import com.casic.missiles.modular.robot.dto.PathPlanDTO; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.service.IAlgorithmService; import com.casic.missiles.modular.robot.service.ITaskInfoService; import com.casic.missiles.modular.robot.vo.TaskInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; /** @@ -27,9 +35,10 @@ public class TaskInfoController extends BaseController { private final ITaskInfoService taskInfoService; - - public TaskInfoController(ITaskInfoService taskInfoService) { + private final IAlgorithmService algorithmService; + public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) { this.taskInfoService = taskInfoService; + this.algorithmService = algorithmService; } /** @@ -41,7 +50,33 @@ QueryWrapper query = taskInfoVO.genQuery(); return ResponseDataDTO.success(taskInfoService.list(query)); } - + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/test") + public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/testPlanning") + public ResponseDataDTO> testPlanning(@RequestBody PathPlanDTO pathPlanDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "栅格转换", hidden = true) + @GetMapping(value = "/testGrid") + public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); + return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); + } /** * 任务管理(其他信息待定)分页列表 */ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java index 4112415..109e95c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java @@ -21,6 +21,7 @@ List list = new ArrayList<>(); list.add(getXMax()); list.add(getYMax()); + list.add(open); list.add(getCount()); list.add(getX()); list.add(getY()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 936c9bd..1385b60 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -47,4 +47,10 @@ boolean updateTaskInit(Long robotId,Integer val); RobotInfo getRobotInfo(Long robotId); + + /** + * 当前检测器计数率 + * @return + */ + Integer getNeutronCount(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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 7f86cba..8067aa8 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 @@ -33,31 +33,9 @@ public class RouteInfoController extends BaseController { private final IRouteInfoService routeInfoService; - private final IAlgorithmService algorithmService; - public RouteInfoController(IRouteInfoService routeInfoService, IAlgorithmService algorithmService) { + public RouteInfoController(IRouteInfoService routeInfoService) { this.routeInfoService = routeInfoService; - this.algorithmService = algorithmService; - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "测试", hidden = true) - @GetMapping(value = "/test") - public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { - Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); - return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "栅格转换", hidden = true) - @GetMapping(value = "/testGrid") - public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); - return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); } /** 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 eab236d..2534991 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 @@ -3,16 +3,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.constants.RobotDictConstants; +import com.casic.missiles.modular.robot.dto.GridPointDTO; +import com.casic.missiles.modular.robot.dto.PathInitDTO; +import com.casic.missiles.modular.robot.dto.PathPlanDTO; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.service.IAlgorithmService; import com.casic.missiles.modular.robot.service.ITaskInfoService; import com.casic.missiles.modular.robot.vo.TaskInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; /** @@ -27,9 +35,10 @@ public class TaskInfoController extends BaseController { private final ITaskInfoService taskInfoService; - - public TaskInfoController(ITaskInfoService taskInfoService) { + private final IAlgorithmService algorithmService; + public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) { this.taskInfoService = taskInfoService; + this.algorithmService = algorithmService; } /** @@ -41,7 +50,33 @@ QueryWrapper query = taskInfoVO.genQuery(); return ResponseDataDTO.success(taskInfoService.list(query)); } - + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/test") + public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/testPlanning") + public ResponseDataDTO> testPlanning(@RequestBody PathPlanDTO pathPlanDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "栅格转换", hidden = true) + @GetMapping(value = "/testGrid") + public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); + return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); + } /** * 任务管理(其他信息待定)分页列表 */ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java index 4112415..109e95c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java @@ -21,6 +21,7 @@ List list = new ArrayList<>(); list.add(getXMax()); list.add(getYMax()); + list.add(open); list.add(getCount()); list.add(getX()); list.add(getY()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 936c9bd..1385b60 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -47,4 +47,10 @@ boolean updateTaskInit(Long robotId,Integer val); RobotInfo getRobotInfo(Long robotId); + + /** + * 当前检测器计数率 + * @return + */ + Integer getNeutronCount(Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index ccd3f90..dccb098 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; @@ -43,26 +44,41 @@ List commends = new ArrayList<>(); commends.add(initPath); commends.addAll(initDTO.toArray()); - AlgorithmUtils.invokeJob(commends); + List res= AlgorithmUtils.invokeJob(commends); - File repetitionFile = new File("repetition.txt"); //判断当前任务是否开启 - AlgorithmResponse response = new AlgorithmResponse(); - if (initDTO.getTaskId() != null && repetitionFile.exists()) { - readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId()); + AlgorithmResponse response = getAlgorithmResponse(initDTO,res); + if(response.getTaskHeatMap()!=null){ heatMapService.saveOrUpdateByTaskId(response.getTaskHeatMap()); - } else { - log.info("taskId is empty!"); } - readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId()); - readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId()); return response; } @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { - return null; + //算法路径及入参配置 + List commends = new ArrayList<>(); + commends.add(planPath); + commends.addAll(planDTO.toArray()); + List res = AlgorithmUtils.invokeJob(commends); + AlgorithmResponse response = getAlgorithmResponse(planDTO,res); + // + return response; + } + + private AlgorithmResponse getAlgorithmResponse(PathInitDTO initDTO,List res) { + File repetitionFile = new File("repetition.txt"); + AlgorithmResponse response = new AlgorithmResponse(); + if (initDTO.getTaskId() != null && repetitionFile.exists()) { + readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId(),res); + + } else { + log.info("taskId is empty!"); + } + readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId(),res); + readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId(),res); + return response; } /** @@ -72,7 +88,7 @@ * @param response 结果集 * @param taskId 任务ID */ - public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId) { + public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId,List res) { File file = new File(fileName); if (!file.exists()) { log.info("{} file is empty!", fileName); @@ -89,23 +105,22 @@ response.setTaskHeatMap(taskHeatMap); break; case "xy_train.txt": - String xyTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(xyTrain)) { - xyTrain = StrUtil.removeAll(xyTrain, "\r\n"); - List list = StrUtil.split(xyTrain, " "); - if (list != null && list.size() == 2) { + List xyTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(xyTrains)) { + if (CollectionUtil.isNotEmpty(xyTrains)) { + List list = StrUtil.split(xyTrains.get(xyTrains.size()-1), " "); response.getPointNextDTO().setX(formatBigDecimal(list.get(0))); response.getPointNextDTO().setY(formatBigDecimal(list.get(1))); } } break; case "z_train.txt": - String zTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(zTrain)) { - zTrain = StrUtil.removeAll(zTrain, "\r\n"); - response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); + List zTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(zTrains)) { + String zTrain = zTrains.get(zTrains.size()-1); + response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); } - break; + break; } } 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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 7f86cba..8067aa8 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 @@ -33,31 +33,9 @@ public class RouteInfoController extends BaseController { private final IRouteInfoService routeInfoService; - private final IAlgorithmService algorithmService; - public RouteInfoController(IRouteInfoService routeInfoService, IAlgorithmService algorithmService) { + public RouteInfoController(IRouteInfoService routeInfoService) { this.routeInfoService = routeInfoService; - this.algorithmService = algorithmService; - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "测试", hidden = true) - @GetMapping(value = "/test") - public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { - Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); - return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "栅格转换", hidden = true) - @GetMapping(value = "/testGrid") - public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); - return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); } /** 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 eab236d..2534991 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 @@ -3,16 +3,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.constants.RobotDictConstants; +import com.casic.missiles.modular.robot.dto.GridPointDTO; +import com.casic.missiles.modular.robot.dto.PathInitDTO; +import com.casic.missiles.modular.robot.dto.PathPlanDTO; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.service.IAlgorithmService; import com.casic.missiles.modular.robot.service.ITaskInfoService; import com.casic.missiles.modular.robot.vo.TaskInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; /** @@ -27,9 +35,10 @@ public class TaskInfoController extends BaseController { private final ITaskInfoService taskInfoService; - - public TaskInfoController(ITaskInfoService taskInfoService) { + private final IAlgorithmService algorithmService; + public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) { this.taskInfoService = taskInfoService; + this.algorithmService = algorithmService; } /** @@ -41,7 +50,33 @@ QueryWrapper query = taskInfoVO.genQuery(); return ResponseDataDTO.success(taskInfoService.list(query)); } - + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/test") + public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/testPlanning") + public ResponseDataDTO> testPlanning(@RequestBody PathPlanDTO pathPlanDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "栅格转换", hidden = true) + @GetMapping(value = "/testGrid") + public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); + return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); + } /** * 任务管理(其他信息待定)分页列表 */ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java index 4112415..109e95c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java @@ -21,6 +21,7 @@ List list = new ArrayList<>(); list.add(getXMax()); list.add(getYMax()); + list.add(open); list.add(getCount()); list.add(getX()); list.add(getY()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 936c9bd..1385b60 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -47,4 +47,10 @@ boolean updateTaskInit(Long robotId,Integer val); RobotInfo getRobotInfo(Long robotId); + + /** + * 当前检测器计数率 + * @return + */ + Integer getNeutronCount(Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index ccd3f90..dccb098 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; @@ -43,26 +44,41 @@ List commends = new ArrayList<>(); commends.add(initPath); commends.addAll(initDTO.toArray()); - AlgorithmUtils.invokeJob(commends); + List res= AlgorithmUtils.invokeJob(commends); - File repetitionFile = new File("repetition.txt"); //判断当前任务是否开启 - AlgorithmResponse response = new AlgorithmResponse(); - if (initDTO.getTaskId() != null && repetitionFile.exists()) { - readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId()); + AlgorithmResponse response = getAlgorithmResponse(initDTO,res); + if(response.getTaskHeatMap()!=null){ heatMapService.saveOrUpdateByTaskId(response.getTaskHeatMap()); - } else { - log.info("taskId is empty!"); } - readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId()); - readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId()); return response; } @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { - return null; + //算法路径及入参配置 + List commends = new ArrayList<>(); + commends.add(planPath); + commends.addAll(planDTO.toArray()); + List res = AlgorithmUtils.invokeJob(commends); + AlgorithmResponse response = getAlgorithmResponse(planDTO,res); + // + return response; + } + + private AlgorithmResponse getAlgorithmResponse(PathInitDTO initDTO,List res) { + File repetitionFile = new File("repetition.txt"); + AlgorithmResponse response = new AlgorithmResponse(); + if (initDTO.getTaskId() != null && repetitionFile.exists()) { + readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId(),res); + + } else { + log.info("taskId is empty!"); + } + readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId(),res); + readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId(),res); + return response; } /** @@ -72,7 +88,7 @@ * @param response 结果集 * @param taskId 任务ID */ - public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId) { + public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId,List res) { File file = new File(fileName); if (!file.exists()) { log.info("{} file is empty!", fileName); @@ -89,23 +105,22 @@ response.setTaskHeatMap(taskHeatMap); break; case "xy_train.txt": - String xyTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(xyTrain)) { - xyTrain = StrUtil.removeAll(xyTrain, "\r\n"); - List list = StrUtil.split(xyTrain, " "); - if (list != null && list.size() == 2) { + List xyTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(xyTrains)) { + if (CollectionUtil.isNotEmpty(xyTrains)) { + List list = StrUtil.split(xyTrains.get(xyTrains.size()-1), " "); response.getPointNextDTO().setX(formatBigDecimal(list.get(0))); response.getPointNextDTO().setY(formatBigDecimal(list.get(1))); } } break; case "z_train.txt": - String zTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(zTrain)) { - zTrain = StrUtil.removeAll(zTrain, "\r\n"); - response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); + List zTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(zTrains)) { + String zTrain = zTrains.get(zTrains.size()-1); + response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); } - break; + break; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index f0aef00..ae9e520 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.util.RandomUtil; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.model.RobotInfo; @@ -51,6 +52,11 @@ } @Override + public Integer getNeutronCount(Long robotId) { + return RandomUtil.randomInt(10, 100); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; 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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 7f86cba..8067aa8 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 @@ -33,31 +33,9 @@ public class RouteInfoController extends BaseController { private final IRouteInfoService routeInfoService; - private final IAlgorithmService algorithmService; - public RouteInfoController(IRouteInfoService routeInfoService, IAlgorithmService algorithmService) { + public RouteInfoController(IRouteInfoService routeInfoService) { this.routeInfoService = routeInfoService; - this.algorithmService = algorithmService; - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "测试", hidden = true) - @GetMapping(value = "/test") - public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { - Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); - return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "栅格转换", hidden = true) - @GetMapping(value = "/testGrid") - public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); - return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); } /** 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 eab236d..2534991 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 @@ -3,16 +3,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.constants.RobotDictConstants; +import com.casic.missiles.modular.robot.dto.GridPointDTO; +import com.casic.missiles.modular.robot.dto.PathInitDTO; +import com.casic.missiles.modular.robot.dto.PathPlanDTO; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.service.IAlgorithmService; import com.casic.missiles.modular.robot.service.ITaskInfoService; import com.casic.missiles.modular.robot.vo.TaskInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; /** @@ -27,9 +35,10 @@ public class TaskInfoController extends BaseController { private final ITaskInfoService taskInfoService; - - public TaskInfoController(ITaskInfoService taskInfoService) { + private final IAlgorithmService algorithmService; + public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) { this.taskInfoService = taskInfoService; + this.algorithmService = algorithmService; } /** @@ -41,7 +50,33 @@ QueryWrapper query = taskInfoVO.genQuery(); return ResponseDataDTO.success(taskInfoService.list(query)); } - + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/test") + public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/testPlanning") + public ResponseDataDTO> testPlanning(@RequestBody PathPlanDTO pathPlanDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "栅格转换", hidden = true) + @GetMapping(value = "/testGrid") + public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); + return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); + } /** * 任务管理(其他信息待定)分页列表 */ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java index 4112415..109e95c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java @@ -21,6 +21,7 @@ List list = new ArrayList<>(); list.add(getXMax()); list.add(getYMax()); + list.add(open); list.add(getCount()); list.add(getX()); list.add(getY()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 936c9bd..1385b60 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -47,4 +47,10 @@ boolean updateTaskInit(Long robotId,Integer val); RobotInfo getRobotInfo(Long robotId); + + /** + * 当前检测器计数率 + * @return + */ + Integer getNeutronCount(Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index ccd3f90..dccb098 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; @@ -43,26 +44,41 @@ List commends = new ArrayList<>(); commends.add(initPath); commends.addAll(initDTO.toArray()); - AlgorithmUtils.invokeJob(commends); + List res= AlgorithmUtils.invokeJob(commends); - File repetitionFile = new File("repetition.txt"); //判断当前任务是否开启 - AlgorithmResponse response = new AlgorithmResponse(); - if (initDTO.getTaskId() != null && repetitionFile.exists()) { - readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId()); + AlgorithmResponse response = getAlgorithmResponse(initDTO,res); + if(response.getTaskHeatMap()!=null){ heatMapService.saveOrUpdateByTaskId(response.getTaskHeatMap()); - } else { - log.info("taskId is empty!"); } - readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId()); - readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId()); return response; } @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { - return null; + //算法路径及入参配置 + List commends = new ArrayList<>(); + commends.add(planPath); + commends.addAll(planDTO.toArray()); + List res = AlgorithmUtils.invokeJob(commends); + AlgorithmResponse response = getAlgorithmResponse(planDTO,res); + // + return response; + } + + private AlgorithmResponse getAlgorithmResponse(PathInitDTO initDTO,List res) { + File repetitionFile = new File("repetition.txt"); + AlgorithmResponse response = new AlgorithmResponse(); + if (initDTO.getTaskId() != null && repetitionFile.exists()) { + readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId(),res); + + } else { + log.info("taskId is empty!"); + } + readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId(),res); + readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId(),res); + return response; } /** @@ -72,7 +88,7 @@ * @param response 结果集 * @param taskId 任务ID */ - public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId) { + public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId,List res) { File file = new File(fileName); if (!file.exists()) { log.info("{} file is empty!", fileName); @@ -89,23 +105,22 @@ response.setTaskHeatMap(taskHeatMap); break; case "xy_train.txt": - String xyTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(xyTrain)) { - xyTrain = StrUtil.removeAll(xyTrain, "\r\n"); - List list = StrUtil.split(xyTrain, " "); - if (list != null && list.size() == 2) { + List xyTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(xyTrains)) { + if (CollectionUtil.isNotEmpty(xyTrains)) { + List list = StrUtil.split(xyTrains.get(xyTrains.size()-1), " "); response.getPointNextDTO().setX(formatBigDecimal(list.get(0))); response.getPointNextDTO().setY(formatBigDecimal(list.get(1))); } } break; case "z_train.txt": - String zTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(zTrain)) { - zTrain = StrUtil.removeAll(zTrain, "\r\n"); - response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); + List zTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(zTrains)) { + String zTrain = zTrains.get(zTrains.size()-1); + response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); } - break; + break; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index f0aef00..ae9e520 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.util.RandomUtil; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.model.RobotInfo; @@ -51,6 +52,11 @@ } @Override + public Integer getNeutronCount(Long robotId) { + return RandomUtil.randomInt(10, 100); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; 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 f5fefc2..468fa88 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 @@ -132,10 +132,11 @@ } /** - * 点位上传回调 + * 点位上传,执行循迹算法 * * @param dto 实体 */ + @Transactional @Override public void pointCallBack(PoseMessageResponseDTO dto, String robotId) { //判定任务是否已经完成初始化 @@ -147,7 +148,6 @@ log.error("no config 中子源阈值未配置"); return; } - //TO-DO 中子源计数率读取 Integer initValue = cacheService.readTaskInit(longId); //slam经纬度转栅格 GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize()); @@ -157,7 +157,8 @@ //执行初始化操作 if (cacheService.updateTaskInit(longId, 1)) { PathInitDTO pathInitDTO = createInitDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); - pathInitDTO.setCount("0"); + //中子源计数率读取 + pathInitDTO.setCount(cacheService.getNeutronCount(longId)+""); //执行1次算法 初始化操作 algorithmService.pathPlanningInit(pathInitDTO); } @@ -169,19 +170,19 @@ PathPlanDTO pathPlanDTO = createPlanDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); //TO-DO 障碍物判定信息 pathPlanDTO.setOpen("1,1,1,1,1,1,1,1"); - //计数率 - pathPlanDTO.setCount("0.05"); - log.debug("heat map -- robotId:{},taskId:{}",robotId,taskId); + //中子源计数率读取 + pathPlanDTO.setCount(cacheService.getNeutronCount(longId)+""); + log.debug("heat map -- robotId:{},taskId:{}", robotId, taskId); algorithmService.pathPlanning(pathPlanDTO); //是否触发寻源操作 BigDecimal bigCount = new BigDecimal(pathPlanDTO.getCount()); if (bigCount.compareTo(robotInfo.getAlarmThreshold()) >= 0) { - log.debug("task planning-- robotId:{},taskId:{}",robotId,taskId); + log.debug("task planning-- robotId:{},taskId:{}", robotId, taskId); } if (bigCount.compareTo(robotInfo.getMaxThreshold()) > 0) { - log.debug("task stop-- robotId:{},taskId:{}",robotId,taskId); + log.debug("task stop-- robotId:{},taskId:{}", robotId, taskId); } } } 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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 7f86cba..8067aa8 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 @@ -33,31 +33,9 @@ public class RouteInfoController extends BaseController { private final IRouteInfoService routeInfoService; - private final IAlgorithmService algorithmService; - public RouteInfoController(IRouteInfoService routeInfoService, IAlgorithmService algorithmService) { + public RouteInfoController(IRouteInfoService routeInfoService) { this.routeInfoService = routeInfoService; - this.algorithmService = algorithmService; - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "测试", hidden = true) - @GetMapping(value = "/test") - public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { - Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); - return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "栅格转换", hidden = true) - @GetMapping(value = "/testGrid") - public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); - return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); } /** 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 eab236d..2534991 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 @@ -3,16 +3,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.constants.RobotDictConstants; +import com.casic.missiles.modular.robot.dto.GridPointDTO; +import com.casic.missiles.modular.robot.dto.PathInitDTO; +import com.casic.missiles.modular.robot.dto.PathPlanDTO; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.service.IAlgorithmService; import com.casic.missiles.modular.robot.service.ITaskInfoService; import com.casic.missiles.modular.robot.vo.TaskInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; /** @@ -27,9 +35,10 @@ public class TaskInfoController extends BaseController { private final ITaskInfoService taskInfoService; - - public TaskInfoController(ITaskInfoService taskInfoService) { + private final IAlgorithmService algorithmService; + public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) { this.taskInfoService = taskInfoService; + this.algorithmService = algorithmService; } /** @@ -41,7 +50,33 @@ QueryWrapper query = taskInfoVO.genQuery(); return ResponseDataDTO.success(taskInfoService.list(query)); } - + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/test") + public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/testPlanning") + public ResponseDataDTO> testPlanning(@RequestBody PathPlanDTO pathPlanDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "栅格转换", hidden = true) + @GetMapping(value = "/testGrid") + public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); + return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); + } /** * 任务管理(其他信息待定)分页列表 */ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java index 4112415..109e95c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java @@ -21,6 +21,7 @@ List list = new ArrayList<>(); list.add(getXMax()); list.add(getYMax()); + list.add(open); list.add(getCount()); list.add(getX()); list.add(getY()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 936c9bd..1385b60 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -47,4 +47,10 @@ boolean updateTaskInit(Long robotId,Integer val); RobotInfo getRobotInfo(Long robotId); + + /** + * 当前检测器计数率 + * @return + */ + Integer getNeutronCount(Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index ccd3f90..dccb098 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; @@ -43,26 +44,41 @@ List commends = new ArrayList<>(); commends.add(initPath); commends.addAll(initDTO.toArray()); - AlgorithmUtils.invokeJob(commends); + List res= AlgorithmUtils.invokeJob(commends); - File repetitionFile = new File("repetition.txt"); //判断当前任务是否开启 - AlgorithmResponse response = new AlgorithmResponse(); - if (initDTO.getTaskId() != null && repetitionFile.exists()) { - readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId()); + AlgorithmResponse response = getAlgorithmResponse(initDTO,res); + if(response.getTaskHeatMap()!=null){ heatMapService.saveOrUpdateByTaskId(response.getTaskHeatMap()); - } else { - log.info("taskId is empty!"); } - readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId()); - readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId()); return response; } @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { - return null; + //算法路径及入参配置 + List commends = new ArrayList<>(); + commends.add(planPath); + commends.addAll(planDTO.toArray()); + List res = AlgorithmUtils.invokeJob(commends); + AlgorithmResponse response = getAlgorithmResponse(planDTO,res); + // + return response; + } + + private AlgorithmResponse getAlgorithmResponse(PathInitDTO initDTO,List res) { + File repetitionFile = new File("repetition.txt"); + AlgorithmResponse response = new AlgorithmResponse(); + if (initDTO.getTaskId() != null && repetitionFile.exists()) { + readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId(),res); + + } else { + log.info("taskId is empty!"); + } + readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId(),res); + readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId(),res); + return response; } /** @@ -72,7 +88,7 @@ * @param response 结果集 * @param taskId 任务ID */ - public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId) { + public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId,List res) { File file = new File(fileName); if (!file.exists()) { log.info("{} file is empty!", fileName); @@ -89,23 +105,22 @@ response.setTaskHeatMap(taskHeatMap); break; case "xy_train.txt": - String xyTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(xyTrain)) { - xyTrain = StrUtil.removeAll(xyTrain, "\r\n"); - List list = StrUtil.split(xyTrain, " "); - if (list != null && list.size() == 2) { + List xyTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(xyTrains)) { + if (CollectionUtil.isNotEmpty(xyTrains)) { + List list = StrUtil.split(xyTrains.get(xyTrains.size()-1), " "); response.getPointNextDTO().setX(formatBigDecimal(list.get(0))); response.getPointNextDTO().setY(formatBigDecimal(list.get(1))); } } break; case "z_train.txt": - String zTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(zTrain)) { - zTrain = StrUtil.removeAll(zTrain, "\r\n"); - response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); + List zTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(zTrains)) { + String zTrain = zTrains.get(zTrains.size()-1); + response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); } - break; + break; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index f0aef00..ae9e520 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.util.RandomUtil; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.model.RobotInfo; @@ -51,6 +52,11 @@ } @Override + public Integer getNeutronCount(Long robotId) { + return RandomUtil.randomInt(10, 100); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; 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 f5fefc2..468fa88 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 @@ -132,10 +132,11 @@ } /** - * 点位上传回调 + * 点位上传,执行循迹算法 * * @param dto 实体 */ + @Transactional @Override public void pointCallBack(PoseMessageResponseDTO dto, String robotId) { //判定任务是否已经完成初始化 @@ -147,7 +148,6 @@ log.error("no config 中子源阈值未配置"); return; } - //TO-DO 中子源计数率读取 Integer initValue = cacheService.readTaskInit(longId); //slam经纬度转栅格 GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize()); @@ -157,7 +157,8 @@ //执行初始化操作 if (cacheService.updateTaskInit(longId, 1)) { PathInitDTO pathInitDTO = createInitDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); - pathInitDTO.setCount("0"); + //中子源计数率读取 + pathInitDTO.setCount(cacheService.getNeutronCount(longId)+""); //执行1次算法 初始化操作 algorithmService.pathPlanningInit(pathInitDTO); } @@ -169,19 +170,19 @@ PathPlanDTO pathPlanDTO = createPlanDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); //TO-DO 障碍物判定信息 pathPlanDTO.setOpen("1,1,1,1,1,1,1,1"); - //计数率 - pathPlanDTO.setCount("0.05"); - log.debug("heat map -- robotId:{},taskId:{}",robotId,taskId); + //中子源计数率读取 + pathPlanDTO.setCount(cacheService.getNeutronCount(longId)+""); + log.debug("heat map -- robotId:{},taskId:{}", robotId, taskId); algorithmService.pathPlanning(pathPlanDTO); //是否触发寻源操作 BigDecimal bigCount = new BigDecimal(pathPlanDTO.getCount()); if (bigCount.compareTo(robotInfo.getAlarmThreshold()) >= 0) { - log.debug("task planning-- robotId:{},taskId:{}",robotId,taskId); + log.debug("task planning-- robotId:{},taskId:{}", robotId, taskId); } if (bigCount.compareTo(robotInfo.getMaxThreshold()) > 0) { - log.debug("task stop-- robotId:{},taskId:{}",robotId,taskId); + log.debug("task stop-- robotId:{},taskId:{}", robotId, taskId); } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java index a248484..bff5434 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java @@ -13,8 +13,10 @@ * * @param params */ - public static void invokeJob(List params) { + public static List invokeJob(List params) { + List res = new ArrayList<>(); try { + BufferedReader br = null; BufferedReader brError; String line = null; @@ -24,38 +26,44 @@ while ((line = br.readLine()) != null || (line = brError.readLine()) != null) { //输出exe输出的信息以及错误信息 System.out.println(line); + res.add(line); } } catch (IOException e) { e.printStackTrace(); } + return res; } public static void main(String[] args) { + String path = "D:\\workspace\\server\\keti\\casic-robot-inspection\\casic-web\\src\\main\\resources\\config\\path\\"; //算法初始化调用 - String exePath = "D:\\casic\\dist\\" + "PathPlanning_init.exe"; + String exePath = path + "PathPlanning_init.exe"; ArrayList invocation = new ArrayList(); invocation.add(exePath); - invocation.add(10 + ""); - invocation.add(10 + ""); + invocation.add("100"); + invocation.add("100"); invocation.add("0.05"); - invocation.add("8"); - invocation.add("8"); + invocation.add("5"); + invocation.add("5"); // invokeJob(invocation); - String planning = "D:\\casic\\dist\\" + "PathPlanning.exe"; + String planning = path + "PathPlanning.exe"; ArrayList planInvocation = new ArrayList(); planInvocation.add(planning); - planInvocation.add(5 + ""); - planInvocation.add(5 + ""); + planInvocation.add("100"); + planInvocation.add("100"); planInvocation.add("1,1,0,1,1,1,1,1"); - planInvocation.add("0.05"); + planInvocation.add("20.99"); + //next_X planInvocation.add("10"); - planInvocation.add("10"); - + //next_Y + planInvocation.add("9"); + ProcessBuilder processBuilder = new ProcessBuilder(); invokeJob(planInvocation); } + } \ 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 5804b57..b2d7c76 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 @@ -59,7 +59,19 @@ return ResponseDataDTO.error("预览失败"); } } + @ApiOperation(value = "设备复位",hidden = true) + @RequestMapping("/setPreset") + @ResponseBody + public Object setPreset(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, String command) { + Long userId = getUserIdByIp(robotId,deviceIp); + if (ObjectUtil.isEmpty(userId) || userId < 0) { + return ResponseData.error("设备注册失败"); + } + ihcNetService.setPresetCommand(userId, command); + return ResponseData.success(); + + } /** * 根据设备ip获取登录id(服务端id) * diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java index bbb109d..3f411ee 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/IHCNetService.java @@ -45,4 +45,5 @@ boolean stopDevice(Long userId); + void setPresetCommand(Long userId, String command); } diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java index aad87c5..c3bbbb1 100644 --- a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java +++ b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/service/impl/HCNetServiceImpl.java @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @ConditionalOnBean(HCNetSDK.class) @@ -545,6 +544,13 @@ return false; } + @Override + public void setPresetCommand(Long userId, String command) { + sendPreset(userId,82); +// softReset(userId); +// preset0(userId); + } + /** * 不带速度的设备控制,调用sdk接口 * 通用控制指令与透明通道不能同时使用,因此在开始控制前断开透明通道,在结束控制后开启透明通道 @@ -960,12 +966,12 @@ try { //设置79号复位预置点 - setPreset(serialHandle, 79); + setPreset(serialHandle, 34); Thread.sleep(300); //启动复位操作 - sendPreset(serialHandle, 79); + sendPreset(serialHandle, 34); //自启动预留90秒 - Thread.sleep(90 * 1000); +// Thread.sleep(90 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -979,18 +985,17 @@ boolean flag = false; try { - //先停止巡航 - if (sendStopCommand(serialHandle)) { + + Thread.sleep(300); + //启动复位操作 + if (sendPreset(serialHandle, 65)) { Thread.sleep(300); //启动复位操作 - if (sendPreset(serialHandle, 65)) { - Thread.sleep(300); - //启动复位操作 - flag = sendPreset(serialHandle, 92); - //自启动预留30秒 - Thread.sleep(30 * 1000); - } + flag = sendPreset(serialHandle, 92); + //自启动预留30秒 + Thread.sleep(30 * 1000); } + } catch (InterruptedException e) { e.printStackTrace(); flag = false; 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 7f86cba..8067aa8 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 @@ -33,31 +33,9 @@ public class RouteInfoController extends BaseController { private final IRouteInfoService routeInfoService; - private final IAlgorithmService algorithmService; - public RouteInfoController(IRouteInfoService routeInfoService, IAlgorithmService algorithmService) { + public RouteInfoController(IRouteInfoService routeInfoService) { this.routeInfoService = routeInfoService; - this.algorithmService = algorithmService; - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "测试", hidden = true) - @GetMapping(value = "/test") - public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { - Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); - return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); - } - - /** - * 线路信息管理(其他信息待定)列表 - */ - @ApiOperation(value = "栅格转换", hidden = true) - @GetMapping(value = "/testGrid") - public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { - GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); - return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); } /** 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 eab236d..2534991 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 @@ -3,16 +3,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.constants.RobotDictConstants; +import com.casic.missiles.modular.robot.dto.GridPointDTO; +import com.casic.missiles.modular.robot.dto.PathInitDTO; +import com.casic.missiles.modular.robot.dto.PathPlanDTO; +import com.casic.missiles.modular.robot.model.RouteInfo; import com.casic.missiles.modular.robot.model.TaskInfo; +import com.casic.missiles.modular.robot.service.IAlgorithmService; import com.casic.missiles.modular.robot.service.ITaskInfoService; import com.casic.missiles.modular.robot.vo.TaskInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; /** @@ -27,9 +35,10 @@ public class TaskInfoController extends BaseController { private final ITaskInfoService taskInfoService; - - public TaskInfoController(ITaskInfoService taskInfoService) { + private final IAlgorithmService algorithmService; + public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) { this.taskInfoService = taskInfoService; + this.algorithmService = algorithmService; } /** @@ -41,7 +50,33 @@ QueryWrapper query = taskInfoVO.genQuery(); return ResponseDataDTO.success(taskInfoService.list(query)); } - + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/test") + public ResponseDataDTO> test(@RequestBody PathInitDTO pathInitDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "测试", hidden = true) + @GetMapping(value = "/testPlanning") + public ResponseDataDTO> testPlanning(@RequestBody PathPlanDTO pathPlanDTO) { + Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID); + return ResponseDataDTO.success(algorithmService.pathPlanning(pathPlanDTO)); + } + /** + * 线路信息管理(其他信息待定)列表 + */ + @ApiOperation(value = "栅格转换", hidden = true) + @GetMapping(value = "/testGrid") + public ResponseDataDTO> testGrid(@RequestBody PathInitDTO pathInitDTO) { + GridPointDTO gridPointDTO = algorithmService.convertSlamToGrid(new BigDecimal(pathInitDTO.getX()),new BigDecimal(pathInitDTO.getY()),10,new BigDecimal(4)); + return ResponseDataDTO.success(algorithmService.getGridCenterPoint(gridPointDTO,10,new BigDecimal(4))); + } /** * 任务管理(其他信息待定)分页列表 */ diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java index 4112415..109e95c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PathPlanDTO.java @@ -21,6 +21,7 @@ List list = new ArrayList<>(); list.add(getXMax()); list.add(getYMax()); + list.add(open); list.add(getCount()); list.add(getX()); list.add(getY()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 936c9bd..1385b60 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -47,4 +47,10 @@ boolean updateTaskInit(Long robotId,Integer val); RobotInfo getRobotInfo(Long robotId); + + /** + * 当前检测器计数率 + * @return + */ + Integer getNeutronCount(Long robotId); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java index ccd3f90..dccb098 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/AlgorithmServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; @@ -43,26 +44,41 @@ List commends = new ArrayList<>(); commends.add(initPath); commends.addAll(initDTO.toArray()); - AlgorithmUtils.invokeJob(commends); + List res= AlgorithmUtils.invokeJob(commends); - File repetitionFile = new File("repetition.txt"); //判断当前任务是否开启 - AlgorithmResponse response = new AlgorithmResponse(); - if (initDTO.getTaskId() != null && repetitionFile.exists()) { - readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId()); + AlgorithmResponse response = getAlgorithmResponse(initDTO,res); + if(response.getTaskHeatMap()!=null){ heatMapService.saveOrUpdateByTaskId(response.getTaskHeatMap()); - } else { - log.info("taskId is empty!"); } - readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId()); - readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId()); return response; } @Transactional @Override public AlgorithmResponse pathPlanning(PathPlanDTO planDTO) { - return null; + //算法路径及入参配置 + List commends = new ArrayList<>(); + commends.add(planPath); + commends.addAll(planDTO.toArray()); + List res = AlgorithmUtils.invokeJob(commends); + AlgorithmResponse response = getAlgorithmResponse(planDTO,res); + // + return response; + } + + private AlgorithmResponse getAlgorithmResponse(PathInitDTO initDTO,List res) { + File repetitionFile = new File("repetition.txt"); + AlgorithmResponse response = new AlgorithmResponse(); + if (initDTO.getTaskId() != null && repetitionFile.exists()) { + readAlgorithmResponse("repetition.txt", response, initDTO.getTaskId(),res); + + } else { + log.info("taskId is empty!"); + } + readAlgorithmResponse("xy_train.txt", response, initDTO.getTaskId(),res); + readAlgorithmResponse("z_train.txt", response, initDTO.getTaskId(),res); + return response; } /** @@ -72,7 +88,7 @@ * @param response 结果集 * @param taskId 任务ID */ - public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId) { + public void readAlgorithmResponse(String fileName, AlgorithmResponse response, Long taskId,List res) { File file = new File(fileName); if (!file.exists()) { log.info("{} file is empty!", fileName); @@ -89,23 +105,22 @@ response.setTaskHeatMap(taskHeatMap); break; case "xy_train.txt": - String xyTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(xyTrain)) { - xyTrain = StrUtil.removeAll(xyTrain, "\r\n"); - List list = StrUtil.split(xyTrain, " "); - if (list != null && list.size() == 2) { + List xyTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(xyTrains)) { + if (CollectionUtil.isNotEmpty(xyTrains)) { + List list = StrUtil.split(xyTrains.get(xyTrains.size()-1), " "); response.getPointNextDTO().setX(formatBigDecimal(list.get(0))); response.getPointNextDTO().setY(formatBigDecimal(list.get(1))); } } break; case "z_train.txt": - String zTrain = FileUtil.readString(file, CharsetUtil.CHARSET_UTF_8); - if (StrUtil.isNotEmpty(zTrain)) { - zTrain = StrUtil.removeAll(zTrain, "\r\n"); - response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); + List zTrains = FileUtil.readLines(file, CharsetUtil.CHARSET_UTF_8); + if (CollectionUtil.isNotEmpty(zTrains)) { + String zTrain = zTrains.get(zTrains.size()-1); + response.getPointNextDTO().setZ(formatBigDecimal(zTrain)); } - break; + break; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index f0aef00..ae9e520 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.robot.service.impl; +import cn.hutool.core.util.RandomUtil; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.model.RobotInfo; @@ -51,6 +52,11 @@ } @Override + public Integer getNeutronCount(Long robotId) { + return RandomUtil.randomInt(10, 100); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; 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 f5fefc2..468fa88 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 @@ -132,10 +132,11 @@ } /** - * 点位上传回调 + * 点位上传,执行循迹算法 * * @param dto 实体 */ + @Transactional @Override public void pointCallBack(PoseMessageResponseDTO dto, String robotId) { //判定任务是否已经完成初始化 @@ -147,7 +148,6 @@ log.error("no config 中子源阈值未配置"); return; } - //TO-DO 中子源计数率读取 Integer initValue = cacheService.readTaskInit(longId); //slam经纬度转栅格 GridPointDTO pointDTO = algorithmService.convertSlamToGrid(dto.getX(), dto.getY(), robotInfo.getGridNumber(), robotInfo.getGridSize()); @@ -157,7 +157,8 @@ //执行初始化操作 if (cacheService.updateTaskInit(longId, 1)) { PathInitDTO pathInitDTO = createInitDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); - pathInitDTO.setCount("0"); + //中子源计数率读取 + pathInitDTO.setCount(cacheService.getNeutronCount(longId)+""); //执行1次算法 初始化操作 algorithmService.pathPlanningInit(pathInitDTO); } @@ -169,19 +170,19 @@ PathPlanDTO pathPlanDTO = createPlanDTO(robotInfo.getGridNumber() + "", pointDTO, taskId, robotId); //TO-DO 障碍物判定信息 pathPlanDTO.setOpen("1,1,1,1,1,1,1,1"); - //计数率 - pathPlanDTO.setCount("0.05"); - log.debug("heat map -- robotId:{},taskId:{}",robotId,taskId); + //中子源计数率读取 + pathPlanDTO.setCount(cacheService.getNeutronCount(longId)+""); + log.debug("heat map -- robotId:{},taskId:{}", robotId, taskId); algorithmService.pathPlanning(pathPlanDTO); //是否触发寻源操作 BigDecimal bigCount = new BigDecimal(pathPlanDTO.getCount()); if (bigCount.compareTo(robotInfo.getAlarmThreshold()) >= 0) { - log.debug("task planning-- robotId:{},taskId:{}",robotId,taskId); + log.debug("task planning-- robotId:{},taskId:{}", robotId, taskId); } if (bigCount.compareTo(robotInfo.getMaxThreshold()) > 0) { - log.debug("task stop-- robotId:{},taskId:{}",robotId,taskId); + log.debug("task stop-- robotId:{},taskId:{}", robotId, taskId); } } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java index a248484..bff5434 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/utils/AlgorithmUtils.java @@ -13,8 +13,10 @@ * * @param params */ - public static void invokeJob(List params) { + public static List invokeJob(List params) { + List res = new ArrayList<>(); try { + BufferedReader br = null; BufferedReader brError; String line = null; @@ -24,38 +26,44 @@ while ((line = br.readLine()) != null || (line = brError.readLine()) != null) { //输出exe输出的信息以及错误信息 System.out.println(line); + res.add(line); } } catch (IOException e) { e.printStackTrace(); } + return res; } public static void main(String[] args) { + String path = "D:\\workspace\\server\\keti\\casic-robot-inspection\\casic-web\\src\\main\\resources\\config\\path\\"; //算法初始化调用 - String exePath = "D:\\casic\\dist\\" + "PathPlanning_init.exe"; + String exePath = path + "PathPlanning_init.exe"; ArrayList invocation = new ArrayList(); invocation.add(exePath); - invocation.add(10 + ""); - invocation.add(10 + ""); + invocation.add("100"); + invocation.add("100"); invocation.add("0.05"); - invocation.add("8"); - invocation.add("8"); + invocation.add("5"); + invocation.add("5"); // invokeJob(invocation); - String planning = "D:\\casic\\dist\\" + "PathPlanning.exe"; + String planning = path + "PathPlanning.exe"; ArrayList planInvocation = new ArrayList(); planInvocation.add(planning); - planInvocation.add(5 + ""); - planInvocation.add(5 + ""); + planInvocation.add("100"); + planInvocation.add("100"); planInvocation.add("1,1,0,1,1,1,1,1"); - planInvocation.add("0.05"); + planInvocation.add("20.99"); + //next_X planInvocation.add("10"); - planInvocation.add("10"); - + //next_Y + planInvocation.add("9"); + ProcessBuilder processBuilder = new ProcessBuilder(); invokeJob(planInvocation); } + } \ No newline at end of file diff --git a/casic-web/src/main/resources/config/path/PathPlanning.exe b/casic-web/src/main/resources/config/path/PathPlanning.exe index fa6af4b..6678e0f 100644 --- a/casic-web/src/main/resources/config/path/PathPlanning.exe +++ b/casic-web/src/main/resources/config/path/PathPlanning.exe Binary files differ