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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java
index b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ 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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java
index b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
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 2534991..d7ef09d 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
@@ -9,6 +9,7 @@
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.ImgDTO;
import com.casic.missiles.modular.robot.dto.PathInitDTO;
import com.casic.missiles.modular.robot.dto.PathPlanDTO;
import com.casic.missiles.modular.robot.model.RouteInfo;
@@ -18,8 +19,10 @@
import com.casic.missiles.modular.robot.vo.TaskInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +39,7 @@
private final ITaskInfoService taskInfoService;
private final IAlgorithmService algorithmService;
+
public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) {
this.taskInfoService = taskInfoService;
this.algorithmService = algorithmService;
@@ -50,6 +54,7 @@
QueryWrapper query = taskInfoVO.genQuery();
return ResponseDataDTO.success(taskInfoService.list(query));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -59,6 +64,7 @@
Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID);
return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -68,15 +74,25 @@
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)));
+ 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)));
}
+
+ @ApiOperation("图片路径保存")
+ @GetMapping(value = "/saveImg")
+ public ResponseDataDTO> saveImg(ImgDTO imgDTO) {
+ Page page = PageFactory.defaultPage();
+ taskInfoService.saveImg(imgDTO);
+ return ResponseDataDTO.success(super.packForBT(page));
+ }
+
/**
* 任务管理(其他信息待定)分页列表
*/
@@ -131,10 +147,9 @@
/**
* 导出巡检报告
*/
- @ApiOperation(value = "导出接口-模板待定TO-DO")
+ @ApiOperation(value = "导出接口")
@GetMapping(value = "/export")
- public ResponseDataDTO export(@RequestBody List ids) {
- taskInfoService.removeByIds(ids);
- return ResponseDataDTO.success();
+ public void export(HttpServletResponse response, @ApiParam("任务ID") String taskId) {
+ taskInfoService.exportDoc(response,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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
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 2534991..d7ef09d 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
@@ -9,6 +9,7 @@
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.ImgDTO;
import com.casic.missiles.modular.robot.dto.PathInitDTO;
import com.casic.missiles.modular.robot.dto.PathPlanDTO;
import com.casic.missiles.modular.robot.model.RouteInfo;
@@ -18,8 +19,10 @@
import com.casic.missiles.modular.robot.vo.TaskInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +39,7 @@
private final ITaskInfoService taskInfoService;
private final IAlgorithmService algorithmService;
+
public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) {
this.taskInfoService = taskInfoService;
this.algorithmService = algorithmService;
@@ -50,6 +54,7 @@
QueryWrapper query = taskInfoVO.genQuery();
return ResponseDataDTO.success(taskInfoService.list(query));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -59,6 +64,7 @@
Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID);
return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -68,15 +74,25 @@
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)));
+ 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)));
}
+
+ @ApiOperation("图片路径保存")
+ @GetMapping(value = "/saveImg")
+ public ResponseDataDTO> saveImg(ImgDTO imgDTO) {
+ Page page = PageFactory.defaultPage();
+ taskInfoService.saveImg(imgDTO);
+ return ResponseDataDTO.success(super.packForBT(page));
+ }
+
/**
* 任务管理(其他信息待定)分页列表
*/
@@ -131,10 +147,9 @@
/**
* 导出巡检报告
*/
- @ApiOperation(value = "导出接口-模板待定TO-DO")
+ @ApiOperation(value = "导出接口")
@GetMapping(value = "/export")
- public ResponseDataDTO export(@RequestBody List ids) {
- taskInfoService.removeByIds(ids);
- return ResponseDataDTO.success();
+ public void export(HttpServletResponse response, @ApiParam("任务ID") String taskId) {
+ taskInfoService.exportDoc(response,taskId);
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
new file mode 100644
index 0000000..c9bd184
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.robot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ImgDTO {
+ @ApiModelProperty(value = "mca图片路径")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径", hidden = true)
+ private String heatImg;
+ @ApiModelProperty(value = "任务ID")
+ private String 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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
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 2534991..d7ef09d 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
@@ -9,6 +9,7 @@
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.ImgDTO;
import com.casic.missiles.modular.robot.dto.PathInitDTO;
import com.casic.missiles.modular.robot.dto.PathPlanDTO;
import com.casic.missiles.modular.robot.model.RouteInfo;
@@ -18,8 +19,10 @@
import com.casic.missiles.modular.robot.vo.TaskInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +39,7 @@
private final ITaskInfoService taskInfoService;
private final IAlgorithmService algorithmService;
+
public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) {
this.taskInfoService = taskInfoService;
this.algorithmService = algorithmService;
@@ -50,6 +54,7 @@
QueryWrapper query = taskInfoVO.genQuery();
return ResponseDataDTO.success(taskInfoService.list(query));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -59,6 +64,7 @@
Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID);
return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -68,15 +74,25 @@
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)));
+ 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)));
}
+
+ @ApiOperation("图片路径保存")
+ @GetMapping(value = "/saveImg")
+ public ResponseDataDTO> saveImg(ImgDTO imgDTO) {
+ Page page = PageFactory.defaultPage();
+ taskInfoService.saveImg(imgDTO);
+ return ResponseDataDTO.success(super.packForBT(page));
+ }
+
/**
* 任务管理(其他信息待定)分页列表
*/
@@ -131,10 +147,9 @@
/**
* 导出巡检报告
*/
- @ApiOperation(value = "导出接口-模板待定TO-DO")
+ @ApiOperation(value = "导出接口")
@GetMapping(value = "/export")
- public ResponseDataDTO export(@RequestBody List ids) {
- taskInfoService.removeByIds(ids);
- return ResponseDataDTO.success();
+ public void export(HttpServletResponse response, @ApiParam("任务ID") String taskId) {
+ taskInfoService.exportDoc(response,taskId);
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
new file mode 100644
index 0000000..c9bd184
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.robot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ImgDTO {
+ @ApiModelProperty(value = "mca图片路径")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径", hidden = true)
+ private String heatImg;
+ @ApiModelProperty(value = "任务ID")
+ private String taskId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
index a29734d..f0413d3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
@@ -2,10 +2,11 @@
import lombok.Data;
+import java.io.Serializable;
import java.util.List;
@Data
-public class PointNextDTO {
+public class PointNextDTO implements Serializable {
private String x;
private String y;
private String z;
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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
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 2534991..d7ef09d 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
@@ -9,6 +9,7 @@
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.ImgDTO;
import com.casic.missiles.modular.robot.dto.PathInitDTO;
import com.casic.missiles.modular.robot.dto.PathPlanDTO;
import com.casic.missiles.modular.robot.model.RouteInfo;
@@ -18,8 +19,10 @@
import com.casic.missiles.modular.robot.vo.TaskInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +39,7 @@
private final ITaskInfoService taskInfoService;
private final IAlgorithmService algorithmService;
+
public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) {
this.taskInfoService = taskInfoService;
this.algorithmService = algorithmService;
@@ -50,6 +54,7 @@
QueryWrapper query = taskInfoVO.genQuery();
return ResponseDataDTO.success(taskInfoService.list(query));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -59,6 +64,7 @@
Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID);
return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -68,15 +74,25 @@
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)));
+ 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)));
}
+
+ @ApiOperation("图片路径保存")
+ @GetMapping(value = "/saveImg")
+ public ResponseDataDTO> saveImg(ImgDTO imgDTO) {
+ Page page = PageFactory.defaultPage();
+ taskInfoService.saveImg(imgDTO);
+ return ResponseDataDTO.success(super.packForBT(page));
+ }
+
/**
* 任务管理(其他信息待定)分页列表
*/
@@ -131,10 +147,9 @@
/**
* 导出巡检报告
*/
- @ApiOperation(value = "导出接口-模板待定TO-DO")
+ @ApiOperation(value = "导出接口")
@GetMapping(value = "/export")
- public ResponseDataDTO export(@RequestBody List ids) {
- taskInfoService.removeByIds(ids);
- return ResponseDataDTO.success();
+ public void export(HttpServletResponse response, @ApiParam("任务ID") String taskId) {
+ taskInfoService.exportDoc(response,taskId);
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
new file mode 100644
index 0000000..c9bd184
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.robot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ImgDTO {
+ @ApiModelProperty(value = "mca图片路径")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径", hidden = true)
+ private String heatImg;
+ @ApiModelProperty(value = "任务ID")
+ private String taskId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
index a29734d..f0413d3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
@@ -2,10 +2,11 @@
import lombok.Data;
+import java.io.Serializable;
import java.util.List;
@Data
-public class PointNextDTO {
+public class PointNextDTO implements Serializable {
private String x;
private String y;
private String z;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
index 976e419..a2dfdcb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
@@ -131,6 +131,10 @@
@TableField(exist = false)
private String discernTypeName;
+ @ApiModelProperty(value = "序号", dataType = "Integer")
+ @TableField(exist = false)
+ private Integer index;
+
@Override
public String toString() {
return "AlarmRecord{"
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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
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 2534991..d7ef09d 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
@@ -9,6 +9,7 @@
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.ImgDTO;
import com.casic.missiles.modular.robot.dto.PathInitDTO;
import com.casic.missiles.modular.robot.dto.PathPlanDTO;
import com.casic.missiles.modular.robot.model.RouteInfo;
@@ -18,8 +19,10 @@
import com.casic.missiles.modular.robot.vo.TaskInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +39,7 @@
private final ITaskInfoService taskInfoService;
private final IAlgorithmService algorithmService;
+
public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) {
this.taskInfoService = taskInfoService;
this.algorithmService = algorithmService;
@@ -50,6 +54,7 @@
QueryWrapper query = taskInfoVO.genQuery();
return ResponseDataDTO.success(taskInfoService.list(query));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -59,6 +64,7 @@
Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID);
return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -68,15 +74,25 @@
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)));
+ 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)));
}
+
+ @ApiOperation("图片路径保存")
+ @GetMapping(value = "/saveImg")
+ public ResponseDataDTO> saveImg(ImgDTO imgDTO) {
+ Page page = PageFactory.defaultPage();
+ taskInfoService.saveImg(imgDTO);
+ return ResponseDataDTO.success(super.packForBT(page));
+ }
+
/**
* 任务管理(其他信息待定)分页列表
*/
@@ -131,10 +147,9 @@
/**
* 导出巡检报告
*/
- @ApiOperation(value = "导出接口-模板待定TO-DO")
+ @ApiOperation(value = "导出接口")
@GetMapping(value = "/export")
- public ResponseDataDTO export(@RequestBody List ids) {
- taskInfoService.removeByIds(ids);
- return ResponseDataDTO.success();
+ public void export(HttpServletResponse response, @ApiParam("任务ID") String taskId) {
+ taskInfoService.exportDoc(response,taskId);
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
new file mode 100644
index 0000000..c9bd184
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.robot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ImgDTO {
+ @ApiModelProperty(value = "mca图片路径")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径", hidden = true)
+ private String heatImg;
+ @ApiModelProperty(value = "任务ID")
+ private String taskId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
index a29734d..f0413d3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
@@ -2,10 +2,11 @@
import lombok.Data;
+import java.io.Serializable;
import java.util.List;
@Data
-public class PointNextDTO {
+public class PointNextDTO implements Serializable {
private String x;
private String y;
private String z;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
index 976e419..a2dfdcb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
@@ -131,6 +131,10 @@
@TableField(exist = false)
private String discernTypeName;
+ @ApiModelProperty(value = "序号", dataType = "Integer")
+ @TableField(exist = false)
+ private Integer index;
+
@Override
public String toString() {
return "AlarmRecord{"
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
index 4f5053c..7da2fa0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
@@ -9,6 +9,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
import java.util.Date;
/**
@@ -127,6 +128,25 @@
@TableField(exist = false)
private TaskHeatMap heatMap;
+ @ApiModelProperty(value = "mca图片路径")
+ @TableField("mca_img")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ @TableField("psd_img")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ @TableField("route_img")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径")
+ @TableField("heat_img")
+ private String heatImg;
+
+ @ApiModelProperty(value = "栅格顶点值", dataType = "Integer")
+ @TableField("grid_size")
+ private BigDecimal gridSize;
+ @ApiModelProperty(value = "栅格数量", dataType = "Integer")
+ @TableField("grid_number")
+ private Integer gridNumber;
@Override
public String toString() {
return "TaskInfo{"
diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java
index b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
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 2534991..d7ef09d 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
@@ -9,6 +9,7 @@
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.ImgDTO;
import com.casic.missiles.modular.robot.dto.PathInitDTO;
import com.casic.missiles.modular.robot.dto.PathPlanDTO;
import com.casic.missiles.modular.robot.model.RouteInfo;
@@ -18,8 +19,10 @@
import com.casic.missiles.modular.robot.vo.TaskInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +39,7 @@
private final ITaskInfoService taskInfoService;
private final IAlgorithmService algorithmService;
+
public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) {
this.taskInfoService = taskInfoService;
this.algorithmService = algorithmService;
@@ -50,6 +54,7 @@
QueryWrapper query = taskInfoVO.genQuery();
return ResponseDataDTO.success(taskInfoService.list(query));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -59,6 +64,7 @@
Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID);
return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -68,15 +74,25 @@
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)));
+ 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)));
}
+
+ @ApiOperation("图片路径保存")
+ @GetMapping(value = "/saveImg")
+ public ResponseDataDTO> saveImg(ImgDTO imgDTO) {
+ Page page = PageFactory.defaultPage();
+ taskInfoService.saveImg(imgDTO);
+ return ResponseDataDTO.success(super.packForBT(page));
+ }
+
/**
* 任务管理(其他信息待定)分页列表
*/
@@ -131,10 +147,9 @@
/**
* 导出巡检报告
*/
- @ApiOperation(value = "导出接口-模板待定TO-DO")
+ @ApiOperation(value = "导出接口")
@GetMapping(value = "/export")
- public ResponseDataDTO export(@RequestBody List ids) {
- taskInfoService.removeByIds(ids);
- return ResponseDataDTO.success();
+ public void export(HttpServletResponse response, @ApiParam("任务ID") String taskId) {
+ taskInfoService.exportDoc(response,taskId);
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
new file mode 100644
index 0000000..c9bd184
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.robot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ImgDTO {
+ @ApiModelProperty(value = "mca图片路径")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径", hidden = true)
+ private String heatImg;
+ @ApiModelProperty(value = "任务ID")
+ private String taskId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
index a29734d..f0413d3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
@@ -2,10 +2,11 @@
import lombok.Data;
+import java.io.Serializable;
import java.util.List;
@Data
-public class PointNextDTO {
+public class PointNextDTO implements Serializable {
private String x;
private String y;
private String z;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
index 976e419..a2dfdcb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
@@ -131,6 +131,10 @@
@TableField(exist = false)
private String discernTypeName;
+ @ApiModelProperty(value = "序号", dataType = "Integer")
+ @TableField(exist = false)
+ private Integer index;
+
@Override
public String toString() {
return "AlarmRecord{"
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
index 4f5053c..7da2fa0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
@@ -9,6 +9,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
import java.util.Date;
/**
@@ -127,6 +128,25 @@
@TableField(exist = false)
private TaskHeatMap heatMap;
+ @ApiModelProperty(value = "mca图片路径")
+ @TableField("mca_img")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ @TableField("psd_img")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ @TableField("route_img")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径")
+ @TableField("heat_img")
+ private String heatImg;
+
+ @ApiModelProperty(value = "栅格顶点值", dataType = "Integer")
+ @TableField("grid_size")
+ private BigDecimal gridSize;
+ @ApiModelProperty(value = "栅格数量", dataType = "Integer")
+ @TableField("grid_number")
+ private Integer gridNumber;
@Override
public String toString() {
return "TaskInfo{"
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
index 5aaf056..5d687e4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
@@ -18,7 +18,13 @@
*
* @see com.casic.missiles.modular.robot.opt.handler.msg.SensorStatusMsgHandler
*/
- ROBOT_STATUS("robot_status" , "机器人状态消息");
+ ROBOT_STATUS("robot_status" , "机器人状态消息"),
+ /**
+ * 热力图数据推送
+ *
+ * @see com.casic.missiles.modular.robot.service.impl.TaskInfoServiceImpl
+ */
+ HEAT_MAP("heat_map" , "机器人状态消息");
/**
* 请求地址
*/
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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
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 2534991..d7ef09d 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
@@ -9,6 +9,7 @@
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.ImgDTO;
import com.casic.missiles.modular.robot.dto.PathInitDTO;
import com.casic.missiles.modular.robot.dto.PathPlanDTO;
import com.casic.missiles.modular.robot.model.RouteInfo;
@@ -18,8 +19,10 @@
import com.casic.missiles.modular.robot.vo.TaskInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +39,7 @@
private final ITaskInfoService taskInfoService;
private final IAlgorithmService algorithmService;
+
public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) {
this.taskInfoService = taskInfoService;
this.algorithmService = algorithmService;
@@ -50,6 +54,7 @@
QueryWrapper query = taskInfoVO.genQuery();
return ResponseDataDTO.success(taskInfoService.list(query));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -59,6 +64,7 @@
Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID);
return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -68,15 +74,25 @@
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)));
+ 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)));
}
+
+ @ApiOperation("图片路径保存")
+ @GetMapping(value = "/saveImg")
+ public ResponseDataDTO> saveImg(ImgDTO imgDTO) {
+ Page page = PageFactory.defaultPage();
+ taskInfoService.saveImg(imgDTO);
+ return ResponseDataDTO.success(super.packForBT(page));
+ }
+
/**
* 任务管理(其他信息待定)分页列表
*/
@@ -131,10 +147,9 @@
/**
* 导出巡检报告
*/
- @ApiOperation(value = "导出接口-模板待定TO-DO")
+ @ApiOperation(value = "导出接口")
@GetMapping(value = "/export")
- public ResponseDataDTO export(@RequestBody List ids) {
- taskInfoService.removeByIds(ids);
- return ResponseDataDTO.success();
+ public void export(HttpServletResponse response, @ApiParam("任务ID") String taskId) {
+ taskInfoService.exportDoc(response,taskId);
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
new file mode 100644
index 0000000..c9bd184
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.robot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ImgDTO {
+ @ApiModelProperty(value = "mca图片路径")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径", hidden = true)
+ private String heatImg;
+ @ApiModelProperty(value = "任务ID")
+ private String taskId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
index a29734d..f0413d3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
@@ -2,10 +2,11 @@
import lombok.Data;
+import java.io.Serializable;
import java.util.List;
@Data
-public class PointNextDTO {
+public class PointNextDTO implements Serializable {
private String x;
private String y;
private String z;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
index 976e419..a2dfdcb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
@@ -131,6 +131,10 @@
@TableField(exist = false)
private String discernTypeName;
+ @ApiModelProperty(value = "序号", dataType = "Integer")
+ @TableField(exist = false)
+ private Integer index;
+
@Override
public String toString() {
return "AlarmRecord{"
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
index 4f5053c..7da2fa0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
@@ -9,6 +9,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
import java.util.Date;
/**
@@ -127,6 +128,25 @@
@TableField(exist = false)
private TaskHeatMap heatMap;
+ @ApiModelProperty(value = "mca图片路径")
+ @TableField("mca_img")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ @TableField("psd_img")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ @TableField("route_img")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径")
+ @TableField("heat_img")
+ private String heatImg;
+
+ @ApiModelProperty(value = "栅格顶点值", dataType = "Integer")
+ @TableField("grid_size")
+ private BigDecimal gridSize;
+ @ApiModelProperty(value = "栅格数量", dataType = "Integer")
+ @TableField("grid_number")
+ private Integer gridNumber;
@Override
public String toString() {
return "TaskInfo{"
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
index 5aaf056..5d687e4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
@@ -18,7 +18,13 @@
*
* @see com.casic.missiles.modular.robot.opt.handler.msg.SensorStatusMsgHandler
*/
- ROBOT_STATUS("robot_status" , "机器人状态消息");
+ ROBOT_STATUS("robot_status" , "机器人状态消息"),
+ /**
+ * 热力图数据推送
+ *
+ * @see com.casic.missiles.modular.robot.service.impl.TaskInfoServiceImpl
+ */
+ HEAT_MAP("heat_map" , "机器人状态消息");
/**
* 请求地址
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java
index 98b58b6..156fbcc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java
@@ -1,5 +1,6 @@
package com.casic.missiles.modular.robot.opt.handler;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.common.WebSocket;
@@ -32,6 +33,15 @@
protected void sendWebSocket(InstructStatusMsgEnums enums, String robotId, MqttMessage message) {
try {
String json = new String(message.getPayload());
+ if (StrUtil.isNotEmpty(json)) {
+ if (json.startsWith("\"")) {
+ json = json.substring(1);
+ }
+ if (json.endsWith("\"")) {
+ json = json.substring(0, json.length() - 1);
+ }
+ json = json.replaceAll("\\\\", "");
+ }
JSONObject jsonObject = JSON.parseObject(json);
if (jsonObject.containsKey("msg")) {
WsMsgBaseDTO wsMsgBaseDTO = new WsMsgBaseDTO();
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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
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 2534991..d7ef09d 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
@@ -9,6 +9,7 @@
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.ImgDTO;
import com.casic.missiles.modular.robot.dto.PathInitDTO;
import com.casic.missiles.modular.robot.dto.PathPlanDTO;
import com.casic.missiles.modular.robot.model.RouteInfo;
@@ -18,8 +19,10 @@
import com.casic.missiles.modular.robot.vo.TaskInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +39,7 @@
private final ITaskInfoService taskInfoService;
private final IAlgorithmService algorithmService;
+
public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) {
this.taskInfoService = taskInfoService;
this.algorithmService = algorithmService;
@@ -50,6 +54,7 @@
QueryWrapper query = taskInfoVO.genQuery();
return ResponseDataDTO.success(taskInfoService.list(query));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -59,6 +64,7 @@
Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID);
return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -68,15 +74,25 @@
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)));
+ 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)));
}
+
+ @ApiOperation("图片路径保存")
+ @GetMapping(value = "/saveImg")
+ public ResponseDataDTO> saveImg(ImgDTO imgDTO) {
+ Page page = PageFactory.defaultPage();
+ taskInfoService.saveImg(imgDTO);
+ return ResponseDataDTO.success(super.packForBT(page));
+ }
+
/**
* 任务管理(其他信息待定)分页列表
*/
@@ -131,10 +147,9 @@
/**
* 导出巡检报告
*/
- @ApiOperation(value = "导出接口-模板待定TO-DO")
+ @ApiOperation(value = "导出接口")
@GetMapping(value = "/export")
- public ResponseDataDTO export(@RequestBody List ids) {
- taskInfoService.removeByIds(ids);
- return ResponseDataDTO.success();
+ public void export(HttpServletResponse response, @ApiParam("任务ID") String taskId) {
+ taskInfoService.exportDoc(response,taskId);
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
new file mode 100644
index 0000000..c9bd184
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.robot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ImgDTO {
+ @ApiModelProperty(value = "mca图片路径")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径", hidden = true)
+ private String heatImg;
+ @ApiModelProperty(value = "任务ID")
+ private String taskId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
index a29734d..f0413d3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
@@ -2,10 +2,11 @@
import lombok.Data;
+import java.io.Serializable;
import java.util.List;
@Data
-public class PointNextDTO {
+public class PointNextDTO implements Serializable {
private String x;
private String y;
private String z;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
index 976e419..a2dfdcb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
@@ -131,6 +131,10 @@
@TableField(exist = false)
private String discernTypeName;
+ @ApiModelProperty(value = "序号", dataType = "Integer")
+ @TableField(exist = false)
+ private Integer index;
+
@Override
public String toString() {
return "AlarmRecord{"
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
index 4f5053c..7da2fa0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
@@ -9,6 +9,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
import java.util.Date;
/**
@@ -127,6 +128,25 @@
@TableField(exist = false)
private TaskHeatMap heatMap;
+ @ApiModelProperty(value = "mca图片路径")
+ @TableField("mca_img")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ @TableField("psd_img")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ @TableField("route_img")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径")
+ @TableField("heat_img")
+ private String heatImg;
+
+ @ApiModelProperty(value = "栅格顶点值", dataType = "Integer")
+ @TableField("grid_size")
+ private BigDecimal gridSize;
+ @ApiModelProperty(value = "栅格数量", dataType = "Integer")
+ @TableField("grid_number")
+ private Integer gridNumber;
@Override
public String toString() {
return "TaskInfo{"
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
index 5aaf056..5d687e4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
@@ -18,7 +18,13 @@
*
* @see com.casic.missiles.modular.robot.opt.handler.msg.SensorStatusMsgHandler
*/
- ROBOT_STATUS("robot_status" , "机器人状态消息");
+ ROBOT_STATUS("robot_status" , "机器人状态消息"),
+ /**
+ * 热力图数据推送
+ *
+ * @see com.casic.missiles.modular.robot.service.impl.TaskInfoServiceImpl
+ */
+ HEAT_MAP("heat_map" , "机器人状态消息");
/**
* 请求地址
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java
index 98b58b6..156fbcc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java
@@ -1,5 +1,6 @@
package com.casic.missiles.modular.robot.opt.handler;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.common.WebSocket;
@@ -32,6 +33,15 @@
protected void sendWebSocket(InstructStatusMsgEnums enums, String robotId, MqttMessage message) {
try {
String json = new String(message.getPayload());
+ if (StrUtil.isNotEmpty(json)) {
+ if (json.startsWith("\"")) {
+ json = json.substring(1);
+ }
+ if (json.endsWith("\"")) {
+ json = json.substring(0, json.length() - 1);
+ }
+ json = json.replaceAll("\\\\", "");
+ }
JSONObject jsonObject = JSON.parseObject(json);
if (jsonObject.containsKey("msg")) {
WsMsgBaseDTO wsMsgBaseDTO = new WsMsgBaseDTO();
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/VoltageResponseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/VoltageResponseMsgHandler.java
index 11735d6..70f02a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/VoltageResponseMsgHandler.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/VoltageResponseMsgHandler.java
@@ -27,6 +27,6 @@
public void process(String robotId, String topic, MqttMessage message) {
log.info("----------------------电压信息反馈:{}", message);
statusInfoService.saveVoltageResponseMessage(robotId, message);
-// sendWebSocket(InstructStatusMsgEnums.PROCESS_MESSAGE, robotId, message);
+ sendWebSocket(InstructStatusMsgEnums.PROCESS_MESSAGE, robotId, message);
}
}
diff --git a/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java b/casic-ptz/src/main/java/com/casic/missiles/modular/ptz/controller/PtzNetController.java
index b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) {
ResponseDataDTO dto = baseRobotService.appCmdVel(request);
return dto;
}
@ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/stopNavStop")
+ @PostMapping(value = "/stopNavStop")
public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -163,7 +163,7 @@
}
@ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度")
- @GetMapping(value = "/getCurrentSpeed")
+ @PostMapping(value = "/getCurrentSpeed")
public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -179,7 +179,7 @@
* @return
*/
@ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误")
- @GetMapping(value = "/{cmdType}")
+ @PostMapping(value = "/{cmdType}")
public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) {
if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) {
return new ResponseDataDTO<>(false, 500, "指令不存在" , 0);
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 2534991..d7ef09d 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
@@ -9,6 +9,7 @@
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.ImgDTO;
import com.casic.missiles.modular.robot.dto.PathInitDTO;
import com.casic.missiles.modular.robot.dto.PathPlanDTO;
import com.casic.missiles.modular.robot.model.RouteInfo;
@@ -18,8 +19,10 @@
import com.casic.missiles.modular.robot.vo.TaskInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
@@ -36,6 +39,7 @@
private final ITaskInfoService taskInfoService;
private final IAlgorithmService algorithmService;
+
public TaskInfoController(ITaskInfoService taskInfoService, IAlgorithmService algorithmService) {
this.taskInfoService = taskInfoService;
this.algorithmService = algorithmService;
@@ -50,6 +54,7 @@
QueryWrapper query = taskInfoVO.genQuery();
return ResponseDataDTO.success(taskInfoService.list(query));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -59,6 +64,7 @@
Long tsk = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID);
return ResponseDataDTO.success(algorithmService.pathPlanningInit(pathInitDTO));
}
+
/**
* 线路信息管理(其他信息待定)列表
*/
@@ -68,15 +74,25 @@
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)));
+ 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)));
}
+
+ @ApiOperation("图片路径保存")
+ @GetMapping(value = "/saveImg")
+ public ResponseDataDTO> saveImg(ImgDTO imgDTO) {
+ Page page = PageFactory.defaultPage();
+ taskInfoService.saveImg(imgDTO);
+ return ResponseDataDTO.success(super.packForBT(page));
+ }
+
/**
* 任务管理(其他信息待定)分页列表
*/
@@ -131,10 +147,9 @@
/**
* 导出巡检报告
*/
- @ApiOperation(value = "导出接口-模板待定TO-DO")
+ @ApiOperation(value = "导出接口")
@GetMapping(value = "/export")
- public ResponseDataDTO export(@RequestBody List ids) {
- taskInfoService.removeByIds(ids);
- return ResponseDataDTO.success();
+ public void export(HttpServletResponse response, @ApiParam("任务ID") String taskId) {
+ taskInfoService.exportDoc(response,taskId);
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
new file mode 100644
index 0000000..c9bd184
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/ImgDTO.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.robot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ImgDTO {
+ @ApiModelProperty(value = "mca图片路径")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径", hidden = true)
+ private String heatImg;
+ @ApiModelProperty(value = "任务ID")
+ private String taskId;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
index a29734d..f0413d3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/PointNextDTO.java
@@ -2,10 +2,11 @@
import lombok.Data;
+import java.io.Serializable;
import java.util.List;
@Data
-public class PointNextDTO {
+public class PointNextDTO implements Serializable {
private String x;
private String y;
private String z;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
index 976e419..a2dfdcb 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/AlarmRecord.java
@@ -131,6 +131,10 @@
@TableField(exist = false)
private String discernTypeName;
+ @ApiModelProperty(value = "序号", dataType = "Integer")
+ @TableField(exist = false)
+ private Integer index;
+
@Override
public String toString() {
return "AlarmRecord{"
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
index 4f5053c..7da2fa0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/model/TaskInfo.java
@@ -9,6 +9,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
import java.util.Date;
/**
@@ -127,6 +128,25 @@
@TableField(exist = false)
private TaskHeatMap heatMap;
+ @ApiModelProperty(value = "mca图片路径")
+ @TableField("mca_img")
+ private String mcaImg;
+ @ApiModelProperty(value = "psd图路径")
+ @TableField("psd_img")
+ private String psdImg;
+ @ApiModelProperty(value = "route图片路径")
+ @TableField("route_img")
+ private String routeImg;
+ @ApiModelProperty(value = "热力分布图路径")
+ @TableField("heat_img")
+ private String heatImg;
+
+ @ApiModelProperty(value = "栅格顶点值", dataType = "Integer")
+ @TableField("grid_size")
+ private BigDecimal gridSize;
+ @ApiModelProperty(value = "栅格数量", dataType = "Integer")
+ @TableField("grid_number")
+ private Integer gridNumber;
@Override
public String toString() {
return "TaskInfo{"
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
index 5aaf056..5d687e4 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructStatusMsgEnums.java
@@ -18,7 +18,13 @@
*
* @see com.casic.missiles.modular.robot.opt.handler.msg.SensorStatusMsgHandler
*/
- ROBOT_STATUS("robot_status" , "机器人状态消息");
+ ROBOT_STATUS("robot_status" , "机器人状态消息"),
+ /**
+ * 热力图数据推送
+ *
+ * @see com.casic.missiles.modular.robot.service.impl.TaskInfoServiceImpl
+ */
+ HEAT_MAP("heat_map" , "机器人状态消息");
/**
* 请求地址
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java
index 98b58b6..156fbcc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/AbstractSocketHandler.java
@@ -1,5 +1,6 @@
package com.casic.missiles.modular.robot.opt.handler;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.common.WebSocket;
@@ -32,6 +33,15 @@
protected void sendWebSocket(InstructStatusMsgEnums enums, String robotId, MqttMessage message) {
try {
String json = new String(message.getPayload());
+ if (StrUtil.isNotEmpty(json)) {
+ if (json.startsWith("\"")) {
+ json = json.substring(1);
+ }
+ if (json.endsWith("\"")) {
+ json = json.substring(0, json.length() - 1);
+ }
+ json = json.replaceAll("\\\\", "");
+ }
JSONObject jsonObject = JSON.parseObject(json);
if (jsonObject.containsKey("msg")) {
WsMsgBaseDTO wsMsgBaseDTO = new WsMsgBaseDTO();
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/VoltageResponseMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/VoltageResponseMsgHandler.java
index 11735d6..70f02a3 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/VoltageResponseMsgHandler.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/VoltageResponseMsgHandler.java
@@ -27,6 +27,6 @@
public void process(String robotId, String topic, MqttMessage message) {
log.info("----------------------电压信息反馈:{}", message);
statusInfoService.saveVoltageResponseMessage(robotId, message);
-// sendWebSocket(InstructStatusMsgEnums.PROCESS_MESSAGE, robotId, message);
+ sendWebSocket(InstructStatusMsgEnums.PROCESS_MESSAGE, robotId, message);
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java
index 2cc7e3f..51192fd 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java
@@ -85,6 +85,8 @@
// 订阅默认消息,消息处理器统一处理
client.subscribe(topics);
}
+ //机器人pcd读取
+ robotInfoService.loadPcd(info);
} catch (Exception e) {
log.error("机器人信息初始化读取失败" , e);
}
@@ -104,7 +106,6 @@
RobotInfo info = robotInfoService.getById(request.getRobotId());
messageDTO.setMsg(request);
ResponseDataDTO responseDataDTO = robotRouteOptService.robotCmd(info, InstructCodeEnums.APP_CMD_VEL, messageDTO);
-
return responseDataDTO;
}
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 b2d7c76..c24e363 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,12 +59,13 @@
return ResponseDataDTO.error("预览失败");
}
}
- @ApiOperation(value = "设备复位",hidden = true)
+
+ @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);
+ Long userId = getUserIdByIp(robotId, deviceIp);
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
@@ -72,6 +73,7 @@
return ResponseData.success();
}
+
/**
* 根据设备ip获取登录id(服务端id)
*
@@ -111,6 +113,9 @@
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
+ if (speed == null) {
+ speed = 1;
+ }
if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
@@ -133,10 +138,14 @@
public Object controlWithSpeedTest(@ApiParam("机器人ID") String robotId, @ApiParam("设备IP") String deviceIp, @ApiParam("控制指令类型(up-上,down-下,left-左,right-右)") String command, @ApiParam("0-开始, 1-结束") Integer isStop, Integer speed) {
logger.info("request controlWithSpeedTest");
Long userId = getUserIdByIp(robotId, deviceIp);
+
if (ObjectUtil.isEmpty(userId) || userId < 0) {
return ResponseData.error("设备注册失败");
}
- if (ihcNetService.controlWithSpeedTest(userId.intValue(), command, isStop, speed)) {
+ if (speed == null) {
+ speed = 1;
+ }
+ if (ihcNetService.controlWithSpeed(userId.intValue(), command, isStop, speed)) {
return ResponseData.success();
} else {
return ResponseData.error("控制失败");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index e1a78b5..546fe74 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -80,6 +80,22 @@
0.5.8
+
+
+ cn.afterturn
+ easypoi-base
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-web
+ 4.4.0
+
+
+ cn.afterturn
+ easypoi-annotation
+ 4.4.0
+
diff --git a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
index 51e63a5..d580b94 100644
--- a/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
+++ b/casic-server/src/main/java/com/casic/missiles/common/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.missiles.common;
+import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -94,6 +95,7 @@
Session session = sessionPool.get(userId);
if (session != null) {
try {
+// session.getAsyncRemote().sendObject(JSON.parseObject(message));
session.getAsyncRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
@@ -101,4 +103,22 @@
}
}
+ /**
+ * 单点消息
+ *
+ * @param userId 用户信息
+ * @param obj 消息体
+ */
+ public void sendOneObjMessage(String userId, Object obj) {
+ log.info("【websocket消息】单点消息:" + obj);
+ Session session = sessionPool.get(userId);
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendObject(obj);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
index 48abc0c..aa51120 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java
@@ -19,11 +19,12 @@
/**
* 当前路线ID
*/
- String KEY_CUR_ROUTE_ID= "CUR_ROUTE_ID_";
+ String KEY_CUR_ROUTE_ID = "CUR_ROUTE_ID_";
/**
- * 当前任务ID
+ * 是否是任务 1 是
*/
+ String KEY_IS_TASK = "CUR_IS_TASK_";
String KEY_CUR_TASK_ID = "CUR_TASK_ID_";
String KEY_CUR_TASK_INIT = "CUR_TASK_INIT_";
@@ -31,4 +32,13 @@
* PSD数据ID
*/
String KEY_PSD_DATA_ID= "PSD_DATA_ID_";
+ /**
+ * 当前栅格点位信息
+ */
+ String KEY_CUR_POINT = "KEY_CUR_POINT_";
+ /**
+ * 当前坐标信息缓存
+ */
+ String KEY_CUR_XY_POINT = "KEY_CUR_XY_POINT_";
+ String KEY_CUR_ESTIMATE_GRID = "KEY_CUR_ESTIMATE_GRID_";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
index f74aee2..c34cd78 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java
@@ -43,27 +43,27 @@
}
@ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/dataRecord")
+ @PostMapping(value = "/dataRecord")
public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD);
}
@ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口")
- @GetMapping(value = "/slam")
+ @PostMapping(value = "/slam")
public ResponseDataDTO slam(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM);
}
@ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/changePcd")
+ @PostMapping(value = "/changePcd")
public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD);
}
@SneakyThrows
@ApiOperation(value = "PCD下载接口")
- @GetMapping(value = "/pcdDownload")
+ @PostMapping(value = "/pcdDownload")
public void pcdDownload(HttpServletResponse response, @ApiParam("机器人ID") String robotId) {
RobotInfo info = robotInfoService.getById(robotId);
PcdDownUtil.downPcd(response, info.getPcdDownload());
@@ -76,18 +76,18 @@
return ResponseDataDTO.success();
}
@ApiOperation(value = "软件急停")
- @GetMapping(value = "/softwareStop")
+ @PostMapping(value = "/softwareStop")
public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP);
}
@ApiOperation(value = "循迹列表读取")
- @GetMapping(value = "/trackList")
+ @PostMapping(value = "/trackList")
public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_LIST);
}
@ApiOperation(value = "路线关键点读取")
- @GetMapping(value = "/taskPointList")
+ @PostMapping(value = "/taskPointList")
public ResponseDataDTO> taskPointList(@RequestBody TrackPointListRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST);
}
@@ -99,7 +99,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/trackRecord")
+ @PostMapping(value = "/trackRecord")
public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD);
}
@@ -111,7 +111,7 @@
* @return
*/
@ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动")
- @GetMapping(value = "/startTrack")
+ @PostMapping(value = "/startTrack")
public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) {
return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK);
}
@@ -123,7 +123,7 @@
* @return
*/
@ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/ctrlNav")
+ @PostMapping(value = "/ctrlNav")
public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) {
if (StrUtil.isEmpty(request.getSn())) {
request.setSn(request.getRobotId() + "");
@@ -136,7 +136,7 @@
}
@ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败")
- @GetMapping(value = "/navPause")
+ @PostMapping(value = "/navPause")
public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) {
MessageRequestDTO messageDTO = new MessageRequestDTO();
RobotInfo info = robotInfoService.getById(request.getRobotId());
@@ -146,14 +146,14 @@
}
@ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败")
- @GetMapping(value = "/appCmdVel")
+ @PostMapping(value = "/appCmdVel")
public ResponseDataDTO